《数据库系统及应用》期中试题
一、用Transact-SQL语句定义数据库
1、创建名为School的数据库,该数据库包含二个大小为2MB的数据文件(文件名为:<你
的姓名>_school_dat1和<你的姓名>_school_dat2)和一个大小为1MB的事务日志文件(文件名为:<你的姓名>_school_log)。限制数据文件大小为5MB、日志文件为2MB。
对于所有文件,允许20%的文件增长。请将创建数据库的Transact-SQL脚本存为<你的姓名>_1_01.sql文件。
2、修改数据文件<你的姓名>_school_dat1,增加其大小至3MB,并允许按0.5MB(512KB)的
增量增至最大大小6MB;删除数据文件<你的姓名>_school_dat2;添加一个新的1MB的数据文件(文件名为:<你的姓名>_school_dat3),允许它以1MB增量增至磁盘被充满。
请将Transact-SQL脚本存为<你的姓名>_1_02.sql文件。
二、用Transact-SQL语句在School数据库中定义表
1、根据所给的学生表建立表名为<你的姓名>_student的表,T-SQL脚本存为<你的姓
名>_2_01.sql文件。要求:
(1)设置学号列数据类型为char(11),主键约束,约束名为pk_xh;
(2)设置身份证号码列唯一约束,约束名为un_xh;
(3)设置检查约束,名为ck_sfzid,条件为身份证号码列只能输入15或17个数字字符。(4)其它列根据学生表的数据定义。
2、根据所给的课程表用Transact-SQL语句建立表名为<你的姓名>_course的表,
Transact-SQL脚本存为<你的姓名>_2_02.sql文件。要求:
(1)设置课程代号列数据类型为char(5),主键约束,约束名为pk_kcdh。
(2)设置周学时列默认值为3,学分默认值为2。
(3)设置检查约束,约束名为ck_cc,条件为周学时数大于等于学分数。
(4)在<你的姓名>_course表的课程名列上创建一个非聚集索引inx_course_kcm。
(5)其它列根据课程表的数据定义。
3、根据所给的成绩表建立表名为<你的姓名>_grade的表,Transact-SQL脚本存为<你的姓
名>_2_03.sql文件。要求:
(1)参考学生表和课程表的设置,考察并设置成绩表的主键约束,约束名为pk_id。
(2)设置学号列外键约束并级联删除和级联更新,约束名为fk_xh。
(3)设置课程代号列外键约束并级联删除和级联更新,约束名为fk_kcdh。
(4)设置平时和期中列的默认值为0。
(5)其它列根据课程表的数据定义。
4、修改表的定义,Transact-SQL脚本存为<你的姓名>_2_04.sql文件。要求:
(1)删除<你的姓名>_student表的特长列;添加出生日期列,允许为空,并要求输入的值不能大于当前日期。
(2)新建<你的姓名>_grade表的ck_cj约束,要求平时、期中和期末的平均成绩不大于100。
三、用Transact-SQL语句在School数据库中操作表
1、将附表所提供给的学生表(特长列已删除,增加了出生日期列)、课程表和成绩表的数
据插入到已建的相应表中。Transact-SQL脚本存为<你的姓名>_3_01.sql文件。
2、修改学生表的学号列,在学号前加两位“19”,在第四位后加入二位“00”。例如:学
号“9607039”改为“199********”;Transact-SQL 脚本存为<你的姓名>_3_02.sql 文件。
3、追加你自己的自然情况资料到<你的姓名>_student 表中,追加你自己《计算机基础
(一)》,《英语(一)》,《体育》课程的平时,期中,期末成绩到<你的姓名>_grade 表
中。Transact-SQL 脚本存为<你的姓名>_3_03.sql 文件。
4、创建显示学号、姓名、籍贯、家庭住址和奖励列的查询,要求:地址列的标题显示为
“家庭住址”籍贯为“云南”,并且获得过奖励,或者家庭住址在“江岸小区”,且住在“4单元”的学生。结果按学号降序排序。Transact-SQL 脚本存为<你的姓名>_3_04.sql 文件。
5、创建显示云南籍学生所选修的课程的课程代号、课程名和学分的查询,要求:
Transact-SQL 脚本存为<你的姓名>_3_05.sql 文件。
6、创建一个计算总评分的用户自定义函数summ(ps,qz,qm), T-SQL 脚本存为<你的姓
名>_3_06.sql 文件。要求:
(1) ps 表示平时;qz 表示期中;qm 表示期末
(2) 计算公式:summ(ps,qz,qm)=ps*10%+qz*30%+qm*60%
7、创建列出每名学生的姓名、选修的课程名、总评分和是否获得学分的视图,Transact-SQL
脚本存为<你的姓名>_3_07.sql 文件。要求:
(1) 视图的名称为<你的姓名>_view1。
(2) 新增“是否获得学分”列,当总评分不小于85分时,该列的值为“√”,否则
为“×”。
(3) 按学号升序排序。
8、创建查询,Transact-SQL 脚本存为<你的姓名>_3_08.sql 文件。要求:
(1) 计算并显示每一门课程的课程名、最高总评分及对应的学生姓名。 (2) 按课程名升序排序。
(3) 将查询生成表<你的姓名>_report 。
9、创建并调用存储过程,Transact-SQL 脚本存为<你的姓名>_3_09.sql 文件。要求:
(1) 存储过程为<你的姓名>_proc ,完成模糊输入学生的姓名。输出该学生选修的
课程门数、总周学时数、总学分数和加权平均分。
(2) 计算加权平均分的公式:
∑∑=N
=1
门课程学分
第门课程学分
第门课程总评分第i i x i i N
i 1
(3) 以自己的姓名为参数,调用存储过程。
10、 创建在<你的姓名>_grade 表上的触发器,Transact-SQL 脚本存为<你的姓
名>_3_10.sql 文件。要求:
(1) 当在<你的姓名>_grade 表上进行插入、删除和更新成绩的操作时,能级联操作
<你的姓名>_report 表。
注意事项:
1、所有标识<你的姓名>之处,均必须用你的姓名的汉语拼音缩写替
代,否则成绩无效。如:chj(常俊的汉语拼音缩写)替代<你的姓
名>。
2、将所有的sql脚本文件合并为学号_姓名_期中.sql脚本文件(注意
加注释),且能正确执行通过。
3、上机考时,请提交合并为学号_姓名_期中.sql的脚本文件。
附表: