MySQL数据的完整性 实体完整性(主键约束、唯一约束) 域完整性(非空、默认值约束) 参照完整性(外键约束)

本文详细介绍了MySQL数据完整性的重要性及其三种主要类型:实体完整性(通过主键和唯一约束确保行的唯一性)、域完整性(利用非空和默认值约束保证数据正确性)以及参照完整性(通过外键约束维护表间关系)。强调了主键约束的特征,唯一约束和自动增长列的使用,以及非空和默认值在域完整性中的作用。同时,详细阐述了参照完整性的概念,包括外键与主键的关系以及设置参照完整性的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据完整性
1、解释:保证用户输入的数据保存到数据库是正确的
2、如何添加数据完整性:在创建表的时候给表添加约束
*3、完成性分为:*1、实体完整性2、域完整性3、引用完整性

实体完整性
1、解释:表中的一个(一条记录)代表一个实体(entity)
2、作用:标识每一行数据不重复。行级约束。
3、约束类型:1、主键约束(primary key)2、唯一约束(unique)3、自动增长列(auto_increment)

主键约束:
1、特点:表中要有一个主键,数据唯一,且不能为null
2、添加方式:
a:CREATE TABLE 表名(字段1 数据类型 primary key,字段2 数据类型);

b:CREATE TABLE 表名(字段1 数据类型,字段2 数据类型,primary key(要设置成主键的字段));
c:CREATE TABLE 表名(字段1 数据类型,字段2 数据类型,primary key(主键1,主键2));

如果两个字段同时相同时,就违反了联合主键的约束

先创建表再去修改主键

ALTER TABLE student ADD CONSTRAINT PRIMARY KEY(id);
</
### MySQL 完整性约束的定义与类型 完整性约束数据库管理系统中用于确保数据完整性一致性的机制。在 MySQL 中,完整性约束可以通过表创建时的定义或后续的修改操作来实现。这些约束可以分为三类:实体完整性约束域完整性约束参照完整性约束。 #### 实体完整性约束 实体完整性约束主要用于确保表中每一行记录的唯一性。它通过主键约束(`PRIMARY KEY`)唯一约束(`UNIQUE`)实现。主键约束要求指定的列不能包含重复值或值[^1]。唯一约束则允许列中的值重复一次,但不允许多次重复[^2]。 示例代码如下: ```sql CREATE TABLE tb_class ( id INT PRIMARY KEY, cname VARCHAR(100) NOT NULL, loc VARCHAR(100), UNIQUE (loc) ); ``` #### 域完整性约束 域完整性约束用于限制列中可接受的数据类型、格式或范围。常见的域完整性约束包括约束(`NOT NULL`)默认值约束(`DEFAULT`)。约束确保列中的值不能为[^1],而默认值约束则为未提供值的列设置默认值。 示例代码如下: ```sql CREATE TABLE tb_employee ( emp_id INT NOT NULL, emp_name VARCHAR(50) DEFAULT 'Unknown' ); ``` #### 参照完整性约束 参照完整性约束通过(`FOREIGN KEY`)实现,用于维护表之间的关系。约束确保一个表中的某些值必须出现在另一个表中对应的列中。例如,当删除或更新父表中的记录时,子表中的相关记录也会受到影响。 示例代码如下: ```sql CREATE TABLE tb_student ( student_id INT PRIMARY KEY, class_id INT, FOREIGN KEY (class_id) REFERENCES tb_class(id) ); ``` ### 实现方法 在 MySQL 中,完整性约束可以通过以下方式实现: 1. **表创建时定义**:在 `CREATE TABLE` 语句中直接定义约束条件。 2. **表修改时添加**:使用 `ALTER TABLE` 语句向现有表中添加或修改约束条件。 #### 示例:添加约束 ```sql ALTER TABLE tb_student ADD CONSTRAINT fk_class FOREIGN KEY (class_id) REFERENCES tb_class(id); ``` #### 示例:删除约束 ```sql ALTER TABLE tb_student DROP FOREIGN KEY fk_class; ``` 以上内容涵盖了 MySQL完整性约束的主要类型及其实现方法。通过合理使用这些约束,可以有效保证数据库中的数据质量一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员张礼奎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值