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

2024-03-17 11:04

本文主要是介绍【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属性的值与之相等

2. 修改Partsupp表中的一个元组,修改后该元组的partkey属性的值在Part表中找不到一个元组,其partkey属性的值与之相等

3. Part表中删除一个元组,造成Partsupp表中某些元组的Partkey属性的值在表Part中找不到一个元组,其Partkey属性的值与之相等

4. 修改Part表中一个元组的partkey属性,造成Partsupp表中某些元组的partkey属性的值在表Part中找不到一个元组,其partkey属性的值与之相等

对Lineitem表

Partsupp表

Lineitem表

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

2. 修改Lineitem表中的一个元组,修改后该元组的partkey,suppkey属性的值在Partsupp表中找不到一个元组,其partkey,suppkey属性的值与之相等

3. Partsupp表中删除一个元组,造成Lineitem表中某些元组的partkey,suppkey属性的值在表Partsupp中找不到一个元组,其Partkey,suppkey属性的值与之相等

4. 修改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 总结

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

这篇关于【SQL Server】实验七 数据完整性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/818757

相关文章

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

Mac电脑如何通过 IntelliJ IDEA 远程连接 MySQL

《Mac电脑如何通过IntelliJIDEA远程连接MySQL》本文详解Mac通过IntelliJIDEA远程连接MySQL的步骤,本文通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友跟... 目录MAC电脑通过 IntelliJ IDEA 远程连接 mysql 的详细教程一、前缀条件确认二、打开 ID