《关系数据库与SQL Server 2005》习题参考答案 下载本文

add 序号 int identity 5.

alter table 学生表

alter column 电话 char(11) 6.

exec sp_rename ‘学生表’, ‘xsb’ go

exec sp_rename ‘成绩表’, ‘cjb’ 7.(略)

习题5

一、填空题 1.SELECT 2.WHERE 3.连接 4.分组 5.排序 6.ORDER BY 7.设定组或聚合的查询条件 HAVING子句可以使用汇总函数,而WHERE子句则不能

二、上机题 1.

select 课程名, 授课教师, 开课学期 from kc

where 开课学期=2 2.

select 姓名, 性别, 联系电话 from xsqk where 性别=0 3.

select 学号, 课程号, 成绩 from xs_kc

where 成绩>=80 4.

select 学号, 课程号, 成绩 from xs_kc

where 成绩>=80 or 成绩<60 5.

select 学号, 姓名, 出生日期 from xsqk

where 出生日期 not between ‘1980-07-07’ and ‘1980-09-30’ 6.

select *

from xsqk

where 姓名 like ‘陈_’ 7.

select * from xsqk

where 学号 like ‘%1%’ 8.

select * from xsqk

where 联系电话 like ‘_ _ _ _ _ _ [46] _’ 9.

select * from kc

where 开课学期 in (1, 3, 5) 10.

select 学号, 姓名, 出生日期 from xsqk

order by 出生日期 11.

select 开课学期, sum(学分) as 各学期的学分合计 from kc

group by 开课学期 12.

select 学号, count(*) as 每个学生选修的课程门数 from xs_kc group by 学号 13.

select 课程名称, 开课学期, 学分 from kc

compute sum(学分) 14.

select 课程名称, 开课学期, 学分 from kc order by 2

compute sum(学分) by 开课学期 15.

select 学号, avg(成绩) as 学生的平均分 from xs_kc group by 学号 16.

select 学号, avg(成绩) as 学生的平均分 from xs_kc group by 学号

having avg(成绩) between 70 and 80

17.

select 学号, 课程号, 成绩 into temp_kc from xs_kc

order by 课程号, 成绩 desc 18.

select max(成绩) as 101课程的最高分, min(成绩) as 101课程的最低分 from xs_kc

where 课程号=’101’ 19.

select 开课学期, count(*) as 每学期开设的课程门数 from kc

group by 开课学期 20.

select 专业名, count(专业名) as 各专业人数 from xsqk

group by 专业名 21.

select 学号, xs_kc.课程号, 授课教师, 开课学期, 成绩 from kc, xs_kc

where kc.学号=xs_kc.学号 and 成绩<60 22.

select 学号, sum(成绩) as 各学生的总分 from xs_kc group by 学号

having sum(成绩)>=100 order by sum(成绩) desc 23.

select 学号, 姓名 from xsqk

where (select count(课程号)

from xs_kc

where xsqk.学号=xs_kc.学号 and 成绩>=60 )=2

24. select *

from xs_kc a

where 成绩=(select max(成绩)

from xs_kc b

where a.课程号=b.课程号)

25. select *

from xs_kc a

where 成绩=(select min(成绩)

from xs_kc b

where a.学号=b.学号)

习题6

一、填空题

1.标准视图 索引视图 分区视图 2.虚拟表 CREATE VIEW 3.基表 4.聚集索引 非聚集索引 唯一索引 复合索引 全文索引 XML索引 5.创建表 6.数据库 二、操作题 1.

create view v_平均成绩 as

select 学号,avg(成绩) as 平均成绩 from xs_kc group by 学号

having avg(成绩)>=90 2.

create view v_选课信息 as

select a.姓名,b.课程名 from xsqk a,kc b,xs_kc c

where a.学号=c.学号 and b.课程号=c.课程号 and a.班级='网络071' 3.

create index ix_课程名 on kc(课程名)

习题7

1.规则是绑定到列或用户自定义数据类型上的数据库对象,用来指定列可以接受哪些数据值。规则是实现域完整性的方法之一。

CHECK约束是用CREATE TABLE语句在建表时指定的,而规则需要作为单独的数据库对象来实现。在1列上只能使用1个规则,但可以使用多个CHECK约束。1个规则可以应用于多个列,还可以应用于用户自定义的数据类型,而CHECK约束只能应用于它所定义的列。

2.使用规则来实现数据完整性,需要两个步骤。一是创建规则;二是将规则绑定到列或用户自定义数据类型上。

3.默认值就是当用户向表中添加数据时,没有明确地给出,而由SQL Server自动指派的值。默认值可以定义为数据库对象,使用时需将其绑定到特定的列上。

默认值约束是用CREATE TABLE语句创建表时,使用DEFAULT子句为表中的列提供默认值。默认值对象是用CREATE DEFAULT语句来创建的,使用时须将它绑定到列或用户自定义数据类型上。

4.使用默认值来实现数据完整性,需要两个步骤。一是创建默认值对象;二是将默认值对象绑定到列或用户自定义数据类型上。

习题8

一、选择题 1.C 2.B 3.D

二、填空题

1.一条或多条T-SQL语句的集合 GO 2.DECLARE 系统 3.语句块

4.退出 重新开始

5.某一时刻 一段时间间隔 三、简述题

1.SQL标识符的命名必须遵守以下规则:标识符的长度可以为1~128个字符。标识符的第一个字符必须是英文字母、汉字、下划线、@或者#。默认情况下,标识符内不允许含有空格,也不允许将SQL关键字作为用户定义的标识符。

2.T-SQL的运算符共有7类:算数运算符、赋值运算符、按位运算符、比较运算符、逻辑运算符、字符串串联运算符、一元运算符。

3.局部变量的声明:DECLARE @variable_name datatype [ ,?n ] 局部变量的赋值:①SET @variable_name = expression

②SELECT @variable_name = expression [ ,?n ]

[ FROM? ] [ WHERE? ]

4.全局变量是指由系统提供且预先声明的变量,不能显示地被赋值,通过在名称前保留两个@@符号区别于局部变量。全局变量在相应的上下文中是随时可用的,通常被服务器用来跟踪服务器范围和特定会话期间的信息。

5.RETURN语句用于从查询或过程中无条件退出。RETURN的执行是即时且完全的,可在任何时候用于从过程、批处理或语句块中退出,在它之后的语句不会被执行。

四、编程题 1. use xscj go

declare @n int

select @n=count(*) from xsqk where datediff(yy,出生日期,getdate())>25 if @n>=0

print '年龄大于21的学生人数有:'+cast(@n as varchar(5)) else

print '没有年龄大于21的学生' 2.

declare @i int, @sum int select @i = 1, @sum = 0 while ( @i <= 100 ) begin

select @sum = @sum + @i , @i = @i +1