文档库 最新最全的文档下载
当前位置:文档库 › 数据库期中考试

数据库期中考试

--期中考试试卷

--一、用Transact-SQL语句定义数据库

--1、创建名为School的数据库,该数据库包含二个大小为2MB的数据文件(文件名为:<你的姓名>_school_dat1和<你的姓名>_

--school_dat2)和一个大小为1MB的事务日志文件(文件名为:<你的姓名>_school_log)。限制数据文件大小为5MB、日志文

--件为2MB。对于所有文件,允许20%的文件增长。请将创建数据库的Transact-SQL脚本存为<你的姓名>_1_01.sql文件。

create database School

on

( name=hzw_school_dat1,

filename='D:\School\dat1.mdf',

size=2MB,

maxsize=5MB,

filegrowth=20%),

( name=hzw_school_dat2,

filename='D:\School\dat2.ndf',

size=2MB,

maxsize=5MB,

filegrowth=20%)

log on

( name=hzw_school_log,

filename='D:\School\log.ldf',

size=1MB,

maxsize=2MB,

filegrowth=20%)

go

--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=hzw_school_dat1,

size=3 MB,

maxsize=6 MB,

filegrowth=512 KB

go

alter database School

remove file hzw_school_dat2

go

alter database School

add file

( name=hzw_school_dat3,

filename='D:\School\hzw_school_dat3.ndf',

size=1 MB,

filegrowth=1 Mb

)

go

--二、用Transact-SQL语句在School数据库中定义表

--1.根据所给的学生表建立表名为<你的姓名>_student的表,T-SQL脚本存为<你的姓名>_2_01.sql文件。要求:

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

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

--设置检查约束,名为ck_sfzid,条件为身份证号码列只能输入15或17个数字字符。

--其它列根据学生表的数据定义。

use School

go

create table hzw_student

( SXH char(11) CONSTRAINT PK_xh PRIMARY KEY NONCLUSTERED,

SMZ char(10) ,

SSFZHM char(20) NOT NULL CONSTRAINT un_xh UNIQUE NONCLUSTERED

CONSTRAINT ck_sfzid check(len(SSFZHM)<18 and len(SSFZHM)>14 ),

SJG varchar(12) NOT NULL,

SJTZZ varchar(20) NOT NULL,

SDHHM varchar(7) NOT NULL,

STC varchar(20) NOT NULL,

SJL varchar(20),

SCF varchar(20)

)

go

--2.根据所给的课程表用Transact-SQL语句建立表名为<你的姓名>_course的表, Transact-SQL脚本存为<你的姓名>_2_02.sql文件。要求:

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

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

--设置检查约束,约束名为ck_cc,条件为周学时数大于等于学分数。

--在<你的姓名>_course表的课程名列上创建一个非聚集索引inx_course_kcm。

--其它列根据课程表的数据定义。

use School

go

create table hzw_course

( CKCDH varchar(5) CONSTRAINT pk_kcdh PRIMARY KEY NONCLUSTERED,

CKCM varchar(20),

CZXS int default '3',

CXF int default '2',

CONSTRAINT ck_cc check(CZXS>CXF or CZXS=CXF),

)

create nonclustered index inx_course_kcm on hzw_course(CKCM)

go

--3.根据所给的成绩表建立表名为<你的姓名>_grade的表,Transact-SQL脚本存为<你的姓名>_2_03.sql文件。要求:

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

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

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

--设置平时和期中列的默认值为0。

--其它列根据课程表的数据定义。

use School

go

create table hzw_grade

( GXH char(11) NOT NULL,

GKCDH varchar(5) NOT NULL ,

GPS int default '0',

GQZ int default '0',

GQM int NOT NULL,

CONSTRAINT pk_id PRIMARY KEY NONCLUSTERED (GXH ,GKCDH),

CONSTRAINT fk_xh FOREIGN KEY (GXH) REFERENCES hzw_student(SXH)on delete cascade on update cascade ,

CONSTRAINT fk_kcdh FOREIGN KEY (GKCDH) REFERENCES hzw_course(CKCDH) on delete cascade on update cascade

)

go

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

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

--新建<你的姓名>_grade表的ck_cj约束,要求平时、期中和期末的平均成绩不大于100。use School

go

alter table hzw_student

drop column STC

alter table hzw_student

add SCSRQ varchar(20) NULL check(SCSRQ

alter table hzw_grade

add constraint ck_cj check(GPS<100 or GPS=100 and GQZ<100 or GQZ=100 and GQM<100 or GQM=100)

go

--三、用Transact-SQL语句在School数据库中操作表

--1.将附表所提供给的学生表(特长列已删除,增加了出生日期列)、课程--表和成绩表的数据插入到已建的相应表中。Transact-SQL脚本存为<你--的姓名>_3_01.sql文件。

insert hzw_student

values('9607039','张昆','530120169021101','安徽','江岸小区45幢3单元408','5033226','被评为三好学生','','')

insert hzw_student

values('9907002','李明','530120170060701','云南','江岸小区50幢2单元409','5033228','被评为三好学生','','')

insert hzw_student

values('9801055','王风','530120171072501','湖北','白马小区15幢3单元101','4133224','','','') insert hzw_student

values('9902006','黄光美','530120*********','湖南','金星小区8幢3单元208','3133218','被评为特优生','','')

insert hzw_student

values('9704001','钱丽','530120168121101','云南','静园小区12幢3单元109','2133227','','','') insert hzw_student

values('9603001','王迷','530120174050101','黑龙江','江岸小区40幢1单元612','5033219','被评为红花少年','','')

insert hzw_student

values('9606005','赵人','530120175040702','江苏','江岸小区30幢4单元222','5033123','','','') insert hzw_student

values('9803011','李游','530120173021201','四川','白马小区25幢3单元410','4133124','获集邮展览三等奖','','')

insert hzw_student

values('9908088','孙客如','530120172092801','贵州','金星小区55幢3单元214','3133177','获省级长跑第二名','因作弊受处分','')

insert hzw_student

values('9608066','于云','530120174092201','云南','阳光小区55幢5单元112','3133222','获优秀作文奖','','')

insert hzw_student

values('9805026','李春','530120174110901','云南','阳光小区2幢1单元444','3133789','','','') insert hzw_student

values('9702033','高城','530120170080401','江苏','阳光小区8幢2单元808','3148212','','','')

insert hzw_course

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

insert hzw_course

values('10101','大学语文',2,2)

insert hzw_course

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

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

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

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

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

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

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

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

insert hzw_course

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

insert hzw_course

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

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

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

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

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

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

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

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

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

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

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

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

values('40625','色谱学',2,2)

insert hzw_course

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

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

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

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

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

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

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

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

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

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

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

insert hzw_grade

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

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

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

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

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

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

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

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

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

values('9702033','30213',88,65,72) insert hzw_grade

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

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

values('9902006','11101',82,75,78) insert hzw_grade

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

values('9908088','10811',82,92,89) insert hzw_grade

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

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

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

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

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

insert hzw_grade

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

insert hzw_grade

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

insert hzw_grade

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

insert hzw_grade

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

insert hzw_grade

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

insert hzw_grade

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

GO

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

--学号“9607039”改为“199********”;Transact-SQL脚本存为<你的姓名>_3_02.sql文件。

use School

go

update hzw_student set SXH ='19'+substring(SXH,1,4)+'00'+substring(SXH,5,7)

go

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

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

USE School

go

insert hzw_student values ('20101060060','胡志伟','42102319910522791','湖北','云南大学楠苑2幢B616','1878851',' ',' ','19910522')

insert hzw_grade values ('20101060060','20801','60','60','60')

insert hzw_grade values ('20101060060','11001','60','60','60')

insert hzw_grade values ('20101060060','11101','60','60','60')

go

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

--云南”,并且获得过奖励,或者家庭住址在“江岸小区”,且住在“4单元”的学生。结果按学号降序排序。

--Transact-SQL脚本存为<你的姓名>_3_04.sql文件。

use School

go

select SXH, SMZ ,SJG,家庭住址=SJTZZ,SJL from hzw_student

where SJG='云南'and SJL != ' ' or SJTZZ like '江岸小区%4单元%'

order by SXH asc

go

--5、创建显示云南籍学生所选修的课程的课程代号、课程名和学分的查询,要求:Transact-SQL脚本存为

--<你的姓名>_3_05.sql文件。

use School

go

select SMZ,SJG,CKCDH,CKCM,CXF from hzw_student,hzw_course,hzw_grade

where hzw_student.SXH=hzw_grade.GXH and hzw_grade.GKCDH=hzw_course.CKCDH and SJG='云南'

go

--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%

use School

go

create function sumn1(@XH varchar(11))

returns table

as

return(select GXH,GPS,GQZ,GQM,SZP=GPS*0.1+GQZ*0.3+GQM*0.6 from hzw_grade where @XH=GXH)

go

--7、创建列出每名学生的姓名、选修的课程名、总评分和是否获得学分的视图,Transact-SQL脚本存为<你的姓名>_3_07.sql文件。要求:

--(1)视图的名称为<你的姓名>_view1。

--(2)新增“是否获得学分”列,当总评分不小于85分时,该列的值为“√”,否则为“×”。--(3)按学号升序排序。

create view hzw_view1

as

select SMZ,CKCM, SZP=GPS*0.1+GQZ*0.3+GQM*0.6 ,HDXF=CASE when (GPS*0.1+GQZ*0.3+GQM*0.6)<85

then '×' else '√' end from hzw_student,hzw_course,hzw_grade where

hzw_student.SXH=hzw_grade.GXH and hzw_grade.GKCDH=hzw_course.CKCDH

go

--8.创建显示每名学生的姓名、选修的课程门数、总周学时数、总学分数和加权平均分的查询,Transact-SQL脚本存为

--<你的姓名>_3_08.sql文件。要求:

--计算加权平均分的公式:

--结果按加权平均分降序排序。

go

create view hzw_view4

as

select SMZ,XKMS=count(CKCDH),ZZXS=sum(CZXS),ZXF=sum(CXF),A VGE= sum((GPS*0.1+GQZ*0.3+GQM*0.6)*CXF)/sum(CXF) from hzw_student,hzw_course,hzw_grade where

hzw_student.SXH=hzw_grade.GXH and hzw_grade.GKCDH=hzw_course.CKCDH group by SXH,SMZ

go

select *from hzw_view4

order by A VGE desc

go

--9.创建统计课程选修人数、最高总评分和最低总评分的查询,Transact-SQL脚本存为<你的姓名>_3_09.sql文件。要求:

--所有选修该门课程的学生的总评分必须都及格

--结果按选修人数降序排序;

--将查询生成表<你的姓名>_sum。

use School

go

create view hzw_view3

as

select

CKCM,KCXXRS=count(CKCDH) ,Cmax=max(GPS*0.1+GQZ*0.3+GQM*0.6),Cmin=min(GPS *0.1+GQZ*0.3+GQM*0.6) from hzw_student,hzw_course,hzw_grade where

hzw_student.SXH=hzw_grade.GXH and hzw_grade.GKCDH=hzw_course.CKCDH group by CKCM,CKCDH

go

select*from hzw_view3 order by KCXXRS

go

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

--计算并显示每一门课程的课程名、最高总评分及对应的学生姓名。

--按课程名升序排序。

--将查询生成表<你的姓名>_report

use School

go

create view hzw_view2

as

select CKCDH,CKCM,Cmax=max(GPS*0.1+GQZ*0.3+GQM*0.6)from hzw_student,hzw_course,hzw_grade where

hzw_student.SXH=hzw_grade.GXH and hzw_grade.GKCDH=hzw_course.CKCDH group by CKCM ,CKCDH

go

go

select SMZ,hzw_view1.CKCM,SZP from hzw_view1,hzw_view2 where hzw_view1.SZP=hzw_view2.Cmax and hzw_view1.CKCM=hzw_view2.CKCM

order by hzw_view1.CKCM

go

相关文档
相关文档 最新文档