MYSQL有哪些完整性约束
MYSQL支持的完整性约束
约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。
MYSQL中,常用的几种约束:
约束类型:
|
主键
|
外键
|
唯一
|
非空
|
自增
|
默认值
|
关键字:
|
primary key
|
foreign key
|
unique
|
not null
|
auto_increment
|
default
|
1、主键约束 primary key
主键约束相当于 唯一约束 + 非空约束 的组合,主键约束列不允许重复,也不允许出现空值。
每个表最多只允许一个主键。
创建主键语法:
-- 基本模式
create table 表名(
id int primary key,
name char
);
-- 删除主键约束
alter table temp drop primary key;
-- 添加主键约束
alter table 表名 add primary key(字段名);
-- 修改主键约束
注意:需要将原有的主键删除才能修改主键
alter table 表名 modify 主键字段 主键类型 primary key;
2.外键约束foreign key
外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系
语法:
-- 基本模式
-- 主表
create table 表1(
id int primary key,
name varchar(20)
);
-- 副表
create table 表2(
id int,
name varchar(20),
classes_id int,
foreign key(id) references 表1(id)
);
-- 删除外键约束
alter table 表名 drop foreign key 外键;
3.唯一约束unique
唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。
创建语法:
-- 创建表时设置
create table 表名(
id int not null ,
name varchar(20),
password varchar(10),
unique(name,password)
);
-- 添加唯一约束
alter table 表名 add unique (name, password);
-- 修改唯一约束
alter table 表名 modify name varchar(25) unique;
-- 删除约束
alter table 表名drop index 要删除字段名;
4.非空约束not null
非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。
语法:
-- 创建table表,ID 为非空约束,name 为非空约束 且默认值为abc
create table 表名(
id int not null,
age int not null default 34
);
-- 增加非空约束
alter table 表名
modify 字段 字段数据类型 not null;
-- 取消非空约束
alter table 表名modify 字段名 字段属性 null;
-- 取消非空约束,增加默认值
alter table 表名 modify 字段名 字段属性 default 默认值 null;
5.自增auto_increment
当插入第一条记录时,自增字段没有给定一个具体值,可以写成DEFAULT/NULL,那么以后插入字段的时候,该自增字段就是从1开始,每插入一条记录,该自增字段的值增加1。当插入第一条记录时,给自增字段一个具体值,那么以后插入的记录在此自增字段上的值,就在第一条记录该自增字段的值的基础上每次增加1。
语法:
create table 表名(
id int primary key auto_increment,
.
.
);
学习本是一个不断抄袭、模仿、练习、创新的过程。
虽然,园中已有本人无法超越的同主题博文,为什么还是要写。
对于自己,博文只是总结。在总结的过程发现问题,解决问题。
对于他人,在此过程如果还能附带帮助他人,那就再好不过了。
由于博主能力有限,文中可能存在描述不正确,欢迎指正、补充!
感谢您的阅读。如果文章对您有用,那么请轻轻点个赞,以资鼓励。