SQL Server 2008数据库总复习题 下载本文

(1) 请建立电影信息表,包括约束要求。 Create table 电影信息

(影片编号int identity primary key, 片名varchar(50), 发行公司varchar(50),

片长smallint default 90

类型 char(4) check 类型in (“惊险”,”言情”,”喜剧”,”科幻”,”其他”) (2) 为“电影_演员信息”表添加外键约束。 Alter table 电影_演员信息 Add

constraint uk_ypbm foreign key(影片编号) references 电影信息(影片编号), constraint uk_yybm foreign key(演员编号) references 演员信息(演员编号)

(3)检索出主演过“科幻”类电影的演员的姓名及电影片名。 Select 姓名,片名 from 电影信息,演员信息,电影_演员信息 Where 电影_演员信息.影片编号=电影信息.影片编号 and

电影_演员信息.演员编号=演员信息.影片编号 and 类型=”科幻”

(4)检索出电影长度不小于平均长度的电影片名和发行公司。 Select 片名,发行公司 from 电影信息

Where 片长>(select avg(发行时间) from 电影信息)

21、请使用SQL命令完成以下数据定义或数据操纵 (1). 创建数据库“studentDB”,其主数据文件名称stu_data,物理文件保存在d:\\data下,名称为student.mdf,初始大小5M,最大50M,以1M速度增加;该数据库的日志文件是stu_log,保存在d:\\data下,名称为student.ldf,初始大小2M,以5%速度增加。

Create DataBasestudentDB ON

(name=stu_data,filename=\size=5MB,maxsize=50MB,filegrowth=1MB ) LOG ON

(name=stu_log,filename=\ , size=2MB, fielgrowth=5% )

(2)为16题建立的student表的“姓名”属性创建非惟一的非聚集索引 CREATE NONCLUSTERED INDEX inxm ON student(姓名)

(3) 为16题建立的student表输入以下数据。

Insert into student(学号,姓名,性别,出生日期) Values(‘0401332901’,’李勇’,’男’,#1995-05-19#)

(4)将16题建立的student表中李勇的出生日期更改为1995-1-1。 Update student

Set 出生日期=#1995-1-1# Where 姓名=’李勇’

5)由16题建立的student表创建所有女生信息的视图。 Create view v女生 As

Select * from student where 性别=’女’

(6)删除16题建立的student表中学号为“0401332901”学生的数据。 Delete from student Where 学号=’ 0401332901’

22、请使用SQL命令完成以下检索操作

已知有图书表、作者表和出版社表,各表字段定义如下: 图书(图书编号,书名,价格,出版社编号,种类) 作者(作者编号,姓名,性别,电话,城市,地址) 出版社(出版社编号,出版社名称,出版社地址) (1).检索出所有图书的种类(不能含有相同种类)。 Selecct distinct 种类 from 图书

(2).检索出价格不在20至50元之间的图书的书名和价格。 Select书号,价格 from 图书

Where 价格<20 or 价格>50

(3).检索出各类图书的最高价格。 Select 种类,max(价格) from 图书 Group by 种类

(4).检索出图书编号以“C”开头,中间第3位为数字0-5的图书信息。 Select * from 图书

Where 图书编号 like ‘C_[012345]%’ (5).检索出“北京”市或“上海”市男性作者的编号、姓名和地址。 Select 编号,姓名,地址 from 作者

Where 性别=’男’ and 城市 in (“北京”,”上海”)

(6).检索出“计算机”类图书的平均价格和种类,并以“平均价格”表示。 Select avg(价格) as 平均价格,种类 from 图书 Where 种类=”计算机”

(7). 请按城市降序排列输出作者信息。 Select * from 作者 Order by 城市 desc (8).检索出价格在50元以上图书的书名、价格及出版社名称。 Select书号,价格,出版社名称 from 图书,出版社 Where 图书.出版社编号=出版社.出版社编号 and

价格>50

(9).查询出版“音乐”类图书的出版社名称和地址。

Select出版社名称,出版社地址 from 图书,出版社 Where 图书.出版社编号=出版社.出版社编号 and

种类=’音乐’

24、编程题(共4题)

有一个“学生-课程”数据库,数据库中包括三个表: (1) “学生”表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,可记为: Student(Sno,Sname,Ssex,Sage,Sdept) Sno 为关键字。 (2) “课程”表Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,可记为: Course(Cno,Cname,Cpno,Ccredit) Cno为关键字。

(3) “学生选课”表SC由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,可记为: SC(Sno,Cno,Grade) (SNO, CNO) 为关键字。完成下列操作:

(1)请把其中建立 “学生”表Student的语句写下来,表Student是由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成,其中学号属性不能为空,并且其值是唯一的。 Create table student

( sno char(20) not null primary key, Snamechar(20), Ssex char(2), Sage int, Sdeptchar(30))

(2)在student表中查询Sdept是‘计算机’的学生的所有信息,并按Sno降序排列。 Select * from student Where sdept=’计算机’ Order by snodesc

Student(Sno,Sname,Ssex,Sage,Sdept) Sno Course(Cno,Cname,Cpno,Ccredit) SC(Sno,Cno,Grade) (3)在以上三个表中查询Ccredit为5并且Grade大于60的学生的学号、姓名和性别。 方法一:

Select student.sno,sname,ssex form student,course,sc Where student.sno=sc.sno andsc.cno=course.cno and Ccredit=5 and grade>60 方法二:

Select student.sno,sname,ssex

form student inner join (course inner join scon sc.cno=course.cno) on student.sno=sc.sno

Where Ccredit=5 and grade>60

(4)为Course表创建一个名称为my_trig的触发器,当用户成功删除该表中的一条或多条记录时,触发器自动删除SC表中与之有关的记录。

(注:在创建触发器之前要判断是否有同名的触发器存在,若存在则删除之。) Use 学生-课程

If exists (select name from sysobjects

Where name=’my_trig’andtype=’TR’)