数据库编程----MySQL中的约束

数据库编程----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

需要注意的是:删除主键约束,首先删除它的自增长,不然删除不了

						删除外键的时候,需要将外键索引一起删除 , 因为外键删除了,这个索引也就没有意义了

总结

关于约束,一般在建表的时候就应该将约束加上

Guess you like

Origin blog.csdn.net/qq_48788523/article/details/121594838