数据库原理及应用mysql版陈业斌实验四

🏝️专栏:Mysql_猫咪-9527的博客-CSDN博客
🌅主页:猫咪-9527-CSDN博客 

“欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。”

目录

实验四索引与视图 

1.实验数据如下

student 表(学生表)

course 表(课程表)

teacher 表(教师表)

score 表(成绩表)

2. 插入数据

student 表中的数据

course 表中的数据

teacher 表中的数据

score 表中的数据

4-1 创建唯一索引 idx_snme 并按姓名升序排列

1.修改黎明为张伟(4.2删除索引后记得改回来)

2.不建立唯一索引,建立普通索引

3.删除一条姓名为黎明的数据(4.2记得添加回来)

4-2 删除索引 idx_snme

1.接4-1方法1 

 2.接4-1方法2

3.接4-2方法三 

4-3 创建联合索引 idx_sname_dept 在 sname 和 dept 字段上

4-4 在 course 表的 cname 字段上创建唯一索引 uk_cname

4-5 在 course 表的 cname 字段上创建前缀长度为4个字符的前缀索引pf_cname

4-6 在 course 表的 cname 字段上创建全文索引

4-7 创建计算机系学生的视图 student_cs

4-8 创建包含“学号”和“平均成绩”的视图 v_grade_avg

4-9 查询视图 v_grade_avg 中,平均成绩大于 90 分的学生信息

4-10 创建信息系学生的视图 v_information,并保证修改和插入操作时只有信息系的学生

4-11 修改视图 vinformation,使得修改和插入操作时只包含“学号”“姓名”“专业”字段

4-12 使用 INSERT 语句向视图 vinformation 中插入一条数据

实验四索引与视图 

实验目的:

通过实验进一步理解索引、视图的使用方法。

1.实验数据如下

student 表(学生表)
CREATE TABLE student (sno CHAR(5) PRIMARY KEY,snme VARCHAR(20) NOT NULL,        sdept VARCHAR(20) NOT NULL,       sclass CHAR(2) NOT NULL,          ssex CHAR(1),                     birthday DATE,                  totalcredit DECIMAL(4,1)          
);
course 表(课程表)
CREATE TABLE course (cno CHAR(3) PRIMARY KEY,cname VARCHAR(50),       ctime DECIMAL(3,0),          credit DECIMAL(3,1) 
);
teacher 表(教师表)
CREATE TABLE teacher (tno CHAR(6) PRIMARY KEY,          tname VARCHAR(20),               tsex CHAR(1),                    tdept VARCHAR(20)                 
);
score 表(成绩表)
CREATE TABLE score (sno CHAR(5),                      cno CHAR(3),                      tno CHAR(6),                     grade DECIMAL(5,1),              PRIMARY KEY (sno, cno, tno),      CONSTRAINT fk_sno FOREIGN KEY(sno) REFERENCES student(sno),CONSTRAINT fk_cno FOREIGN KEY(cno) REFERENCES course(cno),CONSTRAINT fk_tno FOREIGN KEY(tno) REFERENCES teacher(tno)
);

2. 插入数据

student 表中的数据
INSERT INTO student VALUES('96001', '马小燕', '计算机', '01', '女', '2000/01/02', 0);
INSERT INTO student VALUES('96002', '黎明', '计算机', '01', '男', '2000/03/05', 0);
INSERT INTO student VALUES('96003', '刘东明', '数学', '01', '男', '2000/10/05', 0);
INSERT INTO student VALUES('96004', '赵志勇', '信息', '02', '男', '2000/08/08', 0);
INSERT INTO student VALUES('97001', '马蓉', '数学', '02', '女', '2001/03/04', 0);
INSERT INTO student VALUES('97002', '李成功', '计算机', '01', '男', '2001/09/10', 0);
INSERT INTO student VALUES('97003', '黎明', '信息', '03', '女', '2002/02/08', 0);
INSERT INTO student VALUES('97004', '李丽', '计算机', '02', '女', '2002/01/05', 0);
INSERT INTO student VALUES('96005', '司马志明', '计算机', '02', '男', '2001/11/23', 0);
course 表中的数据
INSERT INTO course VALUES('001', '数学分析', 64, 4);
INSERT INTO course VALUES('002', '普通物理', 64, 4);
INSERT INTO course VALUES('003', '微机原理', 56, 3.5);
INSERT INTO course VALUES('004', '数据结构', 64, 4);
INSERT INTO course VALUES('005', '操作系统', 56, 3.5);
INSERT INTO course VALUES('006', '数据库原理', 56, 3.5);
INSERT INTO course VALUES('007', '编译原理', 48, 3);
INSERT INTO course VALUES('008', '程序设计', 32, 2);
teacher 表中的数据
INSERT INTO teacher VALUES('052501', '王成刚', '男', '计算机');
INSERT INTO teacher VALUES('052502', '李正科', '男', '计算机');
INSERT INTO teacher VALUES('052503', '严敏', '女', '数学');
INSERT INTO teacher VALUES('052504', '赵高', '男', '数学');
INSERT INTO teacher VALUES('052505', '刘玉兰', '女', '计算机');
INSERT INTO teacher VALUES('052506', '王成刚', '男', '信息');
INSERT INTO teacher VALUES('052507', '马悦', '女', '计算机');
score 表中的数据
INSERT INTO score VALUES('96001', '001', '052503', 77.5);
INSERT INTO score VALUES('96001', '003', '052501', 89);
INSERT INTO score VALUES('96001', '004', '052502', 86);
INSERT INTO score VALUES('96001', '005', '052505', 82);
INSERT INTO score VALUES('96002', '001', '052504', 88);
INSERT INTO score VALUES('96002', '003', '052502', 92.5);
INSERT INTO score VALUES('96002', '006', '052507', 90);
INSERT INTO score VALUES('96005', '004', '052502', 92);
INSERT INTO score VALUES('96005', '005', '052505', 90);
INSERT INTO score VALUES('96005', '006', '052505', 89);
INSERT INTO score VALUES('96005', '007', '052507', 78);
INSERT INTO score VALUES('96003', '001', '052504', 69);
INSERT INTO score VALUES('97001', '001', '052504', 96);
INSERT INTO score VALUES('97001', '008', '052505', 95);
INSERT INTO score VALUES('96004', '001', '052503', 87);
INSERT INTO score VALUES('96003', '003', '052501', 91);
INSERT INTO score VALUES('97002', '003', '052502', 91);
INSERT INTO score VALUES('97002', '004', '052505', NULL);
INSERT INTO score VALUES('97002', '006', '052507', 92);
INSERT INTO score VALUES('97004', '005', '052502', 90);
INSERT INTO score VALUES('97004', '006', '052501', 85);

 注:把上面的实验数据添加上再开始实验。

4-1 创建唯一索引 idx_snme 并按姓名升序排列

数据有冲突,建议一下三种方法:(三种方法任选一种) 

1.修改黎明为张伟(4.2删除索引后记得改回来)
update student set snme='张伟'  where snme='黎明' and sdept='信息';
create unique index idx_snme on student(snme);

 

2.不建立唯一索引,建立普通索引
create index idx_snme on student(snme);

3.删除一条姓名为黎明的数据(4.2记得添加回来)
delete from student where snme='黎明' and sdept='信息';
create unique index idx_snme on student(snme);

4-2 删除索引 idx_snme

1.接4-1方法1 
drop index idx_snme on student;
update student set snme='黎明'  where snme='张伟' and sdept='信息';

 2.接4-1方法2
drop index idx_snme on student;

3.接4-2方法三 
drop index idx_snme on student;
INSERT INTO student VALUES('97003', '黎明', '信息', '03', '女', '2002/02/08', 0);

4-3 创建联合索引 idx_sname_deptsnamedept 字段上

create index idx_snme_dept on student(snme,sdept);

4-4 在 course 表的 cname 字段上创建唯一索引 uk_cname

create unique index uk_cname on course(cname);

4-5 在 course 表的 cname 字段上创建前缀长度为4个字符的前缀索引pf_cname

create index pf_cname on course(cname(4));

4-6 在 course 表的 cname 字段上创建全文索引

create fulltext index ft_cname on course(cname);

4-7 创建计算机系学生的视图 student_cs

create view student_cs as select *from student where sdept='计算机';

4-8 创建包含“学号”和“平均成绩”的视图 v_grade_avg

create view v_garde_avg as select sno 学号,avg(grade)平均成绩 from score group by sno;

4-9 查询视图 v_grade_avg 中,平均成绩大于 90 分的学生信息

 select *from v_garde_avg where 平均成绩>90;

4-10 创建信息系学生的视图 v_information,并保证修改和插入操作时只有信息系的学生

create view v_information as select *from student where sdept='信息' 
with check option;

4-11 修改视图 vinformation,使得修改和插入操作时只包含“学号”“姓名”“专业”字段

当视图被创建后限制信息无法修改,只能删除视图后重新创建 

方法一: 

drop view v_information;
create view v_information as 
select sno 学号,snme 姓名, sdept 专业 from student where sdept='信息' 
with check option;

方法二:

create or replace view v_information as select sno,sname,sdept 
from student where sdept='信息' with check option;

4-12 使用 INSERT 语句向视图 vinformation 中插入一条数据

insert into student(sno,snme,sdept,sclass) values('98001','王立红','信息',02);

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

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

相关文章

[密码学实战]密评考试训练系统v1.0程序及密评参考题库(获取路径在文末)

[密码学实战]密评考试训练系统v1.0程序及密评参考题库 引言:密评考试的重要性与挑战 商用密码应用安全性评估(简称"密评") 作为我国密码领域的重要认证体系,已成为信息安全从业者的必备技能。根据国家密码管理局最新数据,截至2024年6月,全国仅有3000余人持有…

蓝桥杯练习题2

动态规划 动态规划三大题型:计数问题、最值问题、存在性问题; 【最小权值】-- 最值问题 【题目分析】 import java.util.Arrays; Arrays类中的一个方法:Arrays.fill(int[] m,int n) //给 int 类型(或者char类型/Long类型...)的数组全部空间…

【集群IP管理分配技术_DHCP】二、DHCP核心功能与技术实现

一、智能 IP 地址分配功能与技术实现​ 1.1 功能概述​ 智能 IP 地址分配是 DHCP 中间件的核心功能之一,它打破了传统 DHCP 固定的分配模式,能够根据网络的实时状态、客户端类型、接入位置等多种因素,动态且合理地分配 IP 地址。例如&#…

实现AWS Lambda函数安全地请求企业内部API返回数据

需要编写一个Lambda函数在AWS云上运行,它需要访问企业内部的API获取JSON格式的数据,企业有网关和防火墙,API有公司的okta身份认证,通过公司的域账号来授权访问,现在需要创建一个专用的域账号,让Lambda函数访问Secret Manager,来获取账号密码,然后通过配置访问公司内部A…

子网划分的学习

定长子网划分(Fixed-length Subnetting) 也叫做固定长度子网划分,是指在一个IP网络中,把网络划分成若干个大小相等的子网,每个子网的子网掩码长度是一样的。 一、定长子网划分的背景 在早期的IP地址分配中&#xff0…

3.QT-信号和槽|自定义槽函数|自定义信号}自定义的语法}带参数的信号和槽(C++)

信号和槽 Linux信号 Signal 系统内部的通知机制. 进程间通信的方式. 信号源:谁发的信号.信号的类型:哪种类别的信号信号的处理方式:注册信号处理函数,在信号被触发的时候自动调用执行. Qt中的信号和Linux中的信号,虽…

如何在 Element UI 中优雅地使用 `this.$loading` 显示和隐藏加载动画

如何在 Element UI 中优雅地使用 this.$loading 显示和隐藏加载动画 在现代 Web 应用开发中,用户体验至关重要。当执行耗时操作(如网络请求或数据处理)时,显示一个友好的加载动画可以让用户知道系统正在工作,而不是卡…

动态加载内容时selenium如何操作?

当处理动态加载的内容时,Selenium 是一个非常强大的工具,因为它可以模拟真实用户的浏览器行为,等待页面元素加载完成后再进行操作。以下是使用 Selenium 获取动态加载内容的详细步骤和代码示例。 一、安装 Selenium 和 ChromeDriver &#…

力扣第446场周赛

有事没赶上, 赛后模拟了一下, 分享一下我的解题思路和做题感受 1.执行指令后的得分 题目链接如下:力扣 给你两个数组:instructions 和 values,数组的长度均为 n。 你需要根据以下规则模拟一个过程: 从下标 i 0 的第一个指令开…

三维点拟合平面ransac c++

理论 平面的一般定义 在三维空间中,一个平面可以由两个要素唯一确定: 法向量 n(a,b,c):垂直于平面的方向 平面上一点 平面上任意一点 p(x,y,z) 满足: ( p − p 0 ) ∗ n 0 (p - p0) * n 0 (p−p0)∗n0 即 a ( x − x 0 ) …

基于LSTM-AutoEncoder的心电信号时间序列数据异常检测(PyTorch版)

心电信号(ECG)的异常检测对心血管疾病早期预警至关重要,但传统方法面临时序依赖建模不足与噪声敏感等问题。本文使用一种基于LSTM-AutoEncoder的深度时序异常检测框架,通过编码器-解码器结构捕捉心电信号的长期时空依赖特征&#…

Docker 部署 PostgreSQL 数据库

Docker 部署 PostgreSQL 数据库 基于 Docker 部署 PostgreSQL 数据库一、拉取 PostgreSQL 镜像二、运行 PostgreSQL 容器三、运行命令参数详解四、查看容器运行状态 基于 Docker 部署 PostgreSQL 数据库 一、拉取 PostgreSQL 镜像 首先,确保你的 Docker 环境已正确…

MySQL性能调优(四):MySQL的执行原理(MYSQL的查询成本)

文章目录 MySQL性能调优数据库设计优化查询优化配置参数调整硬件优化 1.MySQL的执行原理-21.1.MySQL的查询成本1.1.1.什么是成本1.1.2.单表查询的成本1.1.2.1.基于成本的优化步骤实战1. 根据搜索条件,找出所有可能使用的索引2. 计算全表扫描的代价3. 计算使用不同索…

用 Go 优雅地清理 HTML 并抵御 XSS——Bluemonday

1、背景与动机 只要你的服务接收并回显用户生成内容(UGC)——论坛帖子、评论、富文本邮件正文、Markdown 等——就必须考虑 XSS(Cross‑Site Scripting)攻击风险。浏览器在解析 HTML 时会执行脚本;如果不做清理&#…

Redis SCAN 命令的详细介绍

Redis SCAN 命令的详细介绍 以下是 Redis SCAN​ 命令的详细介绍,结合其核心特性、使用场景及底层原理进行综合说明: 工作原理图 : ​ 一、核心特性 非阻塞式迭代 通过游标(Cursor) 分批次遍历键,避免一次…

SpringBoot3集成MyBatis-Plus(解决Boot2升级Boot3)

总结:目前升级仅发现依赖有变更,其他目前未发现,如有发现,后续会继续更新 由于项目架构提升,以前开发的很多公共的组件,以及配置都需要升级,因此记录需要更改的配置(记录时间&#…

基于mybatis与PageHelper插件实现条件分页查询(3.19)

实现商品分页例子 需要先引入mybatis与pagehelper插件&#xff0c;在pom.xml里 <!-- Mybatis --> <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3&l…

Spring Bean 全方位指南:从作用域、生命周期到自动配置详解

目录 1. Bean 的作用域 1.1 singleton 1.2 prototype 1.3 request 1.4 session 1.5 application 1.5.1 servletContext 和 applicationContext 区别 2. Bean 的生命周期 2.1 详解初始化 2.1.1 Aware 接口回调 2.1.2 执行初始化方法 2.2 代码示例 2.3 源码 [面试题…

C++ (非类型参数)

模板除了定义类型参数之外&#xff0c;也可以在模板内定义非类型参数 非类型参数不是类型&#xff0c;而是值&#xff0c;比如&#xff1a;指针&#xff0c;整数&#xff0c;引用 非类型参数的用法&#xff1a; 1.整数常量&#xff1a;非类型参数最常见的形式是整数常量&…

短视频+直播商城系统源码全解析:音视频流、商品组件逻辑剖析

时下&#xff0c;无论是依托私域流量运营的品牌方&#xff0c;还是追求用户粘性与转化率的内容创作者&#xff0c;搭建一套完整的短视频直播商城系统源码&#xff0c;已成为提升用户体验、增加商业变现能力的关键。本文将围绕三大核心模块——音视频流技术架构、商品组件设计、…