数据库编程----MySQL中的约束
文章目录
一、Mysql中的约束
1、非空约束: 不能为空
二、唯一约束:值是唯一的
三、主键约束: 既不为空, 值也是唯一的
四、外键约束: 指用于在两个表之间建立关系,需要指定引用主表的哪一列。
二、建表时添加约束
1、创建一个部门表(用上了非空约束 主键约束 唯一约束 自动增长)
CREATE TABLE departments (
department_id INT PRIMARY KEY AUTO_INCREMENT ,
department_name VARCHAR(30) UNIQUE ,
location_id INT NOT NULL
);
2、创建一个员工表,添加非空约束 主键约束 唯一约束 自动增长 外键
##创建一个员工表,添加非空约束 主键约束 唯一约束 自动增长 外键
CREATE TABLE employees (
employees_id INT PRIMARY KEY AUTO_INCREMENT ,
last_name VARCHAR(30) NOT NULL ,
email VARCHAR(30) NOT NULL UNIQUE ,
dept_id INT ,
CONSTRAINT emp_fk FOREIGN KEY (dept_id) REFERENCES departments(department_id)
);
三、建表后添加约束
#2 . 在创建表后建立约束
#添加主键约束
#alter table 表名 add primary key (列名);
ALTER TABLE employees ADD PRIMARY KEY (employees_id);
#删除主键约束(删除主键前一定先把自动增长删除掉不然会报错)
ALTER TABLE employees DROP PRIMARY KEY ;
#添加唯一约束
#alter table 表名 add constraint 约束名 unique(列名);
ALTER TABLE employees ADD CONSTRAINT emp_uk UNIQUE(last_name)
#删除唯一约束
#alter table 表名 drop key 约束名
ALTER TABLE employees DROP KEY emp_uk
#添加非空约束
#ALTER TABLE 表名 MODIFY 列名 类型 not NULL ;
ALTER TABLE employees MODIFY last_name VARCHAR(30) NOT NULL ;
#删除非空约束
#ALTER TABLE 表名 MODIFY 列名 类型 NULL ;
ALTER TABLE employees MODIFY last_name VARCHAR(30) NULL ;
#添加外键约束
#alter table 表名 add constraint u约束名 foreign key(列名) references 参照表名(列名)
ALTER TABLE employees ADD CONSTRAINT e_fk FOREIGN KEY(dept_id) REFERENCES departments(department_id);
#删除外建约束
ALTER TABLE employees DROP FOREIGN KEY employee_fk
#删除外建索引(索引名和约束名相同)
ALTER TABLE employees DROP INDEX employee_fk
需要注意的是:删除主键约束,首先删除它的自增长,不然删除不了
删除外键的时候,需要将外键索引一起删除 , 因为外键删除了,这个索引也就没有意义了
总结
关于约束,一般在建表的时候就应该将约束加上