Mysql 约束
NOT NULL(非空)
字段不接受NULL值,比如姓名不能为空,id不能为空UNIQUE(唯一)name VARCHAR(20) NOT NULL, #设置姓名非空约束
#修改非空约束为空
ALTER TABLE tb_emp MODIFY sname VARCHAR(20)
#在建表后设置为非空约束
ALTER TABLE tb_emp MODIFY sname VARCHAR(20) NOT NULL;
该字段不允许出现重复的值,NULL可以为多个, 比如手机号码或者邮箱都可以使用唯一约束,主键默认唯一email VARCHAR(100) UNIQUE, #设置邮箱唯一约束
#删除唯一约束
ALTER TABLE tb_emp DROP INDEX email
#在建表后设置为唯一 约束
ALTER TABLE tb_emp MODIFY email VARCHAR(100) UNIQUE
主键约束 = 唯一约束+非空约束
一张表都应该要有一个主键且最多只允许有一个主键,主键值必须唯一,不能有NULLid INT PRIMARY KEY AUTO_INCREMENT, #设置id为主键约束且设置成自动增长
#删除主键约束 ,先要修改之前设置的自动增长
ALTER TABLE tb_emp MODIFY id INT
ALTER TABLE tb_emp DROP PRIMARY KEY
#在建表后设置自动增长,添加成主键
ALTER TABLE tb_emp MODIFY id INT PRIMARY KEY
ALTER TABLE tb_emp MODIFY id INT AUTO_INCREMENT
比如给sex设置check约束, sex varchar(2) check(sex='男' or sex='女'),MySQL可以使用check约束,但check约束对数据验证没有任何作用
比如给性别设置默认值为男
sex VARCHAR(2) DEFAULT '男',
#解除默认约束
ALTER TABLE tb_emp MODIFY sex VARCHAR(20)
#建表后添加默认约束
ALTER TABLE tb_emp MODIFY sex VARCHAR(20) DEFAULT '女'
FOREIGN KEY(外键)
一张表的外键指向另一张表的主键
外键参造主表,被参造的就是主表,用外建约束的就是从表
#主表
CREATE TABLE tb_dept(
id INT PRIMARY KEY AUTO_INCREMENT,#主键唯一
NAME VARCHAR(20),
description VARCHAR(200)
);
#从表
CREATE TABLE tb_emp(
id INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(20) NOT NULL,
sex VARCHAR(2) DEFAULT '男',
address VARCHAR(200),
email VARCHAR(100) UNIQUE,
dept_id INT,
CONSTRAINT FOREIGN KEY tb_emp_fk (dept_id) REFERENCES tb_dept(id)
);将从表的dept_id与主表的主键字段相连如图:
#删除外键约束
ALTER TABLE tb_emp DROP FOREIGN KEY tb_emp_ibfk_1
/*注意:
添加元素必须先要添加主表,再添加从表
删除元素要先删除从表,再删除主表
*/