【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 总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2869726.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【蓝桥杯选拔赛真题38】C++判断数字 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解析

目录 C判断数字 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、推荐资料 C判断数字 第十四届蓝桥杯青少年创意编程大赛C选拔赛真题 一、题目要求 1、编程实现 给定一个正整数N(100≤N<100000)…

特殊内齿轮加工的另一种选择

内齿轮加工普遍采用插齿或拉削&#xff0c;但对于一些特殊齿廓的内齿轮来说&#xff0c;插齿可能会有一定的困难&#xff0c;或者成本较高。在这种情况下&#xff0c;线切割加工不失为一种不错的选择。那么什么样的零件需要选择这种加工方式呢&#xff1f;一起来看看&#xff1…

【Java】常用类和基础API

文章目录 一、String的特性二、String的内存结构2.1 拼接2.2 new 三、String的常用API-13.1 构造器 四、String的常用API-24.1 常用方法4.2 查找4.3 字符串截取4.4 和字符/字符数组相关4.5 开头与结尾4.6 替换 五、StringBuffer、StringBuilder5.1 StringBuilder、StringBuffer…

【RS422】基于未来科技FT4232HL芯片的多波特率串口通信收发实现

功能简介 串行通信接口常常用于在计算机和低速外部设备之间传输数据。串口通信存在多种标准&#xff0c;以RS422为例&#xff0c;它将数据分成多个位&#xff0c;采用异步通信方式进行传输。   本文基于Xilinx VCU128 FPGA开发板&#xff0c;对RS422串口通信进行学习。   根…

sqlite 常见命令 表结构

在 SQLite 中&#xff0c;将表结构保存为 SQL 具有一定的便捷性和重要性&#xff0c;原因如下 便捷性&#xff1a; 备份和恢复&#xff1a;将表结构保存为 SQL 可以方便地进行备份。如果需要还原或迁移数据库&#xff0c;只需执行保存的 SQL 脚本&#xff0c;就可以重新创建表…

如何在“Microsoft Visual Studio”中使用OpenCV编译应用程序

返回目录&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 前一篇&#xff1a;OpenCV4.9.0在windows系统下的安装 后一篇&#xff1a; 警告&#xff1a; 本教程可以包含过时的信息。 我在这里描述的所有内容都将适用于 OpenCV 的C\C接口。我首先假…

力扣热题100_矩阵_240_搜索二维矩阵 II

文章目录 题目链接解题思路解题代码 题目链接 240. 搜索二维矩阵 II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xf…

专升本 C语言笔记-07 逗号运算符

1.逗号表达式的用法 就是用逗号隔开的多个表达式。逗号表达式&#xff0c;从左向右依次执行。 2.逗号表达式的特性 2.1.当没有括号时&#xff0c;第一个表达式为整个表达式的值。 代码 int x 3,y 5,a 0; a x,y; printf("a %d",a); 说明:因为逗号优先级最低,会…

PyTorch学习笔记之激活函数篇(一)

文章目录 1、Sigmoid函数1.1 公式1.2 对应图像1.2 生成图像代码1.4 优点与不足1.5 torch.sigmoid()函数 1、Sigmoid函数 1.1 公式 Sigmoid函数的公式&#xff1a; f ( x ) 1 1 e − x f(x) \frac{1}{1e^{-x}} f(x)1e−x1​ Sigmoid函数的导函数&#xff1a; f ′ ( x ) e …

灯塔:CSS笔记(4)

伪类选择器&#xff1a; 1.作用与优势&#xff1a; 1.作用&#xff1a;根据元素在HTML中的结构关系查找元素 2.优势&#xff1a;减少对于HTML中类的依赖&#xff0c;有利于保持代码的整洁 3.场景&#xff1a;常用于查找某父级选择器中的子元素 2.选择器 选择器说明E:first-c…

软考80-上午题-【面向对象技术3-设计模式】-结构型设计模式03

一、外观模式 1-1、意图 为子系统中的一组接口提供一个一致的界面。 Facade 模式定义了一个高层接口&#xff0c;这个接口使得这一子系统更加容易使用。 1-2、结构 Facade 知道哪些子系统类负责处理请求&#xff1a;将客户的请求代理给适当的子系统对象。Subsvstem classes …

SpingBoot集成Rabbitmq及Docker部署

文章目录 介绍RabbitMQ的特点Rabbitmq术语消息发布接收流程 Docker部署管理界面说明Overview: 这个页面显示了RabbitMQ服务器的一般信息&#xff0c;例如集群节点的名字、状态、运行时间等。Connections: 在这里&#xff0c;可以查看、管理和关闭当前所有的TCP连接。Channels: …

【ollama】(7):使用Nvidia Jetson Nano设备,成功运行ollama,运行qwen:0.5b-chat,速度还可以,可以做创新项目了

1&#xff0c;视频地址 https://www.bilibili.com/video/BV1Pj421o7W5/ 【ollama】&#xff08;7&#xff09;&#xff1a;使用Nvidia Jetson Nano设备&#xff0c;成功运行ollama&#xff0c;运行qwen:0.5b-chat&#xff0c;速度还可以&#xff0c;可以做创新项目了 2&#x…

源码编译部署LAMP

编译部署LAMP 配置apache [rootzyq ~]#: wget https://downloads.apache.org/apr/apr-1.7.4.tar.gz --2023-12-11 14:35:57-- https://downloads.apache.org/apr/apr-1.7.4.tar.gz Resolving downloads.apache.org (downloads.apache.org)... 88.99.95.219, 135.181.214.104…

MySQL实现事务隔离的秘诀之锁

在MySQL中&#xff0c;有多种锁类型&#xff0c;我们先了解三种概念的锁&#xff0c;以便对接下来的内容有更好理解。 表级锁&#xff08;Table Lock&#xff09;&#xff1a;对整个表加锁&#xff0c;其他事务无法修改或读取该表的数据&#xff0c;但可以对其他表进行操作。页…

【研发管理】产品经理-基础认知

导读&#xff1a;产品经理&#xff08;Product Manager&#xff09;是一个负责产品的全周期管理的职位&#xff0c;他们不仅参与产品的设计、开发、推广和销售&#xff0c;还涉及到产品的市场调研、用户需求分析、竞争分析、产品规划、产品测试以及后续的产品迭代等多个环节。产…

C语言-strtok(切片的使用)

strtok&#xff08;切片的使用&#xff09; 使用规则 使用的基本情况 strcpy 第二次调用的时候传的是空指针 所以打印出来的是 每一次调用函数都会把当前函数的地址记住 所以二次调用的时候 传的是null 连起始位置都不传了 只是传null 但是需要知道的是 当知道三段 你调用第…

MySQL语法分类 DDL(1)

DDL&#xff08;1&#xff09;(操作数据库、表) 数据库操作(CRUD) C(Create):创建 //指定字符集创建 create database db_1 character set utf8;//避免重复创建数据库报错可以用一下命令 create database if not exists db_1 character set utf8;R(Retrieve):查询 //查询所…

由浅到深认识C语言(6):变量的存储类型

该文章Github地址&#xff1a;https://github.com/AntonyCheng/c-notes 在此介绍一下作者开源的SpringBoot项目初始化模板&#xff08;Github仓库地址&#xff1a;https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址&#xff1a;https://blog.csdn…

flowable-ui部署

版本 java: java8+tomcat: apache-tomcat-9.0.87flowable: flowable-6.8.1mysql驱动: mysql-connector-java-8.0.30.jar 注意:版本一定要对,否则启动报错执行数据库脚本 创建数据库flowable执行脚本,脚本位于解压flowable-6.8.1.zip后的flowable-6.8.1/database/create/all/…