数据库第六次实验

目录

1 实体完整性

1.1 单属性

1.2 多属性

2 参照完整性

2.1 单属性

2.2 多属性

3 用户自定义完整性

3.1 属性上的约束

3.2 元组上的约束


 

1 实体完整性

1.1 单属性

①定义

use 实体完整性_单属性;
create table Student_s_d(
    Sno char(9) primary key,
    Sname varchar(20) not null,
    Ssex char(2),
    Sedpt varchar(20)
);

检验

主码为空不能插入

insert into Student_s_d
values (null, '小明', '男', '计通学院');

19df98f160fa4c7e849092347cf37cfe.png

主码不唯一不能插入

insert into student_s_d
values (123456789, '小明', '男', '计通学院'),
       (123456789, '小红', '女', '化学院');

b7995e26cc0a4bdf8ebe71921d3512d2.png

删除

alter table student_s_d drop primary key;

修改

alter table student_s_d add primary key(Sno);

1.2 多属性

①定义

use 实体完整性_多属性;
create table SC_s_d(
    Sno char(2),
    Cno char(4),
    Grade smallint,
    primary key(Sno, Cno)
);

检验

主码不能为空

insert into sc_s_d
values (null, null, 66);

28a0d2798de041449284b5dee7e3a1cf.png

两个主码相同不能插入

insert into sc_s_d
values (99, 2222, 12),
       (99, 2222, 13);

80339251be0e487c86da027191728619.png

删除

alter table sc_s_d drop primary key;

修改

alter table sc_s_d add primary key(Sno, Cno);

2 参照完整性

2.1 单属性

①定义

use 参照完整性_单属性;

create table Student_c_d
(
   Sno char(2),
   Sname varchar(20),
   Ssex char(2),
   Sage int,
   Department varchar(20)
);
CREATE INDEX idx_student_c_d_Sno ON student_c_d (Sno);

insert into Student_c_d(sno, sname, ssex, sage, department)
values (21, '张三', '男', 18, '计通学院'),
       (04, '李四', '男', 19, '化学院'),
       (02, '翠花', '女', 18, '文新学院');

create table SC_c_d
(
   Sno char(2) not null,
   Cno char(2) not null,
   Performance float not null,
   foreign key(Sno) references Student_c_d(Sno)
);

②检验

不能在sc_c_d中插入student_c_d中不存在的Sno

insert into sc_c_d
values (22, 11, 66);

b9d51a523fcc42fa91db10a06937b3d5.png

不能在sc_c_d中修改student_c_d中不存在的Sno

insert into sc_c_d
values (21, 11, 66);

update sc_c_d set Sno = '22' where Sno = '21';

35b6228b1db2476bbd8071b26bb3d0c8.png

不能修改student_c_d中Sno在sc_c_d中存在的Sno

update student_c_d set Sno = '22' where Sno = '21';

4c0933ae9aa441d7bcd87c026d3b4143.png

删除

alter table sc_c_d
drop foreign key sc_c_d_ibfk_1;

修改

create table Course_c_d
(
   Cno char(2) not null,
   Cname varchar(20),
   Cprepare varchar(20),
   Ccredit float
);
CREATE INDEX idx_course_c_d_Cno ON course_c_d (cno);
delete from sc_c_d;
alter table sc_c_d
add constraint foreign key(Cno) references course_c_d(Cno);

2.2 多属性

定义

use 参照完整性_多属性;
create table Student_c
(
   Sno char(2),
   Sname varchar(20),
   Ssex char(2),
   Sage int,
   Department varchar(20)
);
CREATE INDEX idx_student_c_Sno ON student_c (Sno);

insert into Student_c(sno, sname, ssex, sage, department)
values (21, '张三', '男', 18, '计通学院'),
       (04, '李四', '男', 19, '化学院'),
       (02, '翠花', '女', 18, '文新学院');

create table Course_c
(
   Cno char(2) not null,
   Cname varchar(20),
   Cprepare varchar(20),
   Ccredit float
);

CREATE INDEX idx_course_c_Cno ON course_c (cno);

insert into course_c(cno, cname, cprepare, ccredit)
values (11, '概率论', '高等数学', 3),
       (12, '数字电路', '离散结构', 2.5),
       (13, '数据结构', '离散结构', 3.5),
       (01, '嵌入式', '数字电路', 2);

create table SC_c
(
   Sno char(2) not null,
   Cno char(2) not null,
   Performance float not null,
   foreign key(Sno) references Student_c(Sno),
   foreign key(Cno) references Course_c(cno)
);

检验

不能在sc_c中插入student_c中不存在的Sno

insert into sc_c
values (11, 12, 66);

f11f4cf633024adba68380456f9378bc.png

不能修改course_c中cno在sc_c中存在的cno

insert into sc_c
values (21, 13, 33);

update course_c set Cno = '14' where Cno = '13';

9ee001c23b7a4f938b4abc8138226cb7.png

删除

alter table sc_c
drop foreign key sc_c_ibfk_2;

修改

alter table sc_c
add constraint foreign key(Cno) references course_c(cno);

3 用户自定义完整性

3.1 属性上的约束

定义

use 用户完整性;
create table student_yh(
    Sno char(2) unique not null,
    Sname varchar(20) not null,
    Ssex char(2) check(Ssex in('男', '女')),
    Sage int,
    Department varchar(20)
);

检验

Unique的检验

insert into student_yh
values (11, '小明', '男', 11, '计通学院'),
       (11, '小红', '女', 12, '化学院');

084a6a73d12341fb9dc3d1caa9e6cf78.png

Not null的检验

insert into student_yh
values(11, null, '男', 11, '计通学院');

afcaf315814b41c6b4471efcedce20bf.png

Check的检验

insert into student_yh
values(11, '小明', '中', 11, '计通学院');

5ca13a08267d44b794f230a2fc52ec8b.png

3.2 元组上的约束

定义

use 用户完整性_元组;
create table student_yh_yz(
    Sno char(2),
    Sname varchar(20) not null,
    Ssex char(2),
    Sage int,
    Department varchar(20),
    check ( Ssex = '女' or Sname not like 'Ms.%')
);

检验

insert into student_yh_yz
values (11, 'Ms.小明', '男', 11, '计通');

2f8dc9983536402eb74827241e418f7e.png

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

事务管理 及 AOP

一、事务管理 1.1 事务回顾 1.2 Spring事务管理 1.3 事务进阶 1.3.1 rollbackfor 1.3.2 propagation 控制台日志过滤插件: 查看事务管理日志是JdbcTrsactionManager类: 在控制台找到JdbcTrsactionManager——右击——add highlight——红色——所有事…

超声波清洗机洗眼镜好吗?超声波清洗机哪个品牌更值得推荐一些

随着科技的进步,很多朋友因为长时间沉迷于看电子产品,所以早早的就佩戴上眼镜了,从而离不开眼镜。眼镜长时间佩戴会导致上面积累着非常多的灰尘,堆积在镜片上就会导致视线变得模糊不清了,影响视线。然而很多人也很少去…

龙年新目标!龙蜥安全联盟第三次月会圆满结束

2024 年 2 月 1 日,龙蜥社区安全联盟(OASA,以下简称“联盟”)月度会议召开,线上线下共计 33 位代表参会,由秘书处成员齐增田主持本次会议。本次会议主要内容包括 2023 联盟回顾、2024 年的目标和规划、联盟…

【深度优先搜索】【图论】【树】2646. 最小化旅行的价格总和

作者推荐 【数位dp】【动态规划】【状态压缩】【推荐】1012. 至少有 1 位重复的数字 涉及知识点 深度优先搜索 图论 树 LeetCode2646. 最小化旅行的价格总和 现有一棵无向、无根的树,树中有 n 个节点,按从 0 到 n - 1 编号。给你一个整数 n 和一个长…

2024.2.17 模拟实现 RabbitMQ —— 内存数据管理

目录 需求分析 内存管理 实现 MemoryDataCenter 类 封装交换机操作 封装队列操作 封装绑定操作 封装消息操作 封装未确认消息操作 封装恢复数据操作 关于线程安全 针对 MemoryDataCenter 单元测试 需求分析 当前我们已经实现了 数据库管理 交换机、绑定、队列&#…

CSS的伪类选择器:nth-child()

CSS的伪类选择器:nth-child() CSS的伪类选择器 :nth-child() 是一个非常强大的工具,它允许你根据元素在其父元素中的位置(序数)来选择特定的子元素。这个选择器可以应用于任何元素,并且可以与类型选择器、类选择器或ID选择器结合…

Java业务开发常见错误100例【1-30】

1、Tomcat的工作线程是基于线程池的,线程池会重用固定的几个线程,一旦线程重用,那么很可能首次从ThreadLocal获取的值是之前其他用户的请求遗留的值。这时,ThreadLocal中的用户信息就是其他用户的信息。使用类似ThreadLocal工具来…

opencv源码编译及配置完整版教程(win10+vs2019+opencv-4.4.0+opencv_contrib-4.4.0)收藏

opencv源码编译及配置完整版教程(win10vs2019opencv-4.4.0opencv_contrib-4.4.0) https://blog.csdn.net/zhoufm260613/article/details/126107994

使用Python生成二维码的完整指南

无边落木萧萧下,不如跟着可莉一起游~ 可莉将这篇博客收录在了:《Python》 可莉推荐的优质博主首页:Kevin ’ s blog 本文将介绍如何使用Python中的qrcode库来生成二维码。通过简单的代码示例和详细解释,读者将学习如何在Python中轻…

突发!测试OpenAI新产品——sora

哈喽大家好,我是chowley,最近sora真是垄断了科技区的话题榜,几乎每个技术博主都上来讲两句 我在半年前也是一名深度学习的研究者,今天我以测试开发工程师的视角来解读一下sora! 首先打开OpenAI官网的sora页面&#x…

春节专题|产业7问:区块链厂商的现在和未来——混合技术厂商

2023转瞬即逝,不同于加密领域沉寂一整年后在年末集中爆发,对于我国的区块链厂商而言,稳中求胜才是关键词,在平稳发展的基调下,产业洗牌也悄无声息的到来。 从产业总体而言,在经过了接近3年的快速发展后&…

解决vitepress首次加载慢(从40秒到1秒的倔强)

前言:在艰难的博客系统升级之路 这篇博客中我有提到vitepress首次加载非常耗时的问题,之前也在网上搜索时发现也有很多人说这个“问题”,但是在折腾了这么一段时间后,发现这也许本身不是vitepress的问题,而是我的启动方…

【Java多线程】线程中几个常见的属性以及状态

目录 Thread的几个常见属性 1、Id 2、Name名称 3、State状态 4、Priority优先级 5、Daemon后台线程 6、Alive存活 Thread的几个常见属性 1、Id ID 是线程的唯一标识,由系统自动分配,不同线程不会重复。 2、Name名称 用户定义的名称。该名称在各种…

Arduino程序简单入门

文章目录 一、结构1.1 setup()1.2 loop() 二、结构控制2.1 if2.2 if...else2.3 switch case2.4 for2.5 while2.6 do...while2.7 break2.8 continue2.9 return2.10 goto 三、扩展语法3.1 ;(分号)3.2 {}(花括号)3.3 //(单…

百度地图接口 | 实现校验收货地址是否超出配送范围

目录 1. 环境准备 2. 代码开发 2.1 application.yml 2.2 OrderServiceImpl 🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎Py…

数据结构-双指针法

介绍 双指针法是一种可以在O(n)时间复杂度内解决数组、链表、字符串等数据结构相关的问题的方法。核心思想为使用两个指针在不同位置遍历数组或链表,从而实现特定操作。 常见的双指针法有 1.快慢指针:快指针每次移动两步&…

AI:131- 法律文件图像中的隐含信息挖掘与敲诈勒索检测

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

天锐绿盾|防泄密系统|计算机文件数据\资料安全管理软件

“天锐绿盾”似乎是一款专注于防泄密和计算机文件数据/资料安全管理的软件。在信息安全日益受到重视的今天,这样的软件对于保护企业的核心数据资产和防止敏感信息泄露至关重要。 通用地址:www.drhchina.com 防泄密系统的主要功能通常包括: 文…

[前端开发] 常见的 HTML CSS JavaScript 事件

代码示例指路 常见的 HTML、CSS、JavaScript 事件代码示例 常见的 HTML CSS JavaScript 事件 事件HTML 事件鼠标事件键盘事件表单事件 JavaScript 事件对象事件代理(事件委托) 事件 在 Web 开发中,事件是用户与网页交互的重要方式之一。通过…

LeetCode405. Convert a Number to Hexadecimal

文章目录 一、题目二、题解 一、题目 Given an integer num, return a string representing its hexadecimal representation. For negative integers, two’s complement method is used. All the letters in the answer string should be lowercase characters, and there …