MySQL中的约束
约束概述
数据库约束是对表中的数据进行进一步的限制,保证数据的正确性、有效性和完整性
主键约束(Primary Key) PK
主键约束是使用最频繁的约束。在设计数据表时,一般情况下,都会要求表中设置一个主键。 主键是表的一个特殊字段,该字段能唯一标识该表中的每条信息。例如,学生信息表中的学号是唯一的。
外键约束(Foreign Key) FK
外键约束经常和主键约束一起使用,用来确保数据的一致性。
唯一性约束(Unique)
唯一约束与主键约束有一个相似的地方,就是它们都能够确保列的唯一性。与主键约束不同的是,唯一约束在一个表中可以有多个,并且设置唯一约束的列是允许有空值的。
非空约束(Not Null)
非空约束用来约束表中的字段不能为空
检查约束(Check)
检查约束也叫用户自定义约束,是用来检查数据表中,字段值是否有效的一个手段,但目前MySQL 数据库不支持检查约束。
添加主键约束(Primary Key)
单一主键
使用一个列作为主键列,当该列的值有重复时,则违反唯一约束。
联合主键
使用多个列作为主键列,当多个列的值都相同时,则违反唯一约束。
修改表添加主键约束
使用DDL语句添加主键约束
ALTER TABLE 表名 ADD PRIMARY KEY(列名)
示例: 将 emp 表中的 employee_id 修改为主键。 alter table emp add primary key ( employee_id ) ;
主键自增长
MySQL 中的自动增长类型要求: 一个表中只能有一个列为自动增长。 自动增长的列的类型必须是整数类型。 自动增长只能添加到具备主键约束与唯一性约束的列上。 删除主键约束或唯一性约束,如果该列拥有自动增长能力,则需要先去掉自动增长然 后在删除约束
alter table 表名 modify 主键 类型 auto_increment;
示例: 将 emp 表中的 employee_id 主键修改为自增。 alter table emp modify employee_id int auto_increment ;
使用Navicat添加主键约束
删除主键
使用DDL语句删除主键
ALTER TABLE 表名 DROP PRIMARY KEY;
注意: 删除主键时,如果主键列具备自动增长能力,需要先去掉自动增长,然后在删除主键。
示例: ALTER TABLE 表名 DROP PRIMARY KEY ; 删除 emp 表中的 employee_id 主键约束。 去掉自动增长: alter table emp modify employee_id int;
删除主键:
alter table emp drop primary key;
使用Navicat删除主键
添加外键约束(Foreign Key)
修改表添加外键约束
使用DDL语句添加外键约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY ( 列 名 ) REFERENCES 参照的表名 ( 参照的列名 ) ;
示例一: 创建 departments 表包含 department_id 、 department_name , location_id 。
create table departments ( department_id int,department_namevarchar ( 30 ) ,location_id int ) ;
示例二: 修改departments 表,向 department_id 列添加主键约束与自动递增。
alter table departments add primary key ( department_id ) ; alter table departments modify department_id int auto_increment ;
使用Navicat添加外键约束
删除外键约束
使用DDL语句删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 约束名;
示例: 删除 dept_id 的外键约束 alter table emp drop foreign key emp_fk;
使用Navicat删除外键约束
添加唯一性约束(Unique)
修改表添加唯一性约束
使用DDL语句加唯一性约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名);
示例: 向 emp 表中的 name 添加唯一约束。 alter table emp add constraint emp_uk unique ( name ) ;
使用Navicat添加唯一性约束
删除唯一性约束
使用DDL语句删除唯一性约束。
ALTER TABLE 表名 DROP KEY 约束名
示例: 删除 name 的唯一约束。alter table emp drop key emp_uk;
Navicat删除唯一性约束
非空约束(Not Null)
修改表添加非空约束
用DDL语句添加非空约束
ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL;
示例: 向 emp 表中的 salary 添加非空约束。alter table emp modify salary float(8,2) not NULL;
使用Navicat添加非空约束
删除非空约束
用DDL语句删除非空约束
ALTER TABLE 表名 MODIFY 列名 类型 NULL ;
示例: 删除emp 表中 salary 的非空约束。 alter table emp modify salary float ( 8 , 2 ) NULL ;
使用Navicat删除非空约束
创建表时添加约束
示例: 创建 depts 表包含 department_id 该列为主键且自动增长, department_name 列不 允许重复,location_id 列不允含有空值。create table depts ( department_id int primary key auto_increment ,department_name varchar ( 30 ) unique ,location_id int not null ) ;
只讲干货
#有什么错误的地方大家多多担待,欢迎大家留下意见共同努力。
#需要什么技术的内容大家也可以积极留言。
#有升本的伙伴也可留言,后序也可更新升本内容C 和数据结构。
#有需要的伙伴或有什么问题直接联留下wx或联系邮箱2821835676qq.com