当前位置:文档之家› 数据库SQL实验题目(14-15-1)解析

数据库SQL实验题目(14-15-1)解析

实验一数据定义操作●实验目的1.掌握数据库和表的基础知识2.掌握使用创建数据库和表的方法3.掌握数据库和表的修改、查看、删除等基本操作方法●实验内容和要求一、数据库的创建在开始菜单中,启动SQl Server 程序中的“SQL Server Management Studio”,在对象资源管理器窗口中,右键单击“数据库”,选择“新建数据库”,创建成绩管理数据库Grademanager,要求如下表所示:Grademanager数据库参数表二、表的创建、查看、修改和删除1.表的创建在Grademanager数据库中,右键单击“表”,选择“新建表”命令,创建如下表所示的表:(1)Student表的表结构特别注意:为属性Ssex设置约束,需选中属性Ssex行,然后单击菜单中的“表设计器”,选择“CHECK 约束”命令,然后按照图1进行设置。

图1 设置性别的约束(2)Course表(课程名称表)的表结构(3)SC表(成绩表)的表结构特别注意:①为属性Degree 约束,可参照属性Ssex进行设置,“CHECK约束对话框”中的表达式为Degree>=1 And Degree<=100②为SC表设置外键Sno和Cno的方法:右键单击表SC,选择“设计”命令,然后选择菜单“表设计器”中的“关系”命令,打开“外键关系”窗口,选择“添加”按钮,然后单击“表和列规范”后的按钮,按照图2进行设置,即可将SC表中的Cno属性设置为外键。

按照相同的方法,将属性Sno也设置为外键。

图2为SC表设置外键Cno2.向上述表中输入如下数据记录学生关系表Student (右键单击表Student ,选择“编辑前200行”)课程关系表Course 成绩表SC3.修改表结构(找到操作的方法即可,不需要真正地修改表中的属性) (1)向student 表中增加“入学时间”列,其数据类型为日期型 (2)将student表中的sdept 字段长度改为20 (3)将student 表中的Speciality 字段删除思考题1. SQL Server 的数据库文件有几种?扩展名分别是什么? 2. 如何实现数据库的备份和还原?2.在定义基本表语句时,NOT NULL 参数的作用是什么? 3.主码可以建立在“值可以为NULL ”的列上吗?实验二 简单查询● 实验目的1. 掌握SELECT 语句的基本用法2. 使用WHERE 子句进行有条件的查询3. 掌握使用IN 和NOT IN ,BETWEEN …AND 和NOT BETWEEN …AND 来缩小查询范围的方法4. 掌握聚集函数的使用方法5. 利用LIKE 子句实现字符串匹配查询6. 利用ORDER BY 子句对查询结果排序7. 利用GROUP BY 子句对查询结果分组● 实验内容和要求一、表结构修改1.在实验一的所建立的数据库中增加Teacher 表,结构如下:2.在实验一的所建立的数据库中增加Teaching 表,表结构如下: Teaching 表(授课表)的表结构3.向上述两表中输入如下数据记录教师表Teacher 授课表Teaching二、完成下面查询 1.查询所有男生信息2.查询年龄大于24岁的女生学号和姓名3.查询所有教师的Tname、Tdept4.查询“电子商务”专业的学生姓名、性别和出生日期5.查询成绩低于90分的学生学号及课号,并按成绩降序排列6.查询Student表中所有的系名7.查询“C01”课程的开课学期8.查询成绩在80分至90之间的学生学号及课号9.统计有学生选修的课程门数10.查询成绩为77,88或99的记录11.计算“C02”课程的平均成绩12.输出有成绩的学生学号13.查询所有姓“刘”的学生信息14.统计输出各系学生的人数15.查询选修了“C03”课程和学生的学号及其成绩,查询结果按分数的降序排列16.查询各个课程号及相应的选课人数,并为选课人数取别名为“人数”17.统计每门课程的选课人数和最高分,并为选课人数和最高分分别取别名为“人数”、“最高分”18.统计每个学生的选课门数和考试总成绩,并为选课门数和总成绩分别取别名为“门数”、“总成绩”,并按选课门数降序排列。

思考题1.聚集函数能否直接使用在:SELECT子句、HAVING子句、WHERE子句、GROUP BY子句中?2.关键字ALL和DISTINCT有什么不同的含义?3.SELECT语句中用于表示模糊查询的通配符有几种?含义分别是什么?4.利用BETWEEN…AND表示的数据范围能否用其他方法表示?怎样表示?如:score between 80 and 90 还可以怎么表示?实验三复杂查询●实验目的1.掌握连接查询和嵌套查询操作2.能灵活应用SELECT语句解决复杂的查询问题●实验内容和要求一、连接查询1.查询女学生的学生学号及总成绩2.查询李勇同学所选的课程号及成绩3.查询李新老师所授课程的课程名称4.查询女教师所授课程的课程号及课程名称5.查询姓“王”的学生所学的课程名称6.查询选修“数据库”课程且成绩在80到90之间的学生学号及成绩7.查询选修“C02”课程的学生的平均年龄8.查询学习课程名为“数学”的学生学号和姓名9.查询“钱军”教师任课的课程号,选修其课程的学生的学号和成绩10.查询在第3学期所开课程的课程名称,选修其课程的学生学号和成绩二、嵌套查询1.查询至少选修两门课程的男学生姓名2.查询与李勇同一个系的其他同学姓名3.查询学号比刘晨同学大,而年龄比他小的学生姓名4.查询年龄大于所有女同学的男同学的姓名及系别5.查询成绩比该课程平均成绩高的学生的学号、课程号及成绩6.查询不讲授“C01”课的教师姓名7.查询没有选修“C02”课程的学生学号及姓名8.查询选修了“数据库”课程的学生学号、姓名及系别9.查询选修了全部课程的学生姓名10.分别用子查询和连接查询,求“C02”号课程在80分以上的学生信息●思考题1.使用存在量词NOT EXISTS的嵌套查询时,何时外层查询的WHERE条件为真,何时为假?2.DROP命令和DELETE命令的本质区别是什么?实验四数据更新、索引及视图操作●实验目的1.掌握利用INSERT命令实现对表数据的插入操作2.掌握利用UPDATE命令实现对表数据的修改操作3.掌握利用DELETE命令实现对表数据的删除操作4.掌握索引的创建和使用5.掌握视图的创建和删除●实验内容和要求一、数据更新1.向Student表中插入记录('20050203','张静','女','1981-3-21','CS' ,'电子商务')2.插入学号为20050302,姓名为李四学生信息3.把男学生记录保存到表TS中(提示:利用select into 命令可备份数据库中的表格式:select * into 新表名from 原表名where 子句;)4.将学号为20050202的学生姓名改为张华,系别改为“CS”,专业改为“多媒体技术”5.将20050201学生选修“C03”号课程的成绩改为该课的平均成绩6.把女同学的成绩提高5%7.把选修了“数据库”课程学生的成绩全改为空值(NULL)8.删除学号为20050302的学生记录9.把“刘晨”同学的选课记录全部删除10.删除电子商务专业所有学生的选课记录二、索引的创建与使用1.用索引管理器创建SC表的索引IX_XS_KC。

(1)选择要创建索引的数据库文件夹,并在右边的对象窗口中选择并打开其中的“表”对象。

(2)选择所要创建索引的SC表,右键单击该表,在弹出的快捷菜单中选择“设计”命令,然后在工具栏中单击“管理索引和键”按钮,打开“索引和键”窗口。

(3)单击其中的“添加”按钮,创建新的索引,并为其设置相应的属性。

为SC表创建一个基于“课程号”列和“成绩”列的索引IX_XS_KC,其中课程号列按升序排列,成绩列按降序排列。

设置完成后,如图3所示。

图3 创建索引IX_XS_KC2.强制使用刚才创建的索引查询数据。

在查询命令窗口中输入以下SQL查询命令并执行:SELECT SNO,CNO,DEGREEFROM SCWITH (INDEX (IX_XS_KC))WHERE DEGREE>=60观察一下显示出来的数据是否有序。

3.利用SQL命令实现下列操作:(1)为Student表创建一个名为S_dept的索引,以系别排序(2)为Teacher表创建一个名为T_name的聚集索引,以Tname降序排序。

命令格式:create clustered index on 表名(列名1 顺序,列名2 顺序) (3)删除S_dept索引。

命令格式:drop index 表名.索引名或drop index 索引名on 表名三、视图的创建与使用1.创建一个简单视图view1,查询“计算机系”学生的信息2.创建一个简单视图view2,统计每门课程的选课人数和最高分3.创建一个复杂视图view3,查询与“张立”同学同一系别的学生信息4.删除视图View3思考题1.利用INSERT、UPDATE和DELETE命令可以同时对多个表操作吗?2. 使用索引为什么能提高查询速度?3.索引经常被建立在哪些字段上?4.聚集索引与其他索引有什么不同?实验五存储过程、函数、触发器及游标操作●实验目的1.掌握compute by的使用2.掌握变量的定义和使用方法3.掌握存储过程的定义和执行方法4.掌握触发器的定义方法5.掌握函数的定义和调用方法6.掌握游标的定义和使用方法(提示:以下操作全部基于实验一创建的Grademanager数据库)●实验内容和要求一、使用compute by完成下列操作1.显示所有学生的成绩,并汇总每个学生的总分。

2.显示所有学生的信息,并汇总男女学生的人数。

二、存储过程1.创建一个名为Query_student的存储过程,该存储过程的功能是根据学号查询学生表中某一学生的学号、姓名、性别及出生日期。

执行存储过程Query_student,查询学号为“20050301”的学生的学号、姓名、性别及出生日期。

写出完成此功能的SQL命令。

2.创建存储过程sm_score,用于求指定学号(输入参数)的学生的总成绩(输出参数)。

执行该存储过程,指定学号为“20050101 ”。

3.创建并执行存储过程count_sno,用于求所有学生人数,通过参数返回学生人数。

4.删除存储过程count_sno。

5.创建一个向课程表中插入一门新课程的存储过程Insert_course,该存储过程需要两个参数,分别用来传递课程号、课程名;执行存储过程Insert_course,向课程表Course中插入一门新课程(’0807011’,’Flash动画设计’)。

相关主题