(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’)