SQL数据库系统及应用.docx
《SQL数据库系统及应用.docx》由会员分享,可在线阅读,更多相关《SQL数据库系统及应用.docx(19页珍藏版)》请在冰豆网上搜索。
SQL数据库系统及应用
机密★启用前
大连理工大学网络教育学院
2017年秋《SQL数据库系统及应用》
期末考试复习题
☆注意事项:
本复习题满分共:
400分。
一、填空题
1.在关系数据库的规范中,在一个关系中,消除重复字段,且各字段都是最小的逻辑存储单元代表第______________范式。
答案:
一
2.在索引命令中使用关键字CLUSTERED和NONCLUSTERED分别表示将建立的是______________和______________。
答案:
聚集索引、非聚集索引
3.常见的关系数据库有ACCESS、______________和______________。
答案:
SQLServer、Oracle
4.从表中删除数据的命令是______________from______________where……。
答案:
Delete、表名
5.向表中______________数据的命令是insertinto表名______________(constant1,constant2,……)。
答案:
插入、values
6.在一个表上,最多可以定义______________个聚集索引,最多可以有______________个非聚集索引。
答案:
1、多
7.ABS函数的功能是返回数值表达式的______________。
答案:
绝对值
8.LIKE查询中______________符号代表由零个或更多字符组成的任意字符串,下划线“_”符号代表______________字符。
答案:
%、任意单个
9.创建表的语句是:
______________。
答案:
CREATETABLE表名
10.在MicrosoftSQLServer2008中,主数据文件的后缀是______________。
答案:
.mdf
11.在MicrosoftSQLServer2008中,日志文件的后缀是______________。
答案:
.ldf
12.创建索引的语句是:
______________INDEX……。
答案:
CREATE
13.语句selectround(12.3421,2),round(23.4567,3)的执行结果是:
______________和______________。
答案:
12.34,23.457
14.关系是笛卡尔积的有限子集,所以是一个______________维表,表的每行对应一个______________,每列对应一个______________。
答案:
二、元组、域
二、问答题
1.对SQLServer实例访问,SQLServer2008支持哪几种身份验证模式?
答案:
SQLServer2008支持两种身份验证模式:
Windows身份验证模式(2分)和混合身份验证模式(2分)。
Windows身份验证模式使用Windows操作系统中的信息验证账户名和密码,默认的身份验证模式。
(3分)
混合身份验证模式允许用户使用Windows身份验证或SQLServer身份验证进行连接(3分)。
2.简述SELECT语句中的FROM、WHERE以及ORDERBY子句的作用。
SQLServer2008系统中主要数据库对象都有哪些?
答案:
在SELECT语句中:
FROM子句:
用来指定数据来源的表;(2分)
WHERE子句:
用来限定返回行的搜索条件;(2分)
ORDERBY子句:
用来指定结果的排序方式。
(2分)
主要的数据库对象包括数据库关系图、表、视图、同义词、存储过程、函数、触发器、程序集、类型、规则和默认值等。
(酌情给分,共4分)
3.如何使用IF…ELSE流程控制语句?
答案:
一个逻辑表达式的结果要么为真,要么为假。
根据不同的结果,对应于不同的操作。
这时就需要使用IF…ELSE语句在程序中对于给定条件进行判断。
语法格式如下:
IF条件表达式{语句体1}[ELSE{语句体2}](5分)
说明:
●条件表达式的运算结果应该为TRUE(真)或FALSE(假),如果条件表达式中含有SELECT语句,则必须用圆括号将SELECT语句括起来;(2分)
●当条件表达式的值为TRUE时执行语句体1,然后执行IF语句之后的语句;如果条件表达式的值为FALSE,则执行ELSE关键字后面的语句体2,然后执行IF语句之后的语句;(2分)
可以在IF区域或者ELSE区域嵌套另一个IF语句,对于嵌套的层数没有限制。
(1分)
4.如何使用WHILE流程控制语句?
答案:
WHILE语句是一种将同一段代码循环运行多次的方法,它可以根据一个条件表达式的结果,将代码从0次开始运行到指定次数,或者是持续运行直到遇见BREAK关键字退出循环。
(5分)
WHILE语句的语法格式如下:
WHILE条件表达式
Begin循环体end
可以在循环体内设置BREAK和CONTINUE关键字,以便控制循环语句的执行。
(5分)
5.T-SQL的注释符是什么?
参见p67
答案:
注释也称注解,是程序代码中不执行的文本字符串。
注释主要描述程序名称、作者名称、变量说明、代码更改日期、算法描述等。
使用注释对代码进行说明,不仅能够使程序易读易懂,而且有助于日后对程序的管理与维护。
(5分)
在T-SQL中,可以使用两种类型的注释符:
●注释符“--”用于单行注释(2分)
●注释符“/**/”,用于注释多行文字(3分)
6.SQL语句中SUM函数、COUNT函数、AVG函数的功能是什么?
答案:
SUM函数:
计算值的总和并返回总数。
COUNT函数:
计算记录数。
AVG函数:
返回指定列中的平均值。
7.简述插入操作过程中的常见异常情况。
答:
1)插入数据值的个数多于列的个数
2)提供数据的类型与列类型不兼容
3)插入数据时违背了约束
8.对表进行数据操作包括哪几种?
答:
包括数据的插入,修改,删除三种操作
9.在关系数据库中是按照“二维表”的形式来组织数据的,,每张表由哪两部分组成?
答:
一部分是关于表的结构定义信息,包括表的名称,列的名称,列的长度和列的数据类型等;另一部分是存储在表中的用户数据。
10.SQLServer中,约束条件有哪几种类型,都是什么?
答:
有五种类型:
空值约束,唯一约束,主键约束,外键约束,检查约束.
11.说明HAVING子句与WHERE子句之间的区别。
答:
WHERE子句是用来指定数据库表中数据行应该满足的条件,HAVING子句是在分组(GROUPBY子句)前提下选择每一个分组应该满足的条件
12.简述修改操作过程中的常见异常情况。
答:
1)没有要修改的数据
2)设置新值时,数据类型不兼容.3)修改数据时违背了约束
13.SQL语言的命令一般分为哪四类语句?
答:
分为查询,数据操纵,数据定义和数据控制四类语句。
四、程序题
1.有家企业要用表t1来存储客户的信息。
客户的信息包括:
代号(int,主键),名称(char(20)),电话(char(20)),传真(char(20)),备注(nvarchar(1000))。
(1)请写出创建该表的SQL语句。
(2)后来因手机流行,需要在表t1中再添加列“手机”,该列的类型是char(11)。
请写出添加该列的SQL语句。
答案:
(1)酌情给分(5分)
Createtablet1
(代号intprimarykey,名称char(20),电话char(20),传真char(20),
备注nvarchar(1000))
(2)酌情给分(5分)
altertablet1add手机char(11)
2.
(1)创建学生信息表,学生表的信息包括:
StudID(代表学号char(8),非空主键),Name(学生姓名varchar(20),非空),Birthday(生日,非空),DeptID(院系号char
(2),非空)。
请创建该表。
(2)给某公司创建表tblEmployees:
存储雇员的代号(4个字符,唯一)、身份证号码(18个字符)、名字(20个字符)和工资信息。
请写出创建这个表的T-SQL语句,要保证:
工资的值大于0,身份证号码唯一。
答案:
代码酌情给分,每个5分
(1)CREATETABLEstudent
(
StudIDchar(8)notnullPRIMARYKEY,
Namevarchar(20)notnull,
Birthdaydatenotnull,
DeptIDchar
(2)notnull
)
(2)createtabletblEmployees
(IDchar(4)unique,
IDCARDchar(18)unique,
Namechar(20),
Gongziintcheck(Gongzi>0))
3.用SQL语言实现下列功能的sql语句代码:
(1)创建数据表[宿舍表]:
宿舍表(宿舍号char(6),宿舍电话),要求使用:
主键(宿舍号)、宿舍电话:
以847开头的7位电话号码
(2)创建数据表[同学表]:
同学表(学号char(6),姓名,性别,年龄,民族,身份证号,宿舍号),要求使用:
主键(学号)、外键(宿舍号)、默认(民族)、非空(民族,姓名,年龄)、唯一(身份证号)、检查(性别)
(3)将下列宿舍信息添加到宿舍表:
宿舍号宿舍电话
1018471157
1028471777
答案:
酌情给分,共10分
(1)createtable宿舍表
([宿舍号]char(6)primarykey,
[宿舍电话]char(7)check([宿舍电话]like'847[0-9][0-9][0-9][0-9]'))
(2)createtable同学表
(学号char(6)primarykey,
姓名nchar(4)notnull,
性别nchar
(1)check(性别in('男','女')),
年龄int,
民族nchar(8)default'汉族'notnull,
身份证号char(18)unique,
宿舍号char(6)references宿舍表(宿舍号)
)
(3)insert宿舍表values('101','8471157')
insert宿舍表values('102','8471777')
4.根据以下情况,写出创建course表的语句。
属性列
数据类型
长度
空值
列约束
cs_id
nVarChar
4
NotNull
PK
cs_nm
nVarChar
20
NotNull
cs_tm
int
Null
cs_sc
int
Null
答案:
酌情给分,共10分
CREATETABLEcourse
(
cs_idnVarChar(4)primarykeyNOTNULL,
cs_nmnVarChar(20)NOTNULL,
cs_tmintNULL,
cs_scintNULL
)
5.
(1)请写出在某数据库中执行以下语句后的输出结果。
CREATETABLEtabl(CNOCHAR(3),NAMEVARCHAR(20),CLASSVARCHAR(20))
INSERTINTOtablvalues('001','方健','三年二班')INSERTINTOtablvalues('002','李勇','三年一班')
select*fromtabl
(2)请写出在某数据库中执行以下语句后的输出结果。
CREATETABLEtable1(CNOCHAR(3)primarykey,NAMEVARCHAR(20),gradeint)
INSERTINTOtable1values('001','方明',85)INSERTINTOtable1values('002','李元',90)
INSERTINTOtable1values('003','徐汇',75)INSERTINTOtable1values('004','王希',59)
INSERTINTOtable1values('005','刘玉',70)
selectCNO,NAMEfromtable1wheregradebetween60and80orderbygrade
答案:
酌情给分,每个5分
(1)
001
方健
三年二班
002
李勇
三年一班
(2)
005
刘玉
003
徐汇
6.已知有如下student表:
StudID
Name
DeptID
Minzu
1
张三
12
汉族
2
李赛
12
汉族
3
王明
13
蒙古族
4
李密
12
汉族
5
刘凤
15
满族
请写出执行以下语句后的输出结果。
(1)SELECTName,MinzuFROMstudentWHEREDeptIDBETWEEN'13'AND'15'
(2)SELECT*FROMstudentWHEREDeptIDIN('12','15')
答案:
(1)5分
王明
蒙古族
刘凤
满族
(2)5分
1
张三
12
汉族
2
李赛
12
汉族
4
李密
12
汉族
5
刘凤
15
满族
7.请写出在某数据库中执行以下语句后的输出结果。
CREATETABLEtable8(CNOCHAR(3)primarykey,NAMEVARCHAR(20),gradeint)
INSERTINTOtable8values('001','方明',85)INSERTINTOtable8values('002','李元',90)
INSERTINTOtable8values('003','徐汇',75)INSERTINTOtable8values('004','王希',59)
(1)selectmax(grade)as最高分,sum(grade)'总分',min(grade)最低分fromtable8
(2)selectavg(grade)as平均分fromtable8
(3)select*fromtable8wheregrade<80orderbycnodesc
答案:
(1)3分
最高分
总分
最低分
90
309
59
(2)3分
平均分
77或77.25(任答一个均正确)
(2)4分
CNO
NAME
grade
004
王希
59
003
徐汇
75
8.已知有如下student表:
StudID
Name
DeptID
Minzu
1
张三
12
汉族
2
李赛
12
汉族
3
王明
13
蒙古族
(1)写出查询student表中非12系(DeptID)的学生信息的语句。
(2)写出查询表中Name包含“李”的所有信息的语句。
答案:
(1)SELECT*FROMstudentWHERENOT(DeptID='12')(5分)
(2)SELECT*FROMstudentWHERENameLIKE'%李%'(5分)
9.已知数据库中存在以下两个表,同学表(学号char(6),姓名,性别,年龄,民族,身份证号,宿舍号),宿舍表(宿舍号char(6),宿舍电话)。
(1)从同学表中查询女同学的最大年龄、最小年龄、平均年龄。
(2)创建带参数的存储过程[某宿舍同学]:
姓名,性别,宿舍电话,执行此过程,查询'101'宿舍情况
(3)将下列宿舍信息添加到宿舍表:
宿舍号宿舍电话
1048471057
1098470333
答案:
酌情给分,共10分
(1)select最大年龄=max(年龄),最小年龄=min(年龄),平均年龄=avg(年龄)from同学表where性别='女'
(2)createprocedure[某宿舍同学]@宿舍号varchar(6)as
select姓名,性别,宿舍电话from同学表视图where宿舍号=@宿舍号
goexecute[某宿舍同学]'101'
(3)insert宿舍表values('104','8471057')
insert宿舍表values('109','8470333')
10.请写出在某数据库中执行以下语句后的输出结果。
CREATETABLEtable2(CNOCHAR(3)primarykey,NAMEVARCHAR(20),gradeint)
INSERTINTOtable2values('001','方明',89)INSERTINTOtable2values('002','李元',90)
INSERTINTOtable2values('003','徐汇',60)INSERTINTOtable2values('004','王希',75)
CREATETABLEtable3(CNOCHAR(3)primarykey,sdeptchar(20))
INSERTINTOtable3values('001','计算机系')INSERTINTOtable3values('002','电子系')
INSERTINTOtable3values('003','电子系')INSERTINTOtable3values('004','计算机系')
(1)selectsdept,SUM(grade)fromtable3jointable2ono=ogroupbysdept
(2)selectmax(grade)as最高分,min(grade)最低分fromtable2
(3)selectnamefromtable3jointable2ono=owheretable3.sdept='计算机系'
答案:
(1)
电子系
150
计算机系
164
(2)
最高分
最低分
90
60
(3)
方明
王希
11.现有数据表如下:
学生信息表(学号char(6),姓名,性别,民族,身份证号),课程信息表(课号char(6),名称),成绩信息表(ID,学号,课号,分数)
(1)从学生信息表中查询姓刘的女同学的情况:
姓名、性别、民族。
(2)查询有一门或一门以上课程成绩小于60分的所有学生的信息,包括学号、姓名。
答案:
(1)select姓名,性别,民族from学生信息表where姓名like'刘%'and性别='女'(5分)
(2)select学号,姓名from学生信息表where学号in(selectdistinct学号from成绩信息表where分数<60)(5分)
12.
(1)使用SQL语句把学生基本信息表中姓名由8个字符改为20个字符。
(2)把课程表中课程号为C001的上课教师由胡小雨改为胡大雨。
答:
(1)altertable学生基本信息表
altercolumn姓名char(20)notnull
(2)update课程表
set上课教师=’胡大雨’
where课程号=’C001’
13.
(1)在学生信息表(学号,姓名,性别)中查询所有学生的姓名,学号和性别信息。
(2)按照性别降序,显示学号、姓名和性别。
答:
(1)select姓名,学号,性别from学生信息表
(2)select学号,姓名,性别from学生信息表orderby性别desc
14.
(1)在学生信息表中(学号,姓名,奖学金,出生日期)查询学生中年龄最大的前三名的学号和姓名。
(2)查询奖学金在300元(包括300元)与1500元(包括1500元)之间的学号、姓名和奖学金值。
答.
(1)selecttop3学号,姓名
from学生信息表
orderby出生日期
(2)select学号,姓名,奖学金from学生信息表where奖学金between300and1500
15.在学生基本信息表(字段为学号、姓名、性别)中建立一个DELETE类型的触发器“学生信息删除触发器”,触发动作是显示删除数据的提示信息。
答:
createtrigger学生信息删除触发器on学生基本信息表
fordelete
as
print‘学生基本信息表删除了下列数据行’
select学号,姓名,性别fromdeleted
16.在学生基本信息表中(字段为学号、姓名、性别、出生年月日)查询年龄最小的学生的出生年月日。
答:
selectmax(出生日期)as‘出生年月日’from学生基本信息表
17.现有视图如下:
成绩表视图(学号,姓名,课号,课程名称,分数)。
要求创建查询某门课程的最高分、最低分、平均分的存储过程[某门课程高低均分],同时执行该过程,查询所有修“专业英语”这门课程的学生的最高分、最低分、平均分。
createprocedure[某门课程高低均分]@课程名nchar(16)as
select课程名称,最高分=max(分数),最低分=min(分数),平均分=avg(分数)
from成绩表视图
where课程名称=@课程名
groupby课程名称
go
execute[某门课程高低均分]'专业英语'(10分)
18.已知student数据库中学生信息表内容如下:
学生信息表(sxs)
学号
(char,7)
姓名
(char,8)
性别
(char,2)
出生日期
datetime
政治面貌
(char,10)
林一帆
男
1982-4-5
团员
李华
女
1984-11-6
群众
(1)修改李华的政治面貌改为“党员”。
UPDATEsxs
SET政治面貌='党员'
WHERE姓名='李华'
(2)删除李华的这条记录。
DELETEFROMsxs
WHERE姓名='李华'
(3)查询所有学生的基本信息,并按学号排序。
SELECT*FROMsxs
ORDERBY学号
五、单选题
1.MicrosoftSQLServer是()。
A.基于网状型数据库模型的数据库管理系统
B.基于层次型数据库模型的数据库管理系统
C.基于关系型数据库模