MySQL:约束(Constraints)

在数据库设计中,约束(Constraints)扮演着至关重要的角色,它们确保了数据库中数据的完整性和有效性。

MySQL作为广泛使用的开源关系型数据库管理系统,自然也支持多种类型的约束。在 MySQL 中,约束是指对表中数据的一种约束,能够帮助数据库管理员更好地管理数据库,并且能够确保数据库中数据的正确性和有效性。

在 MySQL 中可以使用 SHOW CREATE TABLE 语句来查看表中的约束。

MySQL 约束类别

约束是表级的强制规定,用于保证表中数据的完整性和有效性。完整性包括精确性和可靠性。MySQL中的约束可以分为以下几类:

  1. 非空约束(NOT NULL):确保字段值不为NULL。
  2. 唯一性约束(UNIQUE):确保字段或字段组合中的值唯一。
  3. 主键约束(PRIMARY KEY):唯一标识表中的每一行,相当于唯一性约束+非空约束的组合。
  4. 外键约束(FOREIGN KEY):用于维护两个表之间的关系,确保参照完整性。
  5. 检查约束(CHECK,适用于某些数据库版本和类型,如Oracle):确保字段值满足特定条件。
  6. 默认值约束(DEFAULT):当插入记录时,如果字段没有指定值,则使用默认值。

以上 6 种约束中,一个数据表中只能有一个主键约束,其它约束可有多个。

主键约束

主键约束使用最频繁的约束。在设计数据表时,一般情况下,都会要求表中设置一个主键。

主键是表的一个特殊字段,该字段能唯一标识该表中的每条信息。例如,学生信息表中的学号是唯一的。

主键(PRIMARY KEY)的完整称呼是“主键约束”

使用主键应注意以下几点:

  • 每个表只能定义一个主键。一个字段名只能在联合主键字段表中出现一次。

  • 唯一性原则:主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在有相同主键值的两行数据。

  • 最小化原则:联合主键不能包含不必要的多余字段。当把联合主键的某一字段删除后,如果剩下的字段构成的主键仍然满足唯一性原则,那么这个联合主键是不正 确的。

设置主键 PRIMARY KEY

创建表时设置主键

在创建数据表时设置主键约束,既可以为表中的一个字段设置主键,也可以为表中多个字段设置联合主键。

单字段主键

CREATE TABLE 语句中,通过 PRIMARY KEY 关键字来指定主键。

在定义字段的同时指定主键,语法格式如下:

<字段名> <数据类型> PRIMARY KEY [默认值]

CREATE TABLE student(
	id INT(4) PRIMARY KEY AUTO_INCREMENT,
);

也可以在定义完所有字段之后指定主键,语法格式如下:

[CONSTRAINT <约束名>] PRIMARY KEY [字段名]

CREATE TABLE student(
	id INT(4),
	PRIMARY KEY(id)
);
联合主键

所谓的联合主键,就是这个主键是由一张表中多个字段组成的。

例如:设计学生选课表,要限定的是一个学生只能选择同一课程一次。因此,学生编号和课程编号可以放在一起共同作为主键,这也就是联合主键了。

主键由多个字段联合组成,语法格式如下:

PRIMARY KEY [字段1,字段2,…,字段n]

CREATE TABLE student(
	id INT(4),
	courseID INT(4),
	class VARCHAR(10),
	PRIMARY KEY(id,courseID)
);

当主键是由多个字段组成时,不能直接在字段名后面声明主键约束

修改表时添加主键 ADD PRIMARY KEY

在修改数据表时添加主键约束的语法格式如下:

ALTER TABLE <数据表名> ADD PRIMARY KEY(<字段名>);

ALTER TABLE student ADD PRIMARY KEY(id);

通常情况下,当在修改表时要设置表中某个字段的主键约束时,要确保设置成主键约束的字段中值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值