表的约束
- 空属性
null
:如果不设置,默认为null
not null
:设置当前字段不为空,再插入数据的时候当前字段不可以为空
create table tt1(
id int not null,
name varchar(20)
);
- 默认值(
default
)
create table tt2(
id int not null,
name varchar(20),
sex char(1) default '男'
);
注:
- 如果在插入数据的时候没有定义设置了默认数据的字段,那么自动填充默认的值,但是set
和enum
不能设置默认。
- 通常配合not null
使用
- 列描述
使用comment,没有实际含义,用来描述字段
create table tt3(
id int not null comment "用户id,不能为空",
name varchar(20) comment "用户姓名,可以为空"
);
如果需要查看comment描述,可以使用show create table tt3;
zerofill
create table tt3(
id int not null zerofill comment "用户id,不能为空",
name varchar(20) comment "用户姓名,可以为空"
);
主键
- 使用
primary key
,主键用来约束该字段里面的数据、不能重复、不能为空、主键所在的列类型为整形。 - 一个表里面最多有一个主键
create table tt4(
id int primary key comment "描述学号,次列为主键",
name varchar(20) not null
);
注:在创建主键的时候可以在创建的时候使用primary key
来创建,也可以在所有字段之后使用primary key(主键段列表)
,当主键段只有一个时候为单主键,当含有多个的时候为复合主键。- 如果在创建表后需要加入主键,可以使用:
alter table 表名 add primary key(主键列表);
- 删除主键:
alter table 表名 drop primary key;
- 使用
自增长
- 使用
auto_increment
:当对应字段没有没有给值得时候系统自动触发(默认1开始),通常搭配主键使用,作为逻辑主键。 - 特点:
- 任何一个字段想要设置成自增长,该字段本身必须是索引
- 自增长字段必须是整数、
- 一张表最多有一个自增长
-
create table tt5(
id int auto_increment primary key,
name varchar(20) comment "描述姓名"
);
- 使用
- 唯一键
- 使用
unique
:在需要使数据不能重复的时候使用唯一键,可以避免只有一个主键的问题。
create table tt6(
id int unique comment "描述学号,不能够重复",
name varchar(20)
);
注:唯一键可以为空,当字段为空的时候null
不作比较。
- 使用
表的增删改
- 增加
insert into table_name[(column[,column...])] values (value [,value...]);
- eg:
- `create table tt6(
id int unique comment “描述学号,不能够重复”,
name varchar(20)
注:
- 当插入的数据和主键的数据冲突的时候可以使用duplicate key
来进行修改。
- insert into tt7 values(2,"xiaoming") on duplicate key update id=4;
替换
replace into 表名(包含字段) values(值列表);
修改
update tbl_name set col_name1=expr1, [, col_name2=expr2 ...] [where conditon]
- eg:
update tt7 set id=5 where id=2;
-
注:如果没有使用where
来过滤那么将会将全部的值进行修改。如果需要制定修改的数据个数,可以使用limit num
,num
为需要修改的个数。
删除
delete from tbl_name [where condition]
- 删除一个表的时候只删除表的数据不改变表的结构
- eg:
delete from tt7 where id=2;
注:如果需要删除整个表,可以使用
truncate
,truncate
是将真个文件直接截断为0。
使用效果和delete
,但是删除的速度要比delete
快。