MySQL学习记录(3)

学习内容:数据表的完整性约束


一、数据完整性及其分类

1.数据完整性分类

  1. 实体完整性:通过表中字段或字段组合将表中各记录的唯一性区别开来。
    实体完整性的实施方法是添加 primary key 约束和 unique 约束
  2. 域完整性:表中特定字段的值是有效取值。尽管每个字段都有数据类型,但并非满足该数据类型的值都是有效的。如:学生出生日期不可能晚于录入数据当天日期。
    域完整性的实施方法是添加 check 约束和 default 约束
  3. 引用完整性:被引用表中的主关键字和引用表中的外部主关键字之间的关系。
    引用完整性的实施方法是添加 foreign key 约束

2.约束条件

(1)对列的控制
主键约束(PRIMARY KEY),唯一性约束(UNIQUE)
(2)对列数据的控制
检查约束(CHECK),默认值约束(DEFAULT),非空约束(NOT NULL)
(3)关系控制
外键约束(FOREIGN KEY)

二、主键约束

主键约束(primary key constraint)要求主键列的数据唯一,并且不为空。主键分为两种:单字段和多字段联合主键。

1.创建表时添加主键

一个表中只能有一个主键。
注意:数据类型为image 和text 的字段列不能定义为主键。
创建主键的方法是创建表时在数据列的后面直接添加关键字 primary key,语法格式

字段名 数据类型 primary key

2.修改表时添加主键

语法格式

alter table 表名
add constraint 约束名 primary key(字段名);
  • constraint:创建约束的关键字。
  • 约束名:设置主键约束的名称。

在这里插入图片描述
注:数据表创建完成后,若需给某个字段创建主键约束,该字段必须不允许为空,若为空,则在创建主键约束时会报错。

3.创建联合主键约束

若对多字段定义了主键约束,则一列中的值可能会重复,但来自主键约束中的所有列的任何值组合必须唯一。
语法格式:(定义完所有字段列后添加主键)

primary key[字段1,字段2,···,字段n]

4.删除表中的主键

语法格式

alter table 表名
drop primary key;

三、外键约束

外键用来在两个表的数据之间建立链接,可以是一列或者多列。首先,被引用表的关联字段上应该创建primary key 约束或unique 约束,然后在应用表的字段上创建foreign约束,从而创建外键。
主键所在的表为主表(父表);外键所在的表为从表(子表)。

1.创建表时添加外键约束

语法格式

constraint <外键名> foreign key (字段名1[,字段名2,···])
references <主表名> (主键列1[,主键列2,···]

2.修改表时添加外键约束

语法格式

alter table 表名
add constraint 外键名 foreign key(字段名1[,字段名2,···])
references 主表名 (主键列1[,主键列2,···]

3.删除表中外键约束

语法格式

alter table 表名
drop foreign key 外键名;

四、默认约束

default constraint 用于指定某列的默认值。字段只有在不可为空的时候才能设置默认约束。

1.创建表时添加默认约束

语法格式

create table 表名
(
字段1 数据类型 default constant_expression,
字段2 数据类型,
字段3 数据类型,
···
);
  • default :通常放在字段的数据类型之后。
  • constant_expression:常量表达式,可以是一个具体的值,也可以是通过表达式得到一个值,但必须确保与数据类型相匹配。

2.修改表时添加默认约束

语法格式

alter table 表名
alter 字段名 set default constant_expression;

3.删除表中的默认约束

语法格式

alter table 表名
alter 字段名 drop default;

五、唯一性约束

对于非主键字段应使用唯一性约束,即 UNIQUE约束。

1.创建表时添加

只需在字段的数据类型后面加上 UNIQUE关键字 即可。声明为PRIMARY KEY的列不允许有空值,但声明为 UNIQUE的字段允许空值(NULL)存在。

2.修改表时添加

语法格式

alter table 表名
add constraint 约束的名字 unique(字段名)
  • constraint 约束的名字:该语句可以省略,省略后系统会为添加的约束自动生成一个名字。如果想要同时为多个列设置唯一性约束,就要省略该语句,名字由系统自动生成。

3.删除表中唯一性约束

语法格式

alter table 表名
drop [index|key] 约束名称;

六、非空约束

非空性是指字段的值不能为空值。

1.创建表时添加

在字段的数据类型后添加 NOT NULL。

2.修改表时添加

语法格式

alter table 表名
modify 字段名 数据类型 NOT NULL;

3.删除表中的非空约束

语法格式

alter table 表名
modify 字段名 数据类型;

七、字段的自增属性

1.创建表时添加

只需在字段的数据类型后面添加 AUTO_INCREMENT 关键字。

2.修改表时添加

语法格式

alter table 表名
change 字段名 字段名 数据类型 UNSIGNED AUTO_INCREMENT;

3.删除表中自增属性

语法格式

alter table 表名
change 字段名 字段名 数据类型 UNSIGNED NOT NULL;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值