当前位置: 首页 > ops >正文

数据库大学实验一

实验目的:
理解和掌握数据库DDL语言,能够熟练地使用SQL DDL语句创建、修改和删除数据库、模式和基本表。

实验内容:
(1)理解和掌握SQL DDL语句的语法,特别是各种参数的具体含义和使用方法;使用SQL语句创建、修改和删除数据库、模式和基本表。掌握SQL语句常见语法错误的调试方法。

(2)针对XSGL数据库设计各种单表查询SQL语句、分组统计查询语句;设计单个表针对自身的连接查询,设计多个表的连接查询。理解和掌握SQL查询语句各个子句的特点和作用,按照SQL程序设计规范写出具体的SQL查询语句,并调试通过。

(3)针对XSGL数据库,正确分析用户查询要求.设计各种嵌套查询和集合查询。

(4)针对 TPC - H 数据库设计单元组插入、批量数据插入、修改数据和删除数据等 SQL 语句。理解和掌握 INSERT 、 UPDATE 和 DELETE 语法结构的各个组成成分,结合嵌套 SQL 子查询,分别设计几种不同形式的插入、修改和删除数据的语句,并调试成功。

(5)针对给定的数据库模式,以及相应的应用需求,创建视图和带 WITHCHECKOPTION 的视图,并验证视图 WITHCHECKOPTION 选项的有效性。
理解和掌握视图消解执行原理,掌握可更新视图和不可更新视图的区别。

实验步骤:
1.创建一个计算机系学生情况的视图Sub_T。

CREATE VIEW Sub_T
AS
SELECT *
FROM Student
WHERE Sdept = ‘CS’;

SELECT * FROM Sub_T;

2.写出创建学生表Student 的SQL语句。

CREATE TABLE Student(
Sno VARCHAR(15) PRIMARY KEY,
Sname VARCHAR(5),
Ssex VARCHAR(2),
Sage INT,
Sdept VARCHAR(2)
);

3.创建一学生情况视图S_SC_C(包括学号、姓名、课程名及成绩)。

CREATE VIEW S_SC_C
AS
SELECT Student.Sno, Student.Sname, Course.Cname, SC.Grade
FROM Student, SC, Course
WHERE Student.Sno = SC.Sno AND Course.Cno = SC.Cno;

SELECT * FROM S_SC_C;

4.创建一学生平均成绩视图S_Avg。

CREATE VIEW S_Avg
AS
SELECT Sno,AVG(Grade)
FROM SC
GROUP BY Sno;

SELECT * FROM S_Avg;

5.为SC表在SNo和CNo上建立唯一索引。

CREATE UNIQUE INDEX SC_Sno_Cno ON SC (Sno, Cno);

6.为学生表S在SNo上建立聚集索引。

CREATE INDEX S_SNo ON Student(Sno) USING BTREE;

7.在S表中添加一条学生记录(学号:S8,姓名:张三,性别:男,年龄:20,系别:信息)

INSERT INTO Student
VALUES(‘S8’,‘张三’,‘男’,20,‘IS’);

SELECT * FROM Student WHERE Sname=‘张三’;

8.将数据库这门课的学分数修改为5

UPDATE Course
SET Ccredit = 5
WHERE Cname = ‘数据库’;

SELECT * FROM Course
WHERE Cname = ‘数据库’;

9.删除选修了C1课程的所有选课记录

DELETE FROM SC
WHERE Cno = ‘C1’;

SELECT * FROM SC WHERE Cno=‘C1’;

10.将软件学院选修了C2课程的学生的该门成绩增加10分

SELECT Grade,Sno FROM SC
WHERE Cno=’C2’ AND Sno IN(
SELECT Sno FROM Student WHERE Sdept =’CS’);

UPDATE SC
SET Grade = Grade + 10
WHERE Cno = ‘C2’ AND Sno IN(
SELECT Sno
FROM Student
WHERE Sdept = ‘CS’
);

SELECT Grade,Sno FROM SC
WHERE Cno=’C2’ AND Sno IN(
SELECT Sno FROM Student WHERE Sdept =’CS’);

11.在选课表中删除学生张三所选修的全部课程

DELETE FROM SC
WHERE Sno IN(
SELECT Sno
FROM Student
WHERE Sname = ‘张三’
);

SELECT * FROM SC
WHERE Sno IN(
SELECT Sno
FROM Student
WHERE Sname = ‘张三’
);

12.查询年龄大于18岁的男生的学号与姓名

SELECT Sno, Sname
FROM Student
WHERE Sage>18 AND Ssex = ‘男’;

13.查询所有姓张的学生的学号和姓名

SELECT Sno, Sname
FROM Student
WHERE Sname LIKE ‘张%’;

14.查询数据库这门课的先修课程号

SELECT Cpno
FROM Course
WHERE Cname = ‘数据库’;

15.统计选修课C1课程的学生人数

SELECT COUNT(*)
FROM SC
WHERE Cno = ‘C1’;

16.查询选修了C1课程或者C2课程的学生的学号

SELECT DISTINCT Sno
FROM SC
WHERE Cno IN (‘C1’,‘C2’);

17.查询跟刘晨在同一个系学习的学生的学号和姓名

SELECT Sno, Sname
FROM Student
WHERE Sdept IN(
SELECT Sdept
FROM Student
WHERE Sname = ‘刘晨’
);

18.查询至少有一门课成绩大于70分的学生的学号与姓名

SELECT DISTINCT Sno, Sname
FROM Student
WHERE Sno IN(
SELECT Sno
FROM SC
WHERE Grade > 70
);

19.查询既选修了C1课程又选修了C2课程的学生的学号

SELECT Sno
FROM SC
WHERE Cno = ‘C1’ AND Sno IN(
SELECT Sno
FROM SC
WHERE Cno = ‘C2’
);

20.查询所选课程成绩全部大于70分的学生的学号

SELECT DISTINCT Sno
FROM SC
WHERE Sno NOT IN(
SELECT Sno
FROM SC
WHERE Grade <= 70
);

21.查询选修了全部课程的学生的学号和姓名

SELECT Sno,Sname
FROM Student
WHERE NOT EXISTS (
SELECT * FROM Course WHERE NOT EXISTS (
SELECT * FROM SC
WHERE SC.Sno=Student.Sno AND Cno=Course.Cno
));

22.查询至少选修了2020003号学生所选的全部课程的学生的学号与姓名

SELECT DISTINCT SCX.Sno, Student.Sname
FROM SC SCX, Student
WHERE SCX.Sno = Student.Sno AND NOT EXISTS (
SELECT *
FROM SC SCY
WHERE SCY.Sno = ‘201215122’ AND NOT EXISTS(
SELECT *
FROM SC SCZ
WHERE SCZ.Sno = SCX.Sno AND SCZ.Cno = SCY.Cno
));

实验结果(附数据和图表):

创建一个计算机系学生情况的视图Sub_T。
在这里插入图片描述
1.写出创建学生表Student 的SQL语句。
在这里插入图片描述

2.创建一学生情况视图S_SC_C(包括学号、姓名、课程名及成绩)。在这里插入图片描述

3.创建一学生平均成绩视图S_Avg。在这里插入图片描述

4.为SC表在SNo和CNo上建立唯一索引。
在这里插入图片描述

5.为学生表S在SN上建立聚集索引。
在这里插入图片描述

6.在S表中添加一条学生记录(学号:S8,姓名:张三,性别:男,年龄:20,系别:信息)
在这里插入图片描述

7.将数据库这门课的学分数修改为5
在这里插入图片描述

8.删除选修了C1课程的所有选课记录在这里插入图片描述

9.将软件学院选修了C2课程的学生的该门成绩增加10分在这里插入图片描述

10.在选课表中删除学生张三所选修的全部课程
在这里插入图片描述

11.查询年龄大于18岁的男生的学号与姓名,将代码与结果截屏提交到答案中在这里插入图片描述

12.查询所有姓张的学生的学号和姓名,将代码与结果截屏提交到答案中
在这里插入图片描述

13.查询数据库这门课的先修课程号,将代码与结果截屏提交到答案中在这里插入图片描述

14.统计选修课C1课程的学生人数,将代码与结果截屏提交到答案中
在这里插入图片描述

15.查询选修了C1课程或者C2课程的学生的学号
在这里插入图片描述

16.查询跟李四在同一个系学习的学生的学号和姓名
在这里插入图片描述

17.查询至少有一门课成绩大于70分的学生的学号与姓名在这里插入图片描述

18.查询既选修了C1课程又选修了C2课程的学生的学号在这里插入图片描述

19.查询所选课程成绩全部大于70分的学生的学号
在这里插入图片描述

20.查询选修了全部课程的学生的学号和姓名
在这里插入图片描述

21.查询至少选修了2020003号学生所选的全部课程的学生的学号与姓名
在这里插入图片描述

实验结果分析及结论:

本次实验主要对数据库,模式,和基本表进行了创建,删除,修改的操作

实验心得体会和建议:

本次实验通过实践学习了书本上对于数据库的DDL语句的语法、使用SQL 语句创建、修改和删除数据库的语句,SQL 查询语句,SQL嵌套查询和集合查询等各种高级查询,SQL语句对数据库进行数据的插入、修改、删除操作,创建视图和带WITH CHECK OPTION的视图,尤其是掌握索引设计原则和技巧,能够创建合适的索引以提高数据库查询,收获巨大。

实验评价及结论:

实验指导老师签字:

http://www.xdnf.cn/news/9288.html

相关文章:

  • 投影机三色光源和单色光源实拍对比:一场视觉体验的终极较量
  • 知识图谱系列(4):查询与推理技术
  • 第四十七篇-Tesla P40+Qwen3-30B-A3B部署与测试
  • 什么是PLM软件?离散制造业和流程制造业的主流PLM介绍、国产PLM应用案例
  • 5月27日星期二今日早报简报微语报早读
  • RuoYi前后端分离框架集成Jasypt实现配置信息加密
  • Kubernetes简介及常用命令
  • 高效大电流缓启动电路设计
  • Manus,AGI 要来临了吗?
  • 电子电路:欧姆定律和电流量子化有关系吗?
  • 深入剖析机器学习之波士顿房价案例
  • 易境通海外仓系统:如何提高仓库尾程派送环节效率?
  • 「Python教案」循环语句的使用
  • 离子风机如何保障汽车电子智造组装车间良品率
  • C语言数据存储
  • 操作系统——第四章(文件共享、保护、层级结构、系统布局..)
  • Docker+MobaXterm+x11实现容器UI界面转发本地
  • Python map()函数详解:批量数据处理的瑞士军刀
  • STM32 Keil工程搭建 (手动搭建)流程 2025年5月27日07:42:09
  • STM32之IIC(重点)和OLED屏
  • Spring Boot整合JWT实现认证与授权
  • screen开启和删除session会话
  • JSONP跨域原理全解析
  • OpenCV 图像像素的读写操作
  • SNMPv3基础概念
  • 02_MQ常见问题
  • 科研课题验收测试报告:用途与类型深度解析~
  • DFS入门刷题c++
  • 工业级UART数据转发芯片EU104 低功耗多串口芯片 1主4从多串口转发
  • 26、请求处理-【源码分析】-Rest映射及源码解析