第5章 数据的完整性-【千锋教育】MySQL数据库从入门到精通
2023-03-21
|
45页
|
135人阅读
|
0人下载
教辅
内容正文:
实体完整性
索引
第5章 数据的完整性
域完整性
引用完整性
实体完整性
索引
域完整性
☞点击查看本小节知识架构
5.2
5.3
5.1
☞点击查看本小节知识架构
☞点击查看本小节知识架构
引用完整性
5.4
☞点击查看本小节知识架构
学习目标
掌握
掌握
掌握
掌握
掌握实体完整性
1
掌握引用的完整性
4
2
掌握索引
3
掌握域完整性
销售额 掌握知识 理解知识 熟悉知识 了解知识 2.5 2.5 2.5 2.5
5.1 实体完整性
返回目录
5.1.1
主键约束
5.1.2
唯一约束
5.1.3
自动增长列
5.1 实体完整性
5.1.1 主键约束
主键(primary key)用于唯一地标识表中的某一条记录。在两个表的关系中,主键用来在一个表中引用来自于另一个表中的特定记录。一个表的主键可以由多个关键字共同组成,并且主键的列不能包含空值。主键的值能唯一标识表中的每一行,这就好比所有人都有身份证,每个人的身份证号是不同的,能唯一标识每一个人。
接下来通过一个案例演示未设置主键会出现的问题。首先,创建一张订单表orders。
5.1 实体完整性
5.1.1 主键约束
表中列出了订单表的字段、字段类型和说明。创建订单表的SQL语句及执行结果如下。
然后向订单表中插入一条数据。
5.1 实体完整性
5.1.1 主键约束
从以上执行结果证明插入数据完成。为了进一步验证,使用SELECT语句查看orders表中的数据。
从以上执行结果可以看出,orders表中的数据成功插入。此时再次向表中插入数据,新插入数据的oid仍然为1。
5.1 实体完整性
5.1.1 主键约束
从以上执行结果证明插入数据完成。为了进一步验证,使用SELECT语句查看orders表中的数据。
从以上执行结果可看出,orders表中的数据成功插入,该表中此时有两条订单数据,且两个订单的oid都为1。但订单号相同,商品的付款、送货等流程都可能出现问题。为了避免这种问题,在此处可以为表添加主键约束,为已经存在的表设置主键的语法格式如下。
5.1 实体完整性
5.1.1 主键约束
以上执行结果证明删除数据完成。为了进一步验证,使用SELECT语句查看orders表中的数据。
从以上执行结果可看出,orders表中只有一条数据,不存在oid重复的数据。然后继续设置主键。
5.1 实体完整性
5.1.1 主键约束
以上执行结果证明主键添加完成。为了进一步验证,使用DESC查看表结构。
从以上执行结果可以看出,oid字段的Key值为PRI,代表主键。然后将前面删除的第二条数据再次添加进去。
5.1 实体完整性
5.1.1 主键约束
从以上执行结果可以看出,插入数据失败。这是因为主键对其进行了约束,新插入的数据主键不能重复。此处将oid的值改为2,再次插入。
以上执行结果证明插入数据完成。为了进一步验证,使用SELECT语句查看orders表中的数据。
5.1 实体完整性
5.1.1 主键约束
从以上执行结果可以看出,当oid的值不重复时插入成功。另外,主键的值不能为NULL,此处继续验证,向表中插入一条数据,将oid设置为NULL。
在以上语法格式中,字段名表示需要设置为主键的列名,数据类型为该列的数据类型,PRIMARY KEY代表主键。
以上执行结果证明定义为主键的字段值不能为NULL,否则会报错。以上是为已经存在的表添加主键约束,实际上,在创建表时同样可以添加主键约束。
5.1 实体完整性
5.1.1 主键约束
在前面的案例中讲解了添加单字段的主键约束,但随着业务的复杂,可能会需要多字段的主键约束,例如手机接收信息,这时通过手机号就不能够唯一确定一条记录,可能一个手机号在一天中接收了很多的信息。解决这个问题可以添加主键约束为手机号和时间戳两个列,根据两个列的数据,能够唯一确定一条记录。添加多字段的主键约束语法格式如下。
以上语法格式中,PRIMARY KEY中的参数表示构成主键的多个字段的名称。
5.1 实体完整性
5.1.2 唯一约束
唯一约束用于保证数据表中字段值的唯一性,在MySQL中使用UNIQUE关键字添加唯一约束。在创建表时为某个字段添加唯一约束的具体语法格式如下。
在以上语法格式中,字段名表示需要添加唯一约束的列名,列名后跟着数据类型和UNIQUE关键字,两者之间用空格隔开。
同样的,唯一约束也可以添加到已经创建完成的表中,语法格式如下。
5.1 实体完整性
5.1.3 自动增长列
在前面的学习中,数据表中的id字段一般从1开始插入,不断增加,这种做法存在一些问题,即在添加数据时比较繁烦琐,每次都要添加一个id字段的值,而且容易出错。为了解决这个问题,可以将id字段的值设置为自动增加。在MySQL中使用AUTO_INCREMENT关键字设置表
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。