语法:
not null
使用:
1.在创建表时添加约束
create table stu(
id int,
name varchar(20) not null
);
删除非空约束:
alter table stu modify name varchar(20);
2.创建表之后,添加约束
alter table stu modify name varchar(20) not null;
2. 唯一约束
语法:
unique -- 某一列的值不能重复
使用:
-- 1.创建表时添加唯一约束
create table stu (
id int,
phone_number varchar(20) unique );
-- 2.删除唯一约束
alter table stu modify phone_number varchar(20); -- 错误写法,不会真的删除
alter table stu drop index phone_number; -- 删除phone_number的索引
-- 3.创建表完成后,添加唯一约束
alter table stu modify phone_number varchar(20) unique;
补充:
index索引:
1.一张表的索引可以看成是一本书的目录,添加索引可以提高查找效率。
2.索引就是一张小表,用于存储某列值的地址值
3.一张表中索引太多反而会增加查询工作量,延长时间,降低效率
4.我们可以定义这个索引具有唯一性,所以唯一约束是通过索引index来实现的。
3.主键约束
注意:
1.主键含义:非空 且 唯一
2.一张表只能有一个字段为主键
3.主键就是表中记录的唯一标识
补充:
1.主键是一种特殊的唯一索引
2.主键列不允许空值,而唯一性索引列允许空值
使用:
-- 1.在创建表时添加主键
create table stu(
id int primary key,
name varchar(20));
-- 2.删除主键
alter table stu modify id int;-- 错误写法,不会真的删除主键
alter table stu drop primary key; -- 删除主键,无需指定列,因为一个表只有一个列可以设为主键
-- 3.创建完表后,添加主键
alter table stu modify id int primary key;
3.1 主键约束–自增长
概念:如果某一列是数值类型,使用auto_increment 可以完成值的自动增长。
使用:
-- 1.创建表时,设置主键自增长,默认从1开始自增长
create table stu(
id int primary key auto_increment,
name varchar(20)
);
-- 2.创建表时,设置主键自增长,并指定自增长起始值为6
create table stu(
id int primary key auto_increment,
name varchar(20)
)auto_increment=6;
-- 3.删除自增长,不会删除主键
alter table stu modify id int;
-- 4.创建表完成后,添加自增长
ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;-- 注意:此次不能再指定主键,因为主键已经存在
-- 5.创建表完成后,设置主键自增长的初始值--前提是表中已经设定过主键自增长
ALTER TABLE stu AUTO_INCREMENT=100;
4. 外键约束
删除外键:
alter table emp drop foreign key emp_dept_fk;-- 更改表,删除外键emp_dept_fk;
创建表之后,添加外键:
alter table emp add constraint emp_dept_fk foreign key (dept_id) references dept(id);
4.1 外键约束–级联操作
级联修改:
-- 先删除外键
alter table emp drop foreign key emp_dept_fk;-- 更改表,删除外键emp_dept_fk
-- 重新添加外键,并设置级联修改--末尾追加 on update cascade
alter table emp add constraint emp_dept_fk foreign key (dept_id) references dept(id) on update cascade;
级联删除:
-- 先删除外键
alter table emp drop foreign key emp_dept_fk;-- 更改表,删除外键emp_dept_fk
-- 重新添加外键,并设置级联修改和级联删除
alter table emp add constraint emp_dept_fk foreign key (dept_id) references dept(id)
on update cascade on delete cascade;