【SQL Server】实验七 数据完整性

1 实验目的

  1. 掌握实体完整性、参照完整性和用户自定义完整性约束的创建方法。
  2. 掌握完整性约束的运行检查机制。
  3. 掌握参照完整性的级联删除和修改方法。
  4. 掌握正确设计关系模式完整性约束的方法。

2 实验内容

2.1 掌握实体完整性约束的创建和使用方法

  1. 创建表时定义由一个属性组成的主键(给约束命名)。
  2. 创建表时定义由两个或两个以上属性组成的主键(给约束命名)。
  3. 删除以上两个主键约束。
  4. 利用ALTER TABLE语句定义上述两个主键。

2.2 掌握参照完整性约束的创建和使用方法

  1. 创建表时定义一个列级参照完整性约束(给约束命名)。
  2. 创建表时定义一个表级的由两个属性组成的参照完整性约束(给约束命名)。
  3. 设计数据更新语句检查参照完整性约束是否起作用。
  4. 删除上述完整性约束。
  5. 利用ALTER TABLE 建立上述参照完整性约束,并且规定UPDATE/DELETE时的动作。
  6. 设计数据更新语句检查参照完整性约束及其相应的动作是否起作用。

2.3 掌握用户自定完整性约束的创建和使用方法

  1. 定义一个检查约束,检查其值在某个取值范围内,并设计相应的更新语句检查该约束是否起作用?
  2. 定义一个检查其值符合某个匹配模式的检查约束(使用LIKE),并设计相应的更新语句检查该约束是否起作用?
  3. 定义一个检查其值符合某个正则表达式的检查约束(使用SIMILAR TO),并设计相应的更新语句检查该约束是否起作用?
  4. 定义一个UNIQUE约束,并设计相应的更新语句检查该约束是否起作用?
  5. 定义一个DEFAULT约束,设计一个INSERT语句检查该约束是否起作用。

3 实验要求

  1. 深入复习教材第五章数据库完整性约束内容。
  2. 根据书上的例子,针对TPCH数据库模式设计各种完整性约束,每种类型完整性约束至少要设计一个,描述清楚完整性约束要求,设计和运行触发完整性约束检查的数据更新语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。也可以按照附1所列示例做实验。
  3. 实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。
  4. 思考题:完整性约束的违约处理有哪几种方式?

4 实验步骤

4.1 掌握实体完整性约束的创建和使用方法

  1. 创建表时定义由一个属性组成的主键(给约束命名)。
  1. 创建表时定义由两个或两个以上属性组成的主键(给约束命名)。
  1. 删除以上两个主键约束。
  1. 利用ALTER TABLE语句定义上述两个主键。

4.2 掌握参照完整性约束的创建和使用方法

  1. 创建表时定义一个列级参照完整性约束(给约束命名)。
  1. 创建表时定义一个表级的由两个属性组成的参照完整性约束(给约束命名)。
  1. 设计数据更新语句检查参照完整性约束是否起作用。

对Partsupp表

Part表

Supplier表

Partsupp表

1.Partsupp表中增加一个元组,该元组的partkey属性的值在part表中找不到一个元组,其partkey属性的值与之相等

  1. 修改Partsupp表中的一个元组,修改后该元组的partkey属性的值在Part表中找不到一个元组,其partkey属性的值与之相等
  1. 从Part表中删除一个元组,造成Partsupp表中某些元组的Partkey属性的值在表Part中找不到一个元组,其Partkey属性的值与之相等
  1. 修改Part表中一个元组的partkey属性,造成Partsupp表中某些元组的partkey属性的值在表Part中找不到一个元组,其partkey属性的值与之相等

对Lineitem表

Partsupp表

Lineitem表

1.Lineitem表中增加一个元组,该元组的partkey,suppkey属性的值在Partsupp表中找不到一个元组,其partkey,suppkey属性的值与之相等

  1. 修改Lineitem表中的一个元组,修改后该元组的partkey,suppkey属性的值在Partsupp表中找不到一个元组,其partkey,suppkey属性的值与之相等
  1. 从Partsupp表中删除一个元组,造成Lineitem表中某些元组的partkey,suppkey属性的值在表Partsupp中找不到一个元组,其Partkey,suppkey属性的值与之相等
  1. 修改Partsupp表中一个元组的partkey,suppkey属性,造成Lineitem表中某些元组的partkey,partsupp属性的值在表Partsupp中找不到一个元组,其partkey,partsupp属性的值与之相等
  1. 删除上述完整性约束。
  1. 利用ALTER TABLE 建立上述参照完整性约束,并且规定UPDATE/DELETE时的动作。
  1. 设计数据更新语句检查参照完整性约束及其相应的动作是否起作用。

4.3 掌握用户自定完整性约束的创建和使用方法

  1. 定义一个检查约束,检查其值在某个取值范围内,并设计相应的更新语句检查该约束是否起作用?

  1. 定义一个检查其值符合某个匹配模式的检查约束(使用LIKE),并设计相应的更新语句检查该约束是否起作用?

  1. 定义一个检查其值符合某个正则表达式的检查约束(使用SIMILAR TO),并设计相应的更新语句检查该约束是否起作用?

报错,可能原因为cusphone需为布尔型

用like成功执行

  1. 定义一个UNIQUE约束,并设计相应的更新语句检查该约束是否起作用?
  1. 定义一个DEFAULT约束,设计一个INSERT语句检查该约束是否起作用。

5 总结与体会

5.1 实验中出现的问题及其解决方案

1.测试用户自定义完整性

可得,对Part表无影响

2.忘记如何验证参照完整性,上网查询后得知

5.2 总结

需对参照完整性的验证加以理解记忆,温习了约束的相关语句

相关推荐
海绵宝宝转agent16 分钟前
基于Redis ZSet+AOP+注解实现限流注解算法
数据库·redis·算法
imDwAaY41 分钟前
Redis 也能做消息队列?从 Stream 的存储讲到消费确认
数据库·redis·缓存
@Mike@1 小时前
13-数据库学习笔记(查询执行处理模型)
数据库·笔记·学习
弈栈录1 小时前
MySQL 事务、索引与锁:后端开发必须掌握的数据库基础
数据库·后端
9624561 小时前
餐饮 SaaS 优惠券系统架构演进(三):优惠计算引擎——商品级计价、冲突策略与优惠分摊
java·数据库·spring boot
染指11101 小时前
135.Agent-多Agent框架-LangChain多智能体(SubAgents子代理)
数据库·人工智能·设计模式·langchain·agent·agents
Elastic 中国社区官方博客2 小时前
错误最多的服务运行正常:使用 ES|QL 从日志进行根因分析
大数据·运维·数据库·sql·elasticsearch·搜索引擎·全文检索
做运维的阿瑞2 小时前
mysql数据库视图笔记:创建、修改、删除与适用场景
数据库·笔记·mysql
Seraphina362 小时前
DVWA(SQL Injection-High,XSS Reflected-Medium,XSS Stored-Medium)
数据库·经验分享·sql·网络安全·xss
@Mike@2 小时前
12-数据库学习笔记(五种连接算法)
数据库·笔记·学习