河南大学数据库实验6

news/2025/3/28 14:20:06/

1.根据EDUC数据库,按如下要求设计视图:

1)基于单个表按投影操作定义视图。

举例:定义一个视图用以查看所有学生的学号、姓名和年龄。

2)基于单个表按选择操作定义视图。

举例:定义一个满足性别=‘男’的学生的所有信息的视图。

3)基于多个表根据连接操作定义视图。

举例:定义一个视图用以查看所有学生的学号、姓名、课名、成绩。

4)基于多个表根据嵌套查询定义视图。

举例1:定义一个比所有‘CS’系的学生年龄都小的学生的信息的视图

举例2:定义一个视图用以查看年龄大于该系平均年龄的学生的学号、姓名。

5)定义含有虚字段(即基本表中原本不存在的字段)的视图。

举例:定义一个视图用以查看所有学生的学号、姓名、出生年份。

2.根据EDUC数据库,分析如下问题:

1)举例说明,在定义的视图上进行查询、插入、更新和删除操作,分情况(查询、更新)讨论哪些操作可以成功完成,哪些不能成功完成,并分析原因。

2)举例说明,WITH CHECK OPTION语句的作用。

 

分别给出对应题目的代码及运行结果截图:

1、

1.根据EDUC数据库,按如下要求设计视图:

1)基于单个表按投影操作定义视图。

举例:定义一个视图用以查看所有学生的学号、姓名和年龄。

CREATE view student_1

AS

SELECT Sno,Sname,Sage

FROM student;

2)基于单个表按选择操作定义视图。

举例:定义一个满足性别=‘男’的学生的所有信息的视图。

CREATE VIEW student_2

AS

SELECT *

FROM student

WHERE Ssex='男';

3)基于多个表根据连接操作定义视图。

举例:定义一个视图用以查看所有学生的学号、姓名、课名、成绩。

CREATE VIEW student_3

AS

SELECT student.Sno,Sname,Cname,Grade

FROM sc,student,course

WHERE sc.Sno=student.Sno AND sc.Cno=course.Cno;

4)基于多个表根据嵌套查询定义视图。

举例1:定义一个比所有‘CS’系的学生年龄都小的学生的信息的视图

CREATE VIEW student_4

AS

SELECT *

FROM student

WHERE Sage<ALL

(SELECT Sage

FROM student

WHERE Sdept='CS');

举例2:定义一个视图用以查看年龄大于该系平均年龄的学生的学号、姓名。

CREATE VIEW student_5(Sno,Sname)

AS

SELECT Sno,Sname

FROM student s1

WHERE Sage>

(SELECT AVG(Sage)

FROM student s2

WHERE s1.Sdept=s2.Sdept);

5)定义含有虚字段(即基本表中原本不存在的字段)的视图。

举例:定义一个视图用以查看所有学生的学号、姓名、出生年份。

CREATE VIEW student_6(Sno,Sname,createdate)

AS

SELECT Sno,Sname,YEAR(NOW())-Sage

FROM student;

2、

2.根据EDUC数据库,分析如下问题:

1)举例说明,在定义的视图上进行查询、插入、更新和删除操作,分情况(查询、更新)讨论哪些操作可以成功完成,哪些不能成功完成,并分析原因。

一.1号视图

1.在1号视图中找出年龄大于19岁的学生。

SELECT *

FROM student_1

WHERE Sage>19;

2.在1号视图中插入一名学号‘01’,姓名‘真烦’,年龄‘100’的学生。

INSERT

INTO student_1

VALUES('01','真烦','100');

3.在1号视图中将‘01’号学生的姓名改为‘真麻烦’。

UPDATE student_1

SET Sname='真麻烦'

WHERE Sno='01';

4.在1号视图中删除学号为‘01’的学生。

DELETE

FROM student_1

WHERE Sno='01';

二.2号视图

1.在2号视图中查询‘CS’系的学生。

SELECT *

FROM student_2

WHERE Sdept='CS';

2.在2号视图中插入两名学生记录,信息分别为:‘01’,‘麻烦’,’男’,’10’,’IS’。和‘02’,‘坑人’,‘女’,‘111’,‘AS’。

INSERT

INTO student_2

VALUES('01','麻烦','男','10','IS'),

('02','坑人','女','111','AS');

3.在2号视图中,将01号学生的系名改为‘QW’。

UPDATE student_2

SET Sdept='QW'

WHERE Sno=01;

4.在2号视图中,删除01号学生记录。

DELETE

FROM student_2

WHERE Sno='01';

三.3号视图。

1.在3号视图中查询成绩大于85的学生的信息。

SELECT *

FROM student_3

WHERE Grade>85;

2.在3号视图中,插入一名学号为‘011’,姓名为‘累死了’,课名为‘数据库’,成绩为‘100’的学生。

INSERT

INTO student_3(Sno,Sname,Cname,Grade)

VALUES('011','累死了','数据库',100);

3.在3号视图中,将李勇的数学成绩改为90。

UPDATE student_3

SET Grade='90'

WHERE Sname='李勇' AND Cname='数学';

4.在3号视图中,删除李勇的信息系统成绩。

DELETE

FROM student_3

WHERE Sname='李勇' AND Cname='信息系统';

四.4号视图。

1.在4号视图中,查询所有男生的信息。

SELECT *

FROM student_4

WHERE Ssex='男';

2.在4号视图中,插入一名学号为‘007’,姓名为‘要死人了’,年龄为‘1’的学生记录。

INSERT

INTO student_4(Sno,Sname,Sage)

VALUES('007','要死人了',1);

3.在4号视图中,将王敏的系名改为‘QQ’。

UPDATE student_4

SET Sdept='QQ'

WHERE Sname='王敏';

4.在4号视图中,删除年龄小于10岁的学生的记录。

DELETE 

FROM student_4

WHERE Sage<10;

五.5号视图。

1.查询所有学生的记录。

SELECT *

FROM student_5;

2.插入‘007’‘王者’的学生记录。

INSERT

INTO student_5

VALUES('07','王者');

3.5号视图中,将所有学生的名字改为‘啊啊啊啊啊’。

UPDATE student_5

SET Sname='啊啊啊啊啊';

4.删除男生的记录。

DELETE 

FROM student_5

WHERE Sname='李勇';

六.6号视图。

1.查询出生年份在2005年及之前的学生记录。

SELECT *

FROM student_6

WHERE createdate<='2005';

2.插入一个‘08’,‘终于写完了’,‘1945’的学生记录。

INSERT 

INTO student_6

VALUES('08','终于写完了',1945);

3.将王者同学的出生日期改为1945。

UPDATE student_6

SET createdate='1945'

WHERE Sname='王者';

4.删除王者同学的纪录。

DELETE

FROM student_6

WHERE Sname='王者';

分情况讨论:

查询时:只有满足建立视图时的子查询的条件的记录才能被查询到。

更新时:基于单个表的投影、选择操作建立的视图可以更新。基于多个表的连接操作建立的视图无法插入和删除,可以修改。原因:插入和删除会同时涉及多个表,所以不行。基于多个表的嵌套查询定义的视图不能插入和删除,部分可插入。原因:涉及到多个表。定义含有虚字段的视图不能插入和更新,可以删除。原因:视图中含有不存在于表中的虚字段。

2)举例说明,WITH CHECK OPTION语句的作用。

定义一个和2号视图相同但带有with check option的视图。

CREATE VIEW student_22

AS

SELECT *

FROM student

WHERE Ssex='男'

WITH CHECK OPTION;

作用如下:

1.1、在2号视图上插入‘01’,‘麻烦’,’男’,’10’,’IS’。

INSERT

INTO student_2

VALUES('01','麻烦','男','10','IS');

2.1、在22号视图上插入‘02’,‘坑人’,‘女’,‘111’,‘AS’。

INSERT

INTO student_22

VALUES('02','坑人','男','111','AS');

1.2、在2号视图上插入‘03’,‘真累’,‘女’的学生记录。

INSERT

INTO student_2(Sno,Sname,Ssex)

VALUES('03','真累','女');

2.2、在22号视图上插入‘04’,‘真累’,‘女’的学生记录。

INSERT

INTO student_22(Sno,Sname,Ssex)

VALUES('04','真累','女');

1.3、在2号视图上插入‘05’,‘忙’的学生记录。

INSERT

INTO student_2(Sno,Sname)

VALUES('05','忙');

2.3、在22号视图上插入‘06’,‘忙’的学生记录

INSERT

INTO student_22(Sno,Sname)

VALUES('06','忙');

总结:

让我学会了基于各种条件建立视图。学会了在各种视图上进行增删改查操作。明白了with check option只在对视图插入操作时有影响。明白了修、删、查操作时,在条件上自动加子查询中的条件。尤其重要的是,让我学会了各种举例子的方法,我现在强的可怕,举例子的能力已经登峰造极!!!

问题:有好多例子实在是编不出来了。

解决方法:通过互联网的启发找到了举例子的灵感。

运用:

视图的作用:

1. 视图能够简化用户(程序员)的操作。

2. 视图使用户(程序员)能以多种角度看待同一数据。

3. 视图对重构数据库提供了一定程度的逻辑独立性 。

4. 视图能够对机密数据提供安全保护。

5. 适当的利用视图可以更清晰的表达查询。

举例:

  1. 基于书籍表定义一个视图用于查看书价大于11元的书籍信息。

CREATE VIEW b_1

AS

SELECT *

FROM b

WHERE Price>11

WITH CHECK OPTION;

  1. 在1号书籍视图中查看所有的书的信息。

SELECT *

FROM b_1;

  1. 在1号书籍视图中查看最贵的书的信息。

SELECT *

FROM b_1

WHERE Price=

(SELECT MAX(Price)

FROM b_1);

  1. 在1号书籍视图中插入一本书号为04,书名为‘啊啊烦’,书价为‘100’的书的记录。

INSERT

INTO b_1(Bno,Bname,Price)

VALUES('04','啊啊烦','100');

  1. 在1号书籍视图中将‘B1’号图书的价格增加100。

UPDATE b_1

SET Price=Price+100

WHERE Bno='B1';

  1. 在1号书籍视图中删除‘B5’号图书的记录。

DELETE

FROM b_1

WHERE Bno='B5';

 


http://www.ppmy.cn/news/1582827.html

相关文章

GEE:awesome-gee-community-catalog(一个开源数据集分享网站)

作者&#xff1a;CSDN _养乐多_ 本文将分享一个分享地理空间数据集的网站&#xff08;awesome-gee-community-catalog&#xff09;。该网站旨在与现有的 GEE 主目录完全兼容。它还被设计为尽可能开放和探索。目录按领域分组&#xff0c;例如属于人口和社会经济主题的数据集将…

PaddleSpeech-语音处理-安装【超简洁步骤】

介绍 PaddleSpeech‌是一个基于飞桨(PaddlePaddle)深度学习框架开发的开源语音处理工具集&#xff0c;集成了多种先进的语音处理技术&#xff0c;包括语音识别、语音合成、语音分类、声纹识别、语音翻译、标点恢复以及语音前端处理等‌ 参考资料 开源源码 paddlespeech docs P…

CSS中的伪类与伪元素:让样式更加灵活优雅

CSS中的伪类与伪元素&#xff1a;让样式更加灵活优雅 在CSS的世界里&#xff0c;伪类和伪元素是两个强大而优雅的特性&#xff0c;它们能让我们的样式代码更加简洁&#xff0c;同时提供更丰富的样式控制能力。今天&#xff0c;让我们深入了解这两个概念。 一、伪类&#xff08;…

5G通信协议相关

目录标题 3GPP协议历程4G&#xff1a;LTE&#xff08;Release 8 到 Release 13&#xff09;5G&#xff1a;5G NR&#xff08;Release 15 到 Release 18&#xff09; 5G NR 协议规范表5G占用频段采样频率、子载波间隔计算子载波、时隙与OFDM符号LTE 3GPP协议历程 4G&#xff1a…

数据结构-------栈

顺序栈&#xff1a; 一、数据结构定义 数据元素 DATATYPE typedef struct person {char name[32];char sex;int age;int score; } DATATYPE;顺序栈结构 SeqStack typedef struct list {DATATYPE *head; // 栈空间首地址int tlen; // 栈总容量&#xff08;total leng…

2025最新正版Autodesk 3ds Max 2022安装教程:从下载到中文环境配置全流程解析

一、软件简介 Autodesk 3ds Max 2022是一款专业的三维建模、动画和渲染软件&#xff0c;广泛应用于影视制作、游戏开发、建筑可视化等领域。其核心功能包括&#xff1a; 智能建模工具&#xff1a;增强的挤出、切片、对称修改器等高效渲染引擎&#xff1a;集成Arnold渲染器&am…

3.20-1ui自动化切换,登录退出

from selenium import webdriver #导入selenium模块中的webdriver from selenium.webdriver.common.action_chains import ActionChains import time dxwebdriver.Chrome() #创建一个驱动谷歌浏览器的对象# dx.get("https://www.baidu.com") #通过get打开页面…

【前端 vue 或者麦克风,智能语音识别和播放功能】

前端 vue 或者麦克风&#xff0c;智能语音识别和播放功能 1. 终端安装 npm install recordrtc2.引入 import RecordRTC from recordrtc3.html&#xff08;根据自己业务更改&#xff09; <div class"Page"><el-form ref"mainFormRef" class&qu…