文档库

最新最全的文档下载
当前位置:文档库 > SQL数据库考试题

SQL数据库考试题

一、用Transact-SQL语句定义数据库(每题6分,共12分)

1、创建名为School的数据库,该数据库包含二个大小为2MB的数据文

件(文件名为:<你的姓名>_school_dat1和<你的姓名>_school_dat2)和一个大小为1MB的事务日志文件(文件名为:<你的姓名>_school_log)。限制数据文件大小为5MB、日志文件为2MB。对于所有文件,允许20%的文件增长。请将创建数据库的Transact-SQL 脚本存为<你的姓名>_1_01.sql文件。

解:

drop database school

go

create database school

on

primary

(name='lts_school_dat1',

filename='C:\Program Files\Microsoft SQL

Server\MSSQL.1\MSSQL\Data\lts_school_dat1.mdf',

size=3MB,

maxsize=5MB,

filegrowth=20%),

filegroup fgroup

(name='lts_school_dat2',

filename='C:\Program Files\Microsoft SQL

Server\MSSQL.1\MSSQL\Data\lts_school_dat2.ndf',

size=2MB,

maxsize=5MB,

filegrowth=20%)

log on

(name='lts_school_log',

filename='C:\Program Files\Microsoft SQL

Server\MSSQL.1\MSSQL\Data\lts_school_log.ldf',

size=1MB,

maxsize=2MB,

filegrowth=20%)

go

SQL数据库考试题

2、修改数据文件<你的姓名>_school_dat1,增加其大小至3MB,并允许按0.5MB(512KB)的增量增

至最大大小6MB;删除数据文件<你的姓名>_school_dat2;添加一个新的1MB的数据文件(文件名为:<你的姓名>_school_dat3),允许它以1MB增量增至磁盘被充满。请将Transact-SQL 脚本存为<你的姓名>_1_02.sql文件。

解:

alter database school

modify file

(name='lts_school_dat1',

size=4MB,

maxsize=6MB,

filegrowth=512KB)

go

alter database school

remove file 1 _school_dat2

go

alter database school

add file

(name='lts_school_dat3',

filename='C:\Program Files\Microsoft SQL

Server\MSSQL.1\MSSQL\Data\lts_school_dat3.ndf',

size=1MB,

maxsize=unlimited,

filegrowth=1MB)

go

SQL数据库考试题

二、用Transact-SQL语句在School数据库中定义表(每题6分,共30分)

1、根据所给的学生表建立表名为<你的姓名>_student的表,T-SQL脚本存为<你的姓

名>_2_01.sql文件。要求:

(1)设置学号列数据类型为char(11),主键约束,约束名为pk_xh;

(2)设置身份证号码列唯一约束,约束名为un_xh;

(3)在<你的姓名>_student表的姓名列上创建一个非聚集索引inx_sname。

(4)其它列根据学生表的数据定义。

解:

create table lts_student

(学号char(11)not null constraint pk_xh primary key,

姓名char(20)not null,

身份证号int not null constraint un_xh unique,

籍贯char(20)not null,

家庭住址char(20)not null,

电话int not null,

特长char(20),

奖励char(40),

处分char(40),

)

go

create unique nonclustered index inx_sname

on lts_student(姓名)

go

2、根据所给的课程表用Transact-SQL语句建立表名为<你的姓名>_course的表, Transact-SQL

脚本存为<你的姓名>_2_02.sql文件。要求:

(1)设置课程代号列数据类型为char(5),主键约束,约束名为pk_kcdh。

(2)设置检查约束,约束名为ck_ccd,条件为课程代号的第一位只能是数字字符“0”到“4”,(表示学年),第二位只能是数字字符“0”、“1”(表示上下学期)。

(3)设置周学时列默认值为3,学分默认值为2。

(4)其它列根据课程表的数据定义。

解:

create table lts_course

(课程代码char(5)not null constraint pk_kcdh primary key constraint ck_ccd check(char(0)in('0','1','2','3','4')and char(1)in('0','1')),

课程名char(40)not null,

周学时int not null default 3,

学分int not null default 2

)

go

3、根据所给的成绩表建立表名为<你的姓名>_grade的表,Transact-SQL脚本存为<你的姓

名>_2_03.sql文件。要求:

(1)参考学生表和课程表的设置,考察并设置成绩表的主键约束,约束名为pk_id。

(2)设置学号列外键约束并级联删除和级联更新,约束名为fk_xh。

(3)设置课程代号列外键约束并级联删除和级联更新,约束名为fk_kcdh。

(4)设置检查约束,约束名为ck_gcj,条件为平时、期中和期末成绩的和不大于300。

(5)其它列根据课程表的数据定义。

解:

create table lts_grade

(学号char(11)not null,

课程代号char(5)not null,

平时int,

期中int,

期末int

)

go

alter table lts_grade

add constraint pk_id

primary key(学号,课程代号)

go

alter table lts_grade

add constraint fk_xh

foreign key(学号)references lts_student(学号)

on update cascade

on delete cascade

go

alter table lts_grade

add constraint fk_kcdh

foreign key(课程代号)references lts_course(课程代号)

on update cascade

on delete cascade

go

alter table lts_grade

add constraint ck_gcj

check((平时+期中+期末)<=300)

Go

4、修改表的定义,Transact-SQL脚本存为<你的姓名>_2_04.sql文件。要求:

(1)删除<你的姓名>_student表的特长列;添加出生日期列,允许为空,并要求输入的值不能大于当前日期。

(2)增加<你的姓名>_course表的检查约束ck_czx,条件为周学时数大于等于学分数。

解:

alter table lts_student

drop column特长

go

alter table lts_student

add出生日期smalldatetime null check(出生日期<=getdate())

go

alter table lts_course

add constraint ck_czx

check(周学时>=学分)

go

三、用Transact-SQL语句在School数据库中操作表(每题6分,共54分)

1、将所给的学生表(特长列已删除,增加了出生日期列)、课程表和成绩表的数据增加到已建

的相应表中。Transact-SQL脚本存为<你的姓名>_3_01.sql文件。

解:

SQL数据库考试题

--课程表:

insert lts_course

values('20511','世界近代史',4,4)

insert lts_course

insert lts_course

values('20801','计算机基础(一)',4,3) insert lts_course

values('10218','高等代数',4,4)

insert lts_course

values('11001','英语(一)',6,6)

insert lts_course

values('20113','外国文学',4,4)

insert lts_course

values('30416','接口技术',4,3)

insert lts_course

values('20327','报刊编辑学',2,2)

insert lts_course

values('20521','中国民族史',3,2)

insert lts_course

values('30213','数论',4,4)

insert lts_course

values('11101','体育',2,2)

insert lts_course

values('21003','英语(二)',4,4)

insert lts_course

values('30211','概率统计',3,3)

insert lts_course

values('30232','数学分析',2,2)

insert lts_course

values('40711','国际投资学',2,2)

insert lts_course

values('40722','国际商法',2,2)

insert lts_course

values('30832','算法设计',4,4)

insert lts_course

values('10812','数字电路',4,4)

insert lts_course

values('10715','高等数学',4,4)

insert lts_course

values('20111','古代汉语',3,3)

insert lts_course

values('30802','计算机基础(二)',3,3) insert lts_course

values('30423','电磁场理论',3,3)

insert lts_course

values('40331','传播心理学',2,2)

insert lts_course

insert lts_course

values('20314','新闻学概论',2,2) insert lts_course

values('10811','离散数学',2,2)

insert lts_course

values('30819','编辑技术',4,4)

insert lts_course

values('20534','中国近代史',4,4) insert lts_course

values('10712','政治经济学',3,3) insert lts_course

values('20115','现代汉语',4,4)

insert lts_course

values('10222','解析几何',2,2)

insert lts_course

values('30412','近代物理实验',3,2) insert lts_course

values('40316','当代新闻史',2,2) insert lts_course

values('40612','配位化学',3,3)

insert lts_course

values('20328','现代新闻报道',4,4) go

--成绩表:

insert lts_grade

values('9805026','20801',75,87,82) insert lts_grade

values('9702033','30802',80,89,91) insert lts_grade

values('9907002','11001',91,83,85) insert lts_grade

values('9801055','20113',70,65,55) insert lts_grade

values('9902006','11001',78,86,81) insert lts_grade

values('9704001','30416',80,90,90) insert lts_grade

values('9803011','20327',95,93,90) insert lts_grade

values('9908088','11001',90,91,87) insert lts_grade

values('9805026','20521',90,97,96) insert lts_grade

insert lts_grade

values('9907002','11101',88,65,72) insert lts_grade

values('9801055','21003',70,90,84) insert lts_grade

values('9902006','11101',88,65,72) insert lts_grade

values('9803011','21003',78,84,82) insert lts_grade

values('9908088','11101',82,75,78) insert lts_grade

values('9805026','21003',83,85,84) insert lts_grade

values('9805026','20511',90,82,86) insert lts_grade

values('9702033','30232',80,84,83) insert lts_grade

values('9907002','10101',84,96,92) insert lts_grade

values('9801055','20801',76,78,60) insert lts_grade

values('9902006','10101',85,88,81) insert lts_grade

values('9704001','30802',90,87,82) insert lts_grade

values('9803011','20801',60,50,51) insert lts_grade

values('9607039','40711',85,80,88) insert lts_grade

values('9907002','10715',83,90,86) insert lts_grade

values('9801055','20111',78,60,65) insert lts_grade

values('9902006','10218',75,63,52) insert lts_grade

values('9704001','30423',80,81,85) insert lts_grade

values('9603001','40331',67,72,70) insert lts_grade

values('9606005','40625',83,85,84) insert lts_grade

values('9803011','20314',76,76,76) insert lts__grade

insert lts_grade

values('9608066','30819',78,84,82)

insert lts_grade

values('9907002','10712',90,96,97)

insert lts_grade

values('9801055','20115',80,82,87)

insert lts_grade

values('9902006','10222',85,91,79)

insert lts_grade

values('9704001','30412',78,87,80)

insert lts_grade

values('9603001','40316',66,71,73)

insert lts_grade

values('9606005','40612',70,78,60)

insert lts_grade

values('9803011','20328',90,88,87)

insert lts_grade

values('9908088','10812',80,67,83)

insert lts_grade

values('9608066','30832',95,92,93)

insert lts_grade

values('9908088','10101',80,82,87)

go

2、修改学生表的学号列,在学号前加两位“19”,在第四位后加入二位“10”。例如:学号

“9607039”改为“199********”;即学号编码代表的含义为:前四位表示是年级,如:1996级;接着的三位表示专业,如:071;后四位表示编号,如:0039。Transact-SQL脚本存为<你的姓名>_3_02.sql文件。

解:

update lts_student

set学号='19'+substring(学号,1,4)+'10'+substring(学号,5,7)

go

3、追加你自己的自然情况资料到<你的姓名>_student表中,追加你自己《计算机基础(一)》,

《英语(一)》,《体育》课程的平时,期中,期末成绩到<你的姓名>_grade表中。Transact-SQL 脚本存为<你的姓名>_3_03.sql文件。

解:

insert lts_student

values('20072121016','黎天送','421222************','湖北

','9-414','4320294','无','无','1987-9-4')

go

insert lts_grade

values('20072121016','20801',83,86,94)

go

insert lts_grade

values('20072121016','11001',85,86,98)

go

insert lts_grade

values('20072121016','11101',83,86,90)

go

4、创建显示学号、姓名、籍贯、家庭住址和奖励列的查询,要求:地址列的标题显示为“家

庭住址”;查询条件是籍贯为“云南”,或者是家庭住址在“江岸小区”,且住在“4单元”

的学生。结果按学号降序排序。Transact-SQL脚本存为<你的姓名>_3_04.sql文件。

解:

SQL数据库考试题

5、查询1998级并且姓“李”的学生的学号和姓名。Transact-SQL脚本存为<你的姓

名>_3_05.sql文件。

解:

SQL数据库考试题

6、编写计算学生一门课程总评分(总评分为平时占10%,期中占20%,期末占70%)的函数;

调用此函数计算你本人各门课程的总评分。Transact-SQL脚本存为<你的姓名>_3_06.sql 文件。

解:

SQL数据库考试题

7、查询各类学分(如:4,3)的课程数。Transact-SQL脚本存为<你的姓名>_3_07.sql文件。解:

create function课程数(@xf int)

returns @课程数table

(课程数int)

as

begin

insert @课程数

select count(学分)

from lts_course

where学分=@xf

return

end

go

SQL数据库考试题

SQL数据库考试题

SQL数据库考试题

SQL数据库考试题

8、查询各学年的课程数,学时总数和学分总数。Transact-SQL脚本存为<你的姓名>_3_08.sql

文件。

解:

SQL数据库考试题

9、查询选修了三门以上(含三门)课程的学生的学号。Transact-SQL脚本存为<你的姓

名>_3_09.sql文件。

解:

SQL数据库考试题

10、 创建一个存储过程,通过输入学号,输出学生的姓名、选修的课程门数、总周学时数、

总学分数和加权平均分,Transact-SQL 脚本存为<你的姓名>_3_10.sql 文件。要求:

(1) 计算加权平均分的公式:

∑∑=N

=1

门课程学分

第门课程学分

第门课程总评分第i 1

i x i i N

i

(2) 结果按加权平均分降序排序。 解:

11、 创建查询,Transact-SQL 脚本存为<你的姓名>_3_11.sql 文件。要求:

(1) 计算并显示每一门课程的课程名、最高总评分及对应的学生姓名。 (2) 按课程名升序排序。

(3) 将查询生成表<你的姓名>_report 。

12、 在学生表上新增加 “名次”(int )一列。后在成绩表上创建一触发器,实现当增加、删除和

修改成绩时,能通过计算加权平均分,而改变名次的值。Transact-SQL 脚本存为<你的姓

名>_3_12.sql 文件。

注意事项:

1、试卷中所有标识<你的姓名>之处,均必须用你的姓名的汉语拼音缩写替代,否则

成绩无效。如:chj(常俊的汉语拼音缩写)替代<你的姓名>。

2、将所有的sql脚本文件合并为学号_姓名_期中.sql脚本文件(注意加题号注释),

并执行通过。

3、本试卷为开卷上机考试,同学必须在规定的时间内完成,并按要求解答。

附表:

SQL数据库考试题

SQL数据库考试题

SQL数据库考试题