数据完整性

数据完整性

一、实验目的

  1. 掌握使用SQL语句CREATE TABLE定义约束的方法。
  2. 掌握使用SQL语句ALTER TABLE增加或删除约束的方法。
  3. 了解约束的各种类型。
  4. 掌握使用SQL语句CREATE TRIGGER创建触发器的方法。
  5. 掌握引发触发器的方法。
  6. 掌握使用SQL语句DROP TRIGGER删除触发器的方法。
    二、实验内容
  7. SQL语句CREATE TABLE定义约束的方法。
  8. SQL语句ALTER TABLE增加或删除约束的方法。
  9. SQL语句CREATE TRIGGER创建触发器的方法。
  10. SQL语句DROP TRIGGER删除触发器的方法。
    三、实验步骤
  11. 创建students数据库,在该数据库下创建表stu,并同时创建约束,表结构及约束要求如表1所示。
    表1 stu的表结构
    字段 类型 是否为空 约 束
    学号 char(4) 否 主键
    姓名 char(8) 是
    性别 char(2) 是
    出生日期 date 是
    CREATE DATABASE students;
    USE students;
    CREATE TABLE stu (
    学号 CHAR(4) NOT NULL PRIMARY KEY,
    姓名 CHAR(8) NULL,
    性别 CHAR(2) NULL,
    出生日期 DATE NULL
    );
    在这里插入图片描述

2.创建表sc,并同时创建约束,表结构及约束要求如表2所示。
表2 sc的表结构
字段 类型 是否为空 约 束
学号 char(4) 否 外键参照stu表的学号列(约束名fk_sno)
课号 char(4) 否
成绩 decimal(5,2) 是 0≦成绩≦100
设置(学号,课号)为主键。
CREATE TABLE sc(
学号 CHAR(4) NOT NULL PRIMARY KEY,
课号 CHAR(4) NOT NULL PRIMARY KEY,
成绩 DECIMAL(5,2) NULL CHECK(0<=成绩<=100),
CONSTRAINT fk_sno FOREIGN KEY(学号) REFERENCES stu(学号,课号)
);
在这里插入图片描述

  1. 创建表course,并同时创建约束,表结构及约束要求如表3所示。
    表3 course的表结构
    字段 类型 是否为空 约 束
    课号 char(4) 否
    课名 char(20) 是 唯一约束(约束名uq_cname)
    学分 int 是
    CREATE TABLE course(
    课号 CHAR(4) NOT NULL,
    课名 CHAR(20) NULL,
    学分 INT NULL,
    CONSTRAINT uq_cname UNIQUE(课名)
    );
    在这里插入图片描述

4.在course表的课号列建立主键约束。
ALTER TABLE course
ADD PRIMARY KEY(课号);
5.在sc表的课号列建立外键约束fk_cno,参照course表的课号列的取值,要求实现级联更新。
ALTER TABLE sc
ADD CONSTRAINT fk_cno
FOREIGN KEY(课号) REFERENCES course(课号) ON UPDATE CASCADE;
6.在stu表的姓名列建立唯一约束名uq_sname。
ALTER TABLE stu
ADD CONSTRAINT uq_sname
UNIQUE(姓名);
在这里插入图片描述

7.在course表的学分列建立检查约束ck_xf,检查条件为学分>0。
ALTER TABLE course
ADD CONSTRAINT ck_xf
CHECK(学分>0);
8.删除sc表的外键约束fk_cno,fk_sno。
ALTER TABLE sc
DROP CONSTRAINT fk_cno;
ALTER TABLE sc
DROP CONSTRAINT fk_sno;
9.删除stu表的主键约束。
ALTER TABLE stu
DROP PRIMARY KEY;
10.删除course表的唯一约束uq_cname。
ALTER TABLE course
DROP INDEX uq_cname;
11.创建测试表test,包含一个字段date_time,字段类型varchar(50);
CREATE TABLE test(
date_time VARCHAR(50)
);
在这里插入图片描述

(1)创建触发器test_trig,实现在stu表中每插入一条学生记录后,则自动在test表中追加一条插入成功时的日期时间。SYSDATE()函数用来获取当前的日期和时间。
CREATE TRIGGER test_trig AFTER INSERT ON stu
FOR EACH ROW
INSERT INTO test VALUES(SYSDATE());
在这里插入图片描述

(2)为stu表插入一条记录引发触发器,查看test表的内容。
INSERT INTO stu VALUES(‘1000’,‘张三’,‘男’,‘1999-09-09’);
SELECT*FROM test;
12.在course表上创建触发器del_trig,当course表上删除一门课程时,级联删除sc表该课程的记录。删除course表的一条记录,查看sc表相应记录是否被自动删除。
CREATE TRIGGER del_trig AFTER DELETE ON course
FOR EACH ROW
DELETE FROM sc WHERE sc.课号=OLD.课号;
DELETE FROM course WHERE 课号=‘1’;
SELECT * FROM sc;
在这里插入图片描述

四、实验思考

  1. 请说明唯一约束和主键约束之间的联系和区别。
    一张表里只能有一个主键约束,可以有多个唯一约束
    唯一性约束所在的列允许空值,但是主键约束所在的列不允许空值
    2.在course表中插入一条学分值小于0的记录,该记录能插入成功吗?

    3.建立外键约束所参照的父表的列必须建立成主键吗?

    4.可以建立几种类型的触发器?
    3种
    5.能否在当前数据库中为其他数据库创建触发器?
  2. 触发器何时被激发?
    触发器可以在有新行插入表时、更改某一行时、删除某一行时激活触发程序。
    五、实验总结
    1、收获
    通过本次实验,理解了数据库完整性约束的概念,并且通过实验验证了数据库的完整性以及触发器的使用。验证了实体完整性,参照完整性,以及用户自定义完整性并且加深了理解。更加深刻的认识到了数据库完整性的重要性。
    2、存在的问题
    对主键约束和外键约束的语句不太熟练,不太理解级联删除以及级联更新的语句,造成在实验中出了很多次错误。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

扫雷游戏【可展开一片,超详细,保姆级别,此一篇足够】

一、C语言代码实现的扫雷游戏的运行 C语言实现扫雷 二、扫雷游戏的分析与设计 1.扫雷游戏的界面设计 在玩家玩扫雷的时候&#xff0c;它会给你一个二维的棋盘&#xff08;下面的讲解都以9x9规格为例子&#xff09;&#xff0c;然后点击你想排查的坐标&#xff0c;若不是雷的&…

KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/3)

文章目录 1、登录kubesphere平台2、kubesphere部署应用分析2.1、工作负载2.2、服务2.3、应用路由2.4、任务2.5、存储与配置2.6、部署应用三要素 3、部署mysql3.1、mysql容器启动实例3.2、mysql部署分析3.3、创建mysql的配置3.4、创建mysql的数据卷pvc3.5、创建mysql工作负载3.6…

MySQL之导入导出远程备份(详细讲解)

文章目录 一、Navicat导入导出二、mysqldump命令导入导出2.1导出2.2导入&#xff08;使用mysqldump导入 包含t_log表的整个数据库&#xff09; 三、LOAD DATA INFILE命令导入导出3.1设置;3.2导出3.3导入(使用单表数据导入load data infile的方式) 四、远程备份4.1导出4.2导入 一…

市场下行,中国半导体进口数量、金额双双两位数锐减 | 百能云芯

根据中国海关总署最新统计&#xff0c;2023年中国累计进口集成电路&#xff08;半导体晶圆&#xff09;数量为4795亿颗&#xff0c;较2022年下降10.8%&#xff1b;而进口金额为3494亿美元&#xff0c;下降15.4%。这一数据显示&#xff0c;中国半导体进口在数量和金额两方面均出…

第十三课:eNSP BGP协议教程

系列文章目录 第一课&#xff1a;eNSP第一个网络拓扑配置教程 第二课&#xff1a;eNSP vlan网络拓扑图配置教程 第三课&#xff1a;eNSP WIFI网络拓扑配置教程 第四课&#xff1a;eNSP 路由器路由配置拓扑教程 第五课&#xff1a;eNSP DHCP拓扑配置教程 第六课&#xff1…

林江院长:让斜视的孩子改“斜”归正,“正视”未来

读写时跳行、不敢和别人对视、拍照时不敢看镜头......这些不便是不少斜视患儿每天都在经历的日常。 斜视是目前儿童常见的眼科疾病之一&#xff0c;该眼病不仅给孩子的外在形象带来影响&#xff0c;更重要的是会影响双眼视功能及身心健康&#xff0c;其危害不容小觑。 7岁男孩晓…

Microsoft Remote Desktop for Mac 中文正式版下载 微软远程连接软件

Microsoft Remote Desktop 是一款专为 Mac 用户设计的远程桌面工具&#xff0c;它可以帮助用户通过网络连接到其他计算机&#xff0c;实现远程控制和操作。 软件下载&#xff1a;Microsoft Remote Desktop for Mac 中文正式版下载 该工具支持多种远程连接协议&#xff0c;包括 …

Python高级编程之IO模型与协程

更多Python学习内容&#xff1a;ipengtao.com 在Python高级编程中&#xff0c;IO模型和协程是两个重要的概念&#xff0c;它们在处理输入输出以及异步编程方面发挥着关键作用。本文将介绍Python中的不同IO模型以及协程的概念、原理和用法&#xff0c;并提供丰富的示例代码来帮助…

SyntaxError: invalid syntax. Perhaps you forgot a comma?解决办法

Bug分析 1.错误解释2. 示例 1.错误解释 这个错误提示“SyntaxError: invalid syntax. Perhaps you forgot a comma?”表明你的代码中存在语法错误&#xff0c;可能是缺少了一个逗号。 在Python中&#xff0c;逗号用于分隔列表、元组和字典中的元素。如果在创建这些数据结构时…

使用dataframe_image将dataframe表格转为图片

安装方法&#xff1a;pip install dataframe-image 这个库可以将dataframe的表格转换为图片格式&#xff0c;比起数字&#xff0c;图片的格式在手机上会更清晰的看清楚数据及对应行列 示例程序 import numpy as np import pandas as pd import dataframe_imagedef main():my…

OPC UA 开源库编译方法及通过OPC UA连接西门S7-1200 PLC通信并进行数据交换[一]

前言 在现代工业自动化领域&#xff0c;OPC UA&#xff08;开放性生产控制和统一架构&#xff09;是一种广泛应用的通信协议。本文将以通俗易懂的方式解释OPC UA的含义和作用&#xff0c;帮助读者更好地理解这一概念。 一、OPC UA的定义 OPC UA全称为“开放性生产控制和统一…

Spring基础属性一览:注释、对象装配、作用域、生命周期

在Spring中想要更简单的存储和读取对象的核心是使用注解&#xff0c;也就是我们接下来要学的Spring中相关注解。 之前我们存储Bean时&#xff0c;需要在自己添加的配置文件中添加一行bean才行&#xff1a; 而现在我们只需要一个注解就可以替代之前要写的一行配置的繁琐了。 …

基于域账户及西门子simatic logon的集中权限管理的实现(二)

上次我们完成了域环境及simatic logon服务器的搭建&#xff0c;今天我们将在wincc及HMI上进行组态&#xff0c;实现用域账户进行登录。 3.WINCC用户管理组态引文&#xff1a;博途工控人平时在哪里技术交流博途工控人社群 3.1 首先将要安装WINCC的服务器加入域。 3.2 在wincc…

springboot实现黑名单和白名单功能

题外话 关于黑名单和白名单功能&#xff0c;我觉得可以直接用linux服务器的iptables或nftables来实现黑名单和白名单功能。这两个工具都是Linux系统上用于配置防火墙规则的命令行工具。 iptables&#xff1a; 描述&#xff1a; iptables 是一个用于配置IPv4数据包过滤规则的工具…

Netty开篇——NIO章中(四)

通道(Channel) Channel类似于流&#xff0c;有些区别 同时进行读写&#xff0c;而流只能读或者只能写实现异步读写数据可以从缓冲读数据&#xff0c;也可以写数据到缓冲 Channel在 NIO 中是一个接口:public interface Channel extends Closeable{} 常用的Channel类有:FileChan…

【昕宝爸爸小模块】深入浅出之JDK21 中的虚拟线程到底是怎么回事(二)

➡️博客首页 https://blog.csdn.net/Java_Yangxiaoyuan 欢迎优秀的你&#x1f44d;点赞、&#x1f5c2;️收藏、加❤️关注哦。 本文章CSDN首发&#xff0c;欢迎转载&#xff0c;要注明出处哦&#xff01; 先感谢优秀的你能认真的看完本文&…

Arthas项目实战用法

一、简介 1、项目所在位置 2、安装Arthas 1. 下载arthas-boot.jar 2. 运行arthas-boot.jar 3. 选择进程 3、卸载Arthas 二、核心监视功能 1、monitor&#xff1a;监控方法的执行情况 2、watch&#xff1a;检测函数返回值 3、trace&#xff1a;根据路径追踪&#xff0c;…

低代码自动化测试的实践

何为低代码测试 传统上&#xff0c;功能、 UI、端到端等测试自动化的实现都涉及编写测试脚本&#xff0c;代替测试人员执行重复的手动测试任务。自动化脚本的开发工作通常由 QA 工程师或开发人员完成&#xff0c;这需要编写大量代码。 而低代码甚至无代码的理念也是在自动化测…

海外盲盒系统搭建:盲盒出海成为了盲盒企业的新机遇

盲盒在我国作为一个新型的消费模式&#xff0c;取得了较大的成功&#xff0c;也成为了当下流行的潮玩文化。盲盒在国内爆火的优势下&#xff0c;也为我国盲盒出海提供了市场基础。当下&#xff0c;海外市场具有较大的发展潜力&#xff0c;除此之外&#xff0c;盲盒出海也成为当…

transformer详解

transformer 框架注意力机制注意力评分函数(scoring function)自注意力机制&#xff08;self-attention&#xff09;masked self-attention多头注意力&#xff08;multi-head attention&#xff09; 位置编码Layer normalizationResnet&#xff08;Add&#xff09; 框架 框架解…