mysql数据库表的约束

一、表中约束的使用

数据的完整性:指的是存储在数据库中的数据要保持正确和可靠性
实体完整性约束,实现目标:

  1. 保证每个记录的唯一性
  2. 主属性字段不能为空,不能有相同的值

1. 主键约束(primary key)

特征:唯一、不重复、不为空,针对列进行设置
注意事项:一个表中有且仅只有一个主键约束

1.1 在创建时创建主键约束

格式一:

create table 表明(
	列名1 数据类型 primary key [auto_increment],  -- 设置为主键且自增
	列名2 数据类型,
	列名3 数据类型,
	......
);

格式二:

create table 表明(
	列名1 数据类型,
	列名2 数据类型,
	列名3 数据类型,
	......
	constraint 主键约束名 primary key (列名)
);

主键约束名一般用PK_列名表示
格式三:

create table 表明(
	列名1 数据类型,
	列名2 数据类型,
	列名3 数据类型,
	......
	primary key (列名)
);

1.2 针对已经存在的表来添加主键约束

格式一:

alter table 表名 add constraint 主键约束名 primary key(列名);

格式二:

alter table 表名 add primary key(列名);

格式三:

alter table 表名 modify 列名 数据类型 primary key;

1.3 删除主键约束

格式:

alter table 表名 drop primary key;

二、联合主键

定义:把表中两个列看成一个大的整体,对这个整体进行主键约束设定

1. 创建表的同时创建联合主键

格式:

create table 表明(
	列名1 数据类型,
	列名2 数据类型,
	列名3 数据类型,
	......
	[constraint 主键约束名] primary key (列名1,列名2)
);

2. 针对已经存在的表添加联合主键

格式:

alter table 表名 add [constraint 主键约束名] primary key(列名1,列名2);

三、唯一约束(unique)

唯一约束针对列表来声明,列被添加了唯一约束,则该列不允许有重复值出现;但允许有空值;一个表可以有多个唯一约束;当列被设置唯一约束,该列会被系统默认给定一个唯一索引;如果给唯一约束起名,默认和列名保持一致。
索引:等同于书本的目录,帮助我们在数据库中快速定位所需要的数据的存放位置。

1. 创建表同时创建唯一约束

格式一:

create table 表明(
	列名1 数据类型 unique,
	列名2 数据类型,
	列名3 数据类型,
	......
);

格式二:

create table 表明(
	列名1 数据类型,
	列名2 数据类型,
	列名3 数据类型,
	......
	constraint 唯一约束名 unique(列名)
);

2. 针对已经存在的表添加唯一约束

格式:

alter table 表名 add unique(列名);

3. 删除唯一约束

格式:

alter table 表名 drop index 唯一约束名;

四、域完整性约束

定义:限定列取值范围或者取值要求

1. 默认约束(default)

1.1 创建表的同时创建默认约束

create table 表明(
	列名1 数据类型 default ‘值’,
	列名2 数据类型 default ‘值’,
	列名3 数据类型,
	......
);

1.2 针对已经存在的表添加默认约束

格式:

alter table 表名 modify 列名数据类型 default '值';

1.3 删除默认约束

格式:

alter table 表名 modify 列名 数据类型;

2. 非空约束(not null)

定义:要求列值不为空,一个表中,非空约束可以有多个

2.1 创建表的同时创建非空约束

格式:

create table 表明(
	列名1 数据类型 not null,
	列名2 数据类型 not null,
	列名3 数据类型,
	......
);

2.2 针对已经存在的表添加非空约束

格式:

alter table 表名 modify 列名 数据类型 not null;

3. 删除非空约束

alter table 表名 modify 列名 数据类型;

五、参照完整性

定义:实现标语表之间的参照引用关系
注意事项:
1)外键约束针对两表,实现主表和从表之间的参照关系,在从表中针对某个列建立外键约束
2)当主表和从表建立起外键约束时,从表中的某个列参照引用主表中的某列,相当于把一个列当作连接两个表之间的桥梁
3)当主表被从表引用时,主表删除记录,要看从表是否有应用
4)当向从表中做插入数据,先询问主表意见
5)一个表可以有多个外键约束
6)当从表中的某列参照主表的某列时,要求主表的列必须时主键约束或唯一约束
7)当从表和主表中以某列来建立参照约束时,要求这两个表中,列名可以不一致,但是两个列内容,数据类型保持一致

1. 在创建表同时创建外键约束

主表:

create table 表明(
	列名1 数据类型 primary key,
	列名2 数据类型 unique,
	列名3 数据类型,
	......
);

从表:

create table 表明(
	列名1 数据类型,
	列名2 数据类型,
	列名3 数据类型,
	......
	constraint 外键约束名 foreign key(从表列名1) references 主表(主表列名1),
	constraint 外键约束名 foreign key(从表列明2) references 主表(主表列名2)
);

2. 针对已经存在的表添加主键

格式:

alter table 从表名 add constraint 外键约束名 foreign key(从表名) references 主表(主表列名);

3. 删除外键约束

格式:

alter table 表名 drop foreign key 外键约束名;

您受累,点个赞再走呗!

猜你喜欢

转载自blog.csdn.net/yang_yang_heng/article/details/107469047