mysql中的约束
概念:对表中的数据进行限定,保证数据的正确性、有效性、完整性。
分类:
1. 主键约束:primary key
2. 非空约束:not null
3. 唯一约束:unique
4. 外键约束:foreign key
*非空约束:not null 值不能为null
1.创建表时添加约束
CREATE table stu(
id INT,
name VARCHAR(20) not null-- NAME 为非空
);
2.-- 删除name的非空约束
alter table stu MODIFY NAME VARCHAR(20);
3.-- 创建表完后,添加非空约束
alter table stu MODIFY NAME VARCHAR(20) not NULL;
*唯一约束:unique,值不能重复
-添加唯一约束 UNIQUE
CREATE table stu(
id INT,
phone_number INT UNIQUE-- 添加唯一约束
);
-- 注意mysql中唯一约束限定列的值可以有多个null
-- 删除唯一约束
alter table stu drop INDEX phone_number;
ALTER TABLE `tpd_river_djdh_d` DROP INDEX djdhuniqe
-- 在创建表后,添加唯一约束
alter table stu MODIFY phone_number UNIQUE;
*主键约束:primary key
1.注意:
1.含义:非空且唯一
2.一张表只能有一个字段为主键
3.主键就是表中记录的唯一标识
2.在创建表时添加主键
Create table stu(
Id int primary key,
Name varchar(20)
);
3.-- 删除主键
alter table stu MODIFY PRIMARY KEY;
4.-- 创建完表后,添加主键
ALTER TABLE stu MODIFY id int PRIMARY key;
5.自动增长
1.概念:如果某一列是数值类型,使用 auto_increment 可以来完成值得自动增长
2.在创建表时添加主键,并且完成主键自增长
--Create table su(
Id int primary key auto_increment, --给id添加主键并自动增长
Name varchar(20)
);
-- 删除自动增长
ALTER table su MODIFY id INT;
-- 添加自动增长
ALTER table su MODIFY id INT auto_increment;
*外键约束:foreign key ,让表与表产生关系
在创建表时,可以添加外键,从而保证数据的正确性
1.语法:
Create table 表名(..
外键列
Constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
);
举例:create table department( -- 部门表
id int PRIMARY KEY auto_increment,
dep_name VARCHAR(30),
dep_location VARCHAR(30)
);
CREATE table employee( -- 员工表
id int PRIMARY KEY auto_increment,
name VARCHAR(20),
age INT,
dep_id INT, -- 外键对应主表的主键
CONSTRAINT emp_dept_fk FOREIGN KEY(dep_id) REFERENCES department(id)
);
2.删除外键
ALTER table 表名 drop FOREIGN KEY 外键名称
3.创建表之后,添加外键
ALTER table 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名称) REFERENCES 主表名称(主表列名称);
4.级联
1.-- 添加外键,并且设置级联更新
ALTER table employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY(dep_id) REFERENCES department(id) on UPDATE CASCADE
--删除级联;
ALTER table employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY(dep_id) REFERENCES department(id) on delete CASCADE
2.分类
1.更新:on UPDATE CASCADE
2.删除:on delete CASCADE