mysql语句

发布时间: 2023-11-21 10:48 阅读: 文章来源:1MUMB141PS

概念:所谓约束就是作用在表中字段上的规则,用于限制存储在表中的数据。

作用:就是来保证数据库当中数据的正确性、有效性和完整性。

(后面的学习会验证这些) 在MySQL数据库当中,提供了以下5种约束:

约束 描述 关键字

非空约束 限制该字段值不能为null not null

唯一约束 保证字段的所有数据都是唯一、不重复的 unique

主键约束 主键是一行数据的唯一标识,要求非空且唯一 primary key

默认约束 保存数据时,如果未指定该字段值,则采用默认值 default

外键约束 让两张表的数据建立连接,保证数据的一致性和完整性 foreign key

create table tb_user (

id int primary key comment ‘ID,唯一标识‘,

username varchar(20) not null unique comment ‘用户名‘,

name varchar(10) not null comment ‘姓名‘,

age int comment ‘年龄‘,

gender char(1) default ‘男‘ comment ‘性别‘ comment ‘用户表‘;

)

主键自增:auto_increment 每次插入新的行记录时,数据库自动生成id字段(主键)下的值 具有auto_increment的数据列是一个正数序列开始增长(从1开始自增)

create table tb_user (

id int primary key auto_increment comment ‘ID,唯一标识‘, #主键自动增长

username varchar(20) not null unique comment ‘用户名‘,

name varchar(10) not null comment ‘姓名‘,

age int comment ‘年龄‘,

gender char(1) default ‘男‘ comment ‘性别‘

) comment ‘用户表‘;

数据类型

char 与 varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char的性能会更高些。

实例如下:

create table emp (

id int unsigned primary key auto_increment comment ‘ID‘,

username varchar(20) not null unique comment ‘用户名‘,

password varchar(32) default ‘123456‘ comment ‘密码‘,

name varchar(10) not null comment ‘姓名‘,

gender tinyint unsigned not null comment ‘性别, 说明: 1 男, 2 女‘, image varchar(300) comment ‘图像‘,

job tinyint unsigned comment ‘职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管‘,

entrydate date comment ‘入职时间‘,

create_time datetime not null comment ‘创建时间‘,

update_time datetime not null comment ‘修改时间‘

) comment ‘员工表‘;

查看表结构

desc 表名 ;#可以查看指定表的字段、字段的类型、是否可以为NULL、是否存在默认值等信息

查询指定表的建表语句

show create table 表名 ;

添加字段

alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];

案例: 为tb_emp表添加字段qq,字段类型为 varchar(11)

alter table tb_emp add qq varchar(11) comment ‘QQ号码‘;

修改数据类型

alter table 表名 modify 字段名 新数据类型(长度);

alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];

案例:修改qq字段的字段类型,将其长度由11修改为13

alter table tb_emp modify qq varchar(13) comment ‘QQ号码‘;

案例:修改qq字段名为 qq_num,字段类型varchar(13)

alter table tb_emp change qq qq_num varchar(13) comment ‘QQ号码‘;

删除字段

alter table 表名 drop 字段名;

案例:删除tb_emp表中的qq_num字段

alter table tb_emp drop qq_num;

修改表名

rename table 表名 to 新表名;

案例:将当前的tb_emp表的表名修改为emp

rename table tb_emp to emp;

删除

关于表结构的删除操作,工作中一般都是直接基于图形化界面操作。 删除表语法:

drop table [ if exists ] 表名;

if exists :只有表名存在时才会删除该表,表名不存在,则不执行删除操作(如果不加该参数项,删除一张不存在的表,执行将会报错)。

案例:如果tb_emp表存在,则删除tb_emp表

drop table if exists tb_emp; -- 在删除表时,表中的全部数据也会被删除。

增加(insert)

insert语法:

向指定字段添加数据

insert into 表名 (字段名1, 字段名2) values (值1, 值2);

全部字段添加数据

insert into 表名 values (值1, 值2, ...);

批量添加数据(指定字段)

insert into 表名 (字段名1, 字段名2) values (值1, 值2), (值1, 值2);

批量添加数据(全部字段)

insert into 表名 values (值1, 值2, ...), (值1, 值2, ...);

案例1:向tb_emp表的username、name、gender字段插入数据

-- 因为设计表时create_time, update_time两个字段不能为NULL,所以也做为要插入的字段

insert into tb_emp(username, name, gender, create_time, update_time)values (‘wuji‘, ‘张无忌‘, 1, now(), now());

案例2:向tb_emp表的所有字段插入数据

insert into tb_emp(id, username, password, name, gender, image, job,entrydate, create_time, update_time)

values (null, ‘zhirou‘, ‘123‘, ‘周芷若‘, 2, ‘1.jpg‘, 1, ‘2010-01-01‘, now(), now());

案例3:批量向tb_emp表的username、name、gender字段插入数据

insert into tb_emp(username, name, gender, create_time, update_time)values (‘weifuwang‘, ‘韦一笑‘, 1, now(), now()),

(‘fengzi‘, ‘张三疯‘, 1, now(), now());

insert操作的注意事项:

1.插入数据时,指定的字段顺序需要与值的顺序是一一对应的。

2. 字符串和日期型数据应该包含在引号中。

3. 插入的数据大小,应该在字段的规定范围内。

修改(update)

update语法:

update 表名 set 字段名1 = 值1 , 字段名2 = 值2 , .... [where 条件] ;

案例1:将tb_emp表中id为1的员工,姓名name字段更新为‘张三‘

update tb_emp set name=‘张三‘,update_time=now() where id=1;

案例2:将tb_emp表的所有员工入职日期更新为‘2010-01-01‘

update tb_emp set entrydate=‘2010-01-01‘,update_time=now();

注意事项:

1. 修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。

2. 在修改数据时,一般需要同时修改公共字段update_time,将其修改为当前操作时间。

删除(delete)

delete语法:

1delete from 表名 [where 条件] ;

案例1:删除tb_emp表中id为1的员工

delete from tb_emp where id = 1;

案例2:删除tb_emp表中所有员工

delete from tb_emp;

注意事项:

• delete 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。

delete 语句不能删除某一个字段的值(可以使用update,将该字段值置为NULL即可。

当进行删除全部数据操作时,会提示询问是否确认删除所有数据,直接点击Execute即可。

•••展开全文