1.实验目的:
- 掌握数据表的创建,修改,删除的方法
- 熟悉常用数据类型
- 掌握索引的创建,删除。通过实验理解唯一索引,聚簇索引
- 掌握视图的概念,视图的创建和删除
- 掌握利用视图进行数据查询的方法
- 掌握SQL语句灵活的查询功能
- 熟悉SQL语言的基本查询,包括单表查询,分组统计查询,连接查询
- 掌握SQL的复杂查询,包括嵌套查询,集合查询
- 理解和掌握SQL查询语句各个子句的特点和作用,按照SQL语言规范写出具体的SQL查询语句并调试通过
- 掌握SQL语句的数据操纵功能
- 掌握SQL语言的数据插入,修改,删除操作
- 掌握与嵌套查询相结合的插入,删除,修改数据的SQL语句
2.实验步骤:
- 按实验内容要求完成各项操作
- 根据题目要求给出解决方案
- 提交实验报告
3.实验内容:
- 数据表的建立
建立s,c,sc三张数据表,并给每个属性定义合适数据类型,声明主外码
2.数据表的修改
给c表增加字段teacher
3.数据表的删除
建立一个表名为test的表,并删除
4.数据表的索引建立和删除
为s表的sname字段建立唯一索引
为s表的sdept建立聚簇索引
CREATE CLUSTER INDEX S ON DEPT
删除s表的唯一索引
5.查询学生的学号和所在系
6)查询管理系的学生所选修的课程和成绩
7)统计有学生选修的课程门数。
8)统计胡老师所授每门课程的学生平均成绩。
9)统计所有选修人数多于20的课程号和选课人数,并按人数降序排列,若人数相等,则按课程号升序排列。
10)检索所有缓考即成绩为NULL的同学学号、姓名和缓考课程号。
11)检索‘OS’课成绩高于该课平均成绩的同学学号。
12)检索计算机系女生的学号和姓名。
13)检索全体学生都选修的课程号和课程名。
14)检索未选修任何课程的学生学号。
15)检索WANG老师所授课程号、课程名
16)检索所有姓LI同学的基本信息。
17)检索选修‘DATABASE’课程的学生学号。
18)检索年龄介于LIPING同学年龄和28岁之间的学生基本信息。
19)检索至少选修了一门TIAN老师所授课程的学生姓名、学号。
20)视图的建立、删除和查询
建立一个计算机系学生基本信息视图CSV(SNO,SNAME,SEX,AGE)
在CSV视图中查询1983年以后出生的计算机系学生基本信息。
建立一个计算机系学生成绩视图JSGV(SNO,CNO,GRADE)。
在JSGV中查询计算机系学生选课多于3门的学生学号。
JSGV中查询计算机系学生2号课不及格的学生学号和成绩。
删除CSV视图
21)在学生表中插入一新生信息(‘200213808’,’HUJING’,’女’,22,’计算机’)
22)新建一个学生平均成绩表spjcj,将学生的平均成绩插入到spjcj表中
23)删除数据库中学号为’200213801’的退学学生有关信息。
24)将计算机系学生2号课成绩全部提高5%。
25)删除没有成绩的学生选课记录
4.实验总结
通过本次实验,使我对掌握数据表的创建,修改,删除,熟悉常用数据类型,索引的创建,删除,唯一索引,聚簇索引,视图的概念,视图的创建和删除,利用视图进行数据查询的方法,SQL语句灵活的查询功能,SQL语言的基本查询,包括单表查询,分组统计查询,连接查询,SQL的复杂查询,包括嵌套查询,集合查询,SQL查询语句各个子句的特点和作用,按照SQL语言规范写出具体的SQL查询语句并调试通过,SQL语句的数据操纵功能,SQL语言的数据插入,修改,删除操作,嵌套查询相结合的插入,删除,修改数据的SQL语句有了更加深入的理解与认识,也能熟练的使用它们。
5.思考题
1)聚簇索引和其他索引有什么区别?
聚簇索引的查询速度通常比其他索引要快,因为它直接存储了数据行,减少了磁盘I/O的次数。但是聚簇索引的更新和插入操作可能会比其他索引慢,因为数据行的顺序需要重新调整。另外,聚簇索引只能有一个,而其他索引可以有多个。因此,在设计数据库索引时,需要根据具体的场景和需求选择合适的索引类型。
2)通过实验,请讨论视图的作用?
- 简化复杂的查询
- 数据安全性
- 数据独立性
- 简化数据操作
- 提高性能
3)举例说明在分组统计中,WHERE和HAVING有何区别
WHERE 子句用于筛选原始数据行,而 HAVING 子句用于筛选分组后的结果集。在分组统计中,通常先使用 WHERE 进行数据行的筛选,然后使用 GROUP BY 进行分组,最后使用 HAVING 对分组后的结果进行筛选。
例如:假设有一个学生成绩表,需要筛选出数学成绩大于 80 的学生数据,可以使用 WHERE 子句进行筛选;假设有一个学生成绩表,需要统计每个班级数学平均成绩大于 80 的班级,可以使用 HAVING 子句进行筛选。
4)请分析相干子查询和不相干子查询的区别
相干子查询和不相干子查询的区别在于子查询与主查询之间的关联性。相干子查询依赖于主查询的数据,而不相干子查询是独立的查询。在实际应用中,根据具体的需求和数据关系,选择合适的子查询类型可以提高查询效率和准确性。
5)请分析数据库模式修改语句和数据更新语句的区别。
数据库模式修改语句用于定义数据库结构,包括创建、修改和删除数据库对象;数据更新语句用于对数据库中的实际数据进行操作,包括插入、更新和删除数据。两者在功能和影响范围上有所不同,但都是 SQL 中重要的操作类型,用于管理数据库的结构和数据。