1、数据库SQL实验题目14151实验一 数据定义操作 实验目的 1. 掌握数据库和表的基础知识 2. 掌握使用创建数据库和表的方法 3. 掌握数据库和表的修改、查看、删除等基本操作方法 实验内容和要求 一、数据库的创建 在开始菜单中,启动SQl Server 程序中的“SQL Server Management Studio”,在对象资源管理器窗口中,右键单击“数据库”,选择“新建数据库”,创建成绩管理数据库Grademanager,要求如下表所示: Grademanager数据库参数表 参数 参数值 参数 参数值 存储的数据文件路径 D:db 存储的日志文件路径 D:db 数据文件初始大小 5
2、MB 日志文件初始大小 2MB 数据文件最大值 20MB 日志文件最大值 15MB 数据文件增长量 原来10% 日志文件增长量 2MB 二、表的创建、查看、修改和删除 1表的创建 在Grademanager数据库中,右键单击“表”,选择“新建表”命令,创建如下表所示的表: (1)Student表的表结构 字段名称 数据类型 长度 精度 小数位数 是否允许Null值 说明Sno Char 10 0 0 否 学号,主码 Sname Varchar 8 0 0 是 姓名Ssex Char 2 0 0 是 性别,取值:男或女 Sbirthday Date 8 0 0 是 出生日期Sdept Char
3、16 0 0 是 系名Speciality Varchar 20 0 0 是 专业名特别注意:为属性Ssex设置约束,需选中属性Ssex行,然后单击菜单中的“表设计器”,选择“CHECK约束”命令,然后按照图1进行设置。图1 设置性别的约束(2)Course表(课程名称表)的表结构 字段名称 数据类型 长度 精度 小数位数 是否允许Null值 说明 Cno Char 5 0 0 否 课程号,主码 Cname Varchar 20 0 0 否 课程名(3)SC表(成绩表)的表结构 字段名称 数据类型 长度 精度 小数位数 是否允许Null值 说明 Sno Char 10 0 0 否 学号,外码
4、Cno Char 5 0 0 否 课程号,外码 Degree Decimal 5 5 1 是 成绩,0100之间 特别注意:为属性Degree 约束,可参照属性Ssex进行设置,“CHECK约束对话框”中的表达式为 Degree=1 And Degree=60 观察一下显示出来的数据是否有序。 3利用SQL命令实现下列操作: (1) 为Student表创建一个名为S_dept的索引,以系别排序 (2) 为Teacher表创建一个名为T_name的聚集索引,以Tname降序排序。命令格式:create clustered index on 表名(列名1 顺序,列名2 顺序)(3) 删除S_dep
5、t索引 。命令格式:drop index 表名.索引名 或 drop index 索引名 on 表名三、视图的创建与使用 1. 创建一个简单视图view1,查询“计算机系”学生的信息2. 创建一个简单视图view2,统计每门课程的选课人数和最高分3. 创建一个复杂视图view3,查询与“张立”同学同一系别的学生信息4. 删除视图View3 思考题 1利用INSERT、UPDATE和DELETE命令可以同时对多个表操作吗 2. 使用索引为什么能提高查询速度 3索引经常被建立在哪些字段上 4聚集索引与其他索引有什么不同实验五 存储过程、函数、触发器及游标操作 实验目的 1. 掌握compute b
6、y的使用2. 掌握变量的定义和使用方法3. 掌握存储过程的定义和执行方法4. 掌握触发器的定义方法5. 掌握函数的定义和调用方法6. 掌握游标的定义和使用方法(提示:以下操作全部基于实验一创建的Grademanager数据库) 实验内容和要求 一、 使用compute by完成下列操作1. 显示所有学生的成绩,并汇总每个学生的总分。2. 显示所有学生的信息,并汇总男女学生的人数。二、 存储过程1. 创建一个名为Query_student的存储过程,该存储过程的功能是根据学号查询学生表中某一学生的学号、姓名、性别及出生日期。执行存储过程Query_student,查询学号为“”的学生的学号、姓名
7、、性别及出生日期。写出完成此功能的SQL命令。2. 创建存储过程sm_score,用于求指定学号(输入参数)的学生的总成绩(输出参数)。执行该存储过程,指定学号为“ ”。3. 创建并执行存储过程count_sno,用于求所有学生人数,通过参数返回学生人数。4. 删除存储过程count_sno。5. 创建一个向课程表中插入一门新课程的存储过程Insert_course,该存储过程需要两个参数,分别用来传递课程号、课程名;执行存储过程Insert_course,向课程表Course中插入一门新课程(0807011,Flash动画设计)。6. 创建一个能向学生表中插入一条记录的存储过程Insert_
8、student,执行存储过程Insert_student,向学生表中插入一个新同学(,徐小花,女, 1987-08-25, IS,电子商务)。三、 触发器1. 在SC表创建一个INSERT触发器,如果插入一条选课信息时,学生的学号值在表S中不存在,则不执行插入操作,并提示用户。2. 使用insert语句向SC表中插入记录(, C01), 观察触发器INSERT_SC是否被执行。3. 在Teaching表中创建一个插入触发器insert_teaching,一旦发现待插入的教师号Tno在Teacher表中不存在,就发出警告信息并禁止插入。4. 创建一个当学生表中插入一个新同学时能自动列出全部同学学
9、生信息的触发器Display_trigger。5. 调用“存储过程部分”的第5题创建的存储过程Insert_student,向学生表中插入一新同学,新同学信息(,张丽丽,女, 1988-2-15, MA,数学),观察触发器Display_trigger是否被执行。6. 在成绩表SC中创建一个UPDATE触发器update_score,当修改成绩时,如果发现成绩小于0,则不执行修改操作,并提示用户。使用下面的SQL语句试图修改学生的成绩,观察触发器update_score是否被执行。 update SC set Degree=-30 where Sno=7. 课程表Course中创建一个DELE
10、TE触发器delete_course,如果待删除的课程在SC表中存在对应的选课记录,则不执行删除操作,并提示用户。使用下面的SQL语句试图删除C01课程信息,检查触发器delete_course是否被执行。 delete from Course where Cno=C018. 禁用update_score触发器9. 启用update_score触发器10. 删除update_score触发器四、 函数操作1、 创建一个标量值函数getavgscore以获取某门课平均成绩。2、 创建内联表值函数getscore以获取某个学生的成绩信息。五、 游标操作为“电子商务”专业的学生创建一个Scroll游标speciality_cursor,显示其学号、姓名、性别、出生日期,打开游标后按顺序执行以下操作:1、 提取结果集的第一行2、 提取结果集最后一行3、 提取上一行4、 提取下一行5、 提取所有行6、 关闭游标7、 删除游标
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1