SQL SERVER课程复习.docx
《SQL SERVER课程复习.docx》由会员分享,可在线阅读,更多相关《SQL SERVER课程复习.docx(14页珍藏版)》请在冰豆网上搜索。
SQLSERVER课程复习
SQLSERVER课程复习
一.知识点
1.数据库系统的核心是数据库管理系统,简称DBMS,DBS=DBMS+DB。
2.常见的数据库管理系统包括网状、层次、关系三种模型,本课程的SQLSERVER属于关系型DBMS。
常见的Oracle、Access也属于关系型数据库。
3.在SQLServer2008中,系统数据库包括master、model、msdb、resource、tempdb等5个,其中resource是隐藏数据库,在SSMS中看不到。
这几个系统数据库中分别保存了什么数据?
答:
model数据库是SQLserver实例上创建的所有数据库的通用模板。
Master数据库记录SQLserverde系统级信息。
是数据的核心。
Msdb数据库代理用于计划警报和作业,也可以有其他功能作用。
Tempdb用于存放连接到SQL实例的所有用户临时表和临时存储过程以及其他临时性对象。
Resource数据库是一个只读和隐藏的数据库。
4.在SQLServer2008中,数据库文件包括主数据文件.mdf,辅助数据文件.ndf和日志文件.ldf。
一个数据库可以有几个主文件?
几个辅助文件?
几个日志文件?
文件和文件组之间的关系是什么?
各类文件可以分属几个文件组?
答:
一个数据库中,可以有且仅有一个主文件,辅助文件可有可无,日志文件至少有一个,文件组是文件的逻辑集合。
各类文件可以分属一个的文件组,一个数据库文件只能存在于一个文件组中。
5.熟悉2008常见的数据类型,包括整型、小数、字符串(普通、Unicode)、二进制、时间日期等各种详细类型。
数据库类型:
整型—整数:
intbigintsmallinttinyintbit
小数:
floatrealdecimalnumbericmoneysmallmoney
字符串数据类型:
普通字符串:
charvarchar(n)text
Unicode:
nchar(n)nvchar(n)
二进制字符串:
binary(n)varbinary(n)image
时间和日期:
datatimesmalldatatime
其他数据类型:
sql_varianttimestampunipueidentifierxmltablecursor
6.数据库的特点是什么?
数据库是存放数据的仓库,仓库中的数据不是简单堆积在一起的,而是按照一定的格式存放的,特点是:
永久保存、可共享、较小的冗余度、较高的数据独立性、易扩展性。
8.SQLServer中,系统存储过程的名字以什么开头?
用于查看数据库信息的系统存储过程是什么?
答:
系统存储过程的名字以sp开头,用于查看数据库信息的系统存储过程是sp_helpdb
9.T-SQL语言中,删除表中数据的命令是delete,删除数据表和数据库的命令是drop。
10.触发器是特殊的存储过程,没有参数、返回值,切由系统自动调用,不可由用户调用。
11.修改表结构的语句altertable语句的addconstraint子句可以实现添加列约束。
12.数据库设计包括哪几个阶段?
分别使用什么方法进行设计?
在E-R模型中,实体、实体间的联系等分别用什么图形表示?
。
数据库设计包括四个阶段,1.需求分析:
调查收集与分析客户在数据库管理中的信息需求,处理需求,安全性需求和完整性需求、2.概念结构设计:
E-R模型,逻辑数据模型,、3.逻辑结构设计:
关系模型.4、数据库实现。
在E-R模型中,实体用矩形表示,实体间的联系用菱形表示。
13.T-SQL中合法标示符的定义规则是什么?
要能有效利用规则辨别哪些是合法标示符。
定义规则是:
1.标识符长度可以为1-128个字符2.标识符首字符必须为字符或下划线(_)at符号(@)数字符号(#)3.标识符第一个字符的后续字符可以为Unicode3.2标准所定义的字母、数字、或@,#、_符号。
4.标识符不能嵌入空格或其他特殊字符。
5.标识符不能与sql中保留的关键字同名。
14.什么是外键约束?
有什么特点?
如果表A中的主关键字是表B中的字段,则称该字段为表B的外键,表A为主表,表B为从表。
外键约束的特点可以在多个数据表间建立关联,保证数据的参照完整性和域完整性。
15.在SQL查询语句select中各个分组的子句的功能是什么?
如:
ORDERBY、HAVINGBY、COMPUTEBY、GROUPBY。
ORDERBY排序ASC是升序,DESC是降序。
GROUPBY在结果集中分组汇总。
HAVINGBY在聚合前先筛选记录,COMPUTEBY字句在结果集内生成控制中断和分类汇总。
16.建立索引的目的是什么?
索引的分类?
建立索引可以快速访问数据库表中的特定信息。
索引分类:
聚集索引,非聚集索引、简单索引,复合索引、唯一索引,非唯一索引。
17.存储过程的定义是什么?
存储过程在数据库服务器执行的一组T_SQL语句的集合,经编译后存放在数据库服务器端。
18.对应模糊查找like‘%a_’匹配的是什么格式的字符串。
以a结尾的字符串
19.关系模式由2NF转化为3NF是消除了非主属性对码的什么依赖?
关键字的依赖
20.SQLServer2008中的对象有哪些?
。
关系图、表、视图、存储过程、用户、角色、规则、默认、用户定义的数据类型、用户定义的函数、全文目录
21.waitfor语句用于通知SQLServer等待一定的时间后执行,等待15秒对应什么waitfor语句。
WAITFORDELAY’00:
00:
15’
22.下列三个个代码段运行结果是?
。
createtablett(nlint,n2numeric(5,0),n3numeric(4,2))
go
insertintottvalues(1.7,1.6,1.4)
select*fromtt
1,2,1.40
createtablett(nlint,n2numeric(5,0),n3numeric(4,2))
go
insertintottvalues(1.6,1.8,1.4)
select*fromtt
1,2,1.40
createtablexx(xlint,x2numeric(5,0),x3numeric(4,2))
Go
Insertintoxxvalues(1.8,1.6,1.4)
Select*fromxx
1,2,1.40
23.在SQLServer2008中允许嵌套视图不能超过多少层?
视图最多引用多少列?
32层1024列
24.SQLSERVER2008的三种备份方式是?
完整备份、差异备份或增量备份、事务日志备份、文件和文件组备份
25.游标的使用分哪五步,分别使用什么语句?
声明游标:
declare打开游标:
open读取游标:
fetch关闭游标:
close
释放游标:
deallocate
26.关系数据库的基本数据结构是二维表。
27.数据库规范化理论包括哪些内容?
数据库的第一、第二、第三、第三、第五范式
28.在SQLServer2008中,触发器的特性:
强化约束、级联修改、跟踪变化。
29.数据库系统的主要特征是什么?
永久保存、可共享、较小的冗余度、较高的数据独立性、易扩展性
30.外连接、内连接、全连接的关键字是什么?
(提示:
***JOIN)。
外链接outerjoin内连接innerjoin全连接:
fulljoin
31.查询所有姓王且家庭住址为空的学生信息;检索学生表中’网络’或’软件’专业的学生,则where条件为什么?
Where专业‘网络’OR‘软件’and家庭住址‘null’
32.用于得到系统当前日期和时间的函数是GETDATE()。
33.下列代码的运行结果是?
。
34.在SQLServer2008中一个表最多允许有多少个非聚集索引,多少个聚集索引?
一个聚集索引249个非聚集索引
35.哪个角色属于固定服务器角色?
Sysadmin
36.可以与子查询一起检查行或列是否存在的字句是什么?
。
EXISTS
37.在SQLServer2008中,触发器根据触发条件分类包括三种类型:
INSERT触发器、UPDATE触发器、DELETE触发器。
38.SSMS的主要功能包括哪些?
对于数据表的建立、修改、查看、删除
39.SQLSERVER2008的安全模型包括哪些内容?
客户机安全机制、网络传输安全机制、实例级安全机制、数据库级别安全机制、对象级别安全机制
40.局部变量声明、赋值和输出的语句是什么?
声明:
Declare@变量名赋值:
set@局部变量=表达式输出:
print表达式
41.存储过程特点的是什么?
1、存储过程在服务器端执行,执行速度快。
2、存储过程执行一次后,就驻留在高速缓存存储器中,以后的操作可以直接调用,提高系统性能。
3使用存储过程可以完成所有操作,确保数据库的安全。
4、自动完成需要预先执行的任务。
42.概念模型是对现实世界的抽象,使用什么表示?
E_R
43.查看SQLServer服务器的版本信息,使用什么语句。
PRINT@@VERSION
44.数据的完整性指数据的正确性和一致性,包括哪三个方面?
实体完整性、参照完整性、域完整性。
45.定义数据库语句中,设置数据库选项时,什么关键字表示单用户?
什么表示自动收缩。
Single单用户自动收缩:
autoshrink
46.子查询分为哪两类?
选择查询参数查询
47.打开游标后,用于判断该游标是否打开成功的全局变量是什么?
@@ERROR
48.批处理以go语句作为结束标志。
49.在SQLServer中,用于修改数据库选项的系统存储过程是什么?
ALTERPROCEDURE存储过程名
50.数据表中数据的增删改查对应的SQL语句是INSERT\DELETE\UPDATE\SELECT。
51.对查询结果集过滤重复行使用什么子语?
DISTINCT
52.撤销授予权限使用和拒绝授予权限分别使用什么语句?
拒绝:
deny权限on对象to用户
撤销:
revoke权限on对象to用户
53.SQLServer是一种什么类型的体系结构的关系数据库管理系统?
54.SQLServer的编程语言是T-SQL。
55.层次模型、网状模型和关系模型分别使用什么表示数据之间的关系?
层次模型使用记录和链接来表示、网状模型使用记录的集合表示,关系
模型使用二维表来表示。
56.创建视图时使用什么子句对视图的进行加密?
WITHENCRYPTION
57.数据表行、列分别称为什么?
行称为记录,列称为字段。
58.SQLServer2008中的实例分为哪两类?
默认实例命名实例
59.在SQLServer中,使用什么子句对查询结果过滤重复行。
DISTINCT
60.按style格式将表达式的值转换为指定的数据类型,可以使用什么函数?
CONVERT
61.触发器按照被激活的时机分为之后after和之前instead两种触发方式。
62.在查询分析器的查询窗口中输入SQL语句后,按下F5键可以执行查询。
63.SQLServer2008的全局变量名字必须以@@开头。
64.SQLServer注释包括两种形式,分别是单行注释和多行注释,格式分别为什么?
单行注释–注释内容
多行注释/**/
二.技能点
1.向数据库中添加一个名为user的文件组,然后在D盘data文件夹中添加一个数据文件teadd.ndf并将其添加到文件组中
alterdatabase数据库名
addfilegroupuser
go
alterdatabaseteachers/*添加数据文件*/
addfile(name=teadd,filename=’d:
\data\teadd.ndf’)tofilegroupuser
go
execsp_helpdbteachers/*查看数据库信息*/
go
sp_dboption‘teachers’,’single’,’true’/*设置数据库为单用户*/
2.用于计算1!
+2!
+3!
+4!
+5!
的程序。
declare@iint,@tint,@sumint
select@i=1,@t=1
set@sum=0
while@i<=5
begin
set@t=@t*@i
set@sum=@sum+@t
set@i=@i+1
end
print@sum
3.使用T-SQL语句建立员工表,要求如下:
1)工号为主键,建立check约束,使得工号字段只能取5位数字
2)为姓名字段设置为唯一约束
3)为性别字段建立check约束,性别取值为“男”或“女”
4)为部门字段建立默认值约束,默认值为“销售部”
createtable员工表
(
工号char(6)notnullprimarykey
check(工号like’[0-9][0-9][0-9][0-9][0-9]’),
姓名char(8)notnullunique,
性别char
(2)check(性别=’男’or性别=’女’),
出生日期datetime,
部门varchar(8)default‘销售部’,
备注Text
)
4.用于创建一个学生信息视图stu,查看学生的学号、姓名、专业和年龄,并对成绩进行判断,划分相应的等级优、良、中、差的程序。
createviewstu
as
select学号,姓名,专业,
等级=case
when成绩>=90and成绩<100then‘优’
when成绩>=80then‘良’
when成绩>=70then‘中’
when成绩>=60then‘差’
end,
年龄=year(getdate())-year(出生日期)
from学生表,成绩表
where学生表.学号=成绩表.学号
5.用于将数据库Book中原有的主数据文件的初始大小改为2MB,按2MB自动增长,最大容量没有限制的程序。
alterdatabasebook/*修改数据文件*/
modifyfile
(name=‘book’,size=2,maxsize=unlimited,filegrowth=2)
go
execsp_helpdbBook/*查看数据库信息*/
sp_dboption‘Books’,’autoshrink’,’true’/*设置数据库为自动收缩*/
6.程序用于输出1~3000之间所有能被125整除的整数。
declare@iint
set@i=1
while@i<=3000
begin
if@i%125=0
print@i
set@i=@i+1
end
7.使用T-SQL语句建立学生表,要求如下
1)学号为主键,建立check约束,使得学号字段只能取5位数字
2)姓名字段设置为唯一约束
3)性别字段建立check约束,只允许输入1和0分别表示’男’、’女’
4)为家庭住址字段建立默认值约束,默认值为’开封大学’
createtable学生表
(
学号char(6)notnullprimarykey
check(学号like’[0-9][0-9][0-9][0-9][0-9]’),
姓名char(8)notnullunique,
性别bitcheck(性别=‘男’or性别=‘女’),
出生日期datetime,
家庭住址varchar(8)default‘开封大学’,
备注Text
)
8.以下程序用于创建学生信息视图stu,查看选修多门课程的学生的学号、姓名、年龄和成绩,按正常习惯显示性别为’男’或’女’。
createviewstu
as
select学号,姓名,成绩
性别=case性别
when0then'男'
when1then'女'
end,
年龄=year(getdate())-year(出生日期)
from学生表,成绩表
where学生表.学号=成绩表.学号
groupby学生表.学号
havingcount(课程号)>1
9.以下程序用于向student数据库中添加一个名为user1的文件组,然后在D盘data文件夹中添加数据文件stuadd.ndf并将其添加到文件组中。
ALTERDATABASEstudent
addfilegroupuser1
Go
ALTERDATABASEstudent
addfile(name=stuadd,filename=’D:
\data\stuadd.ndf’)
/*添加文件*/
10.以下的程序用于计算1+2+3+…+100的行。
declare@iint,@sumint
set@i=1
set@sum=0
while@i<=100
Begin
set@sum=@sum+@i
set@i=@i+1
end
print@sum
11.使用T-SQL语句建立商品表,要求如下:
1)货号为主键,建立CHECK约束,使得货号字段只能取6位数字
2)为货名字段设置为唯一约束
3)为进价字段建立CHECK约束,要求进价必须>0
4)为类别字段建立默认值约束,默认值为“办公用品”
CREATETABLE商品表
(
货号Char(6)notnullPrimarykey
primarykey,
/*检查约束:
货号字段只能取6位数字*/
货名char(8)notnullunique,
进价decimal(8,2)check(进价>0),
/*检查约束:
进价必须>0*/
类别Varchar(8)default’办公用品’,
/*默认值约束:
“办公用品”*/
)
12.以下程序用于声明一个名为CRSCOURSE的游标,并利用游标遍历,显示整个结果集,请将程序补充完整
DECLARE@COUNOVARCHAR(3),@COUNAMEVARCHAR(20)
CRSCOURSEcursor
FORSELECTCOUNO,COUNAMEFROMCOURSEORDERBYCOUNO
OpenCRSCOURSE
FETCHNEXTFROMCRSCOURSEINTO@COUNO,@COUNAME
WHILE@@fetch_status=0
BEGIN
PRINT’课程号:
’+@COUNO+’课程名称:
’+@CouName
FETCHNEXTFROMCRSCOURSEINTO@COUNO,@COUNAME
END
CloseCRSCOURSE
13.以下程序用于将数据库sample中原有主数据文件的初始大小改为4MB,按10%自动增长,最大容量没有限制。
Alterdatabasesample
modifyfile/*修改数据文件*/
(name=‘sample’,size=4,filegrowth=4,Maxsize=unlimited)
Go
EXECsp_helpdbsample/*查看数据库信息*/
14.下面的程序用于输出所有的水仙花数。
declare@iint,@aint,@bint,@cint
set@i=100
while@i<1000/*设定循环次数*/
begin
set@a=@i/100
set@b=(@i–@a*100)
set@c=@i–@a*100-@b*10
if(@a*@a*@a+@b*@b*@b+@c*@c*@c=@i)
print@i
set@i=@i+1
End
15.使用T-SQL语句建立员工表,要求如下
1)工号为主键,建立CHECK约束,使得工号字段只能取6位数字
2)为姓名字段设置为唯一约束
3)为性别字段建立CHECK约束,性别取值为“男”或“女”
4)为部门字段建立默认值约束,默认值为“销售部”
CREATETABLE员工表
(
工号Char(6)notnullprimarykey,/*设定为主键*/
check(工号like’[0-9][0-9][0-9][0-9][0-9]’)
姓名char(8)notnullunique,/*设定唯一约束*/
性别char
(2)check(性别=’男’or性别=’女’),
出生日期datetime,
部门Varchar(8)default’销售部’,
备注Text
)
16.学生管理数据库中有以下数据表:
学生表(学号,姓名,性别,专业,出生日期)
课程表(课程号,课程名,学时,学分)
成绩表(学号,课程号,成绩)
用SQL语句实现下列功能,请写出相关代码:
1.在学生表中查询软件专业所有姓‘张’的学生的学号、姓名和年龄。
2.查询成绩是前3名的学生的姓名、专业、成绩。
3.定义一个函数func,根据出生日期和当前日期计算年龄。
4.建立一个名为学生_pro1的存储过程,输入姓名,查询该学生的学号、选修的课程名和分数。
5.创建一个名为修改学生的替代触发器,当对学生表中的数据进行修改时,可以自动统计并显示修改的行数。
6.在学生表中查询应用专业的女生的姓名和年龄。
7.查询选修课程名为“网页制作”的学生的学号、姓名、平均分,并按平均分降序排列。
8.创建一个名为学生_pro1的存储过程,输入学号,查询该学生的姓名、选修的课程名和分数。
9.创建一个名为删除学生的后触发器,当删除学生表中某个学生时,成绩表中该学生的相关记录同时全部删除,实现学生表和成绩表的级联删除
10.在学生表中查询1997年出生的应用专业学生的学号和姓名。
11.查询选修课程名为”网络基础”的学生的学号、姓名、平均分,并按平均分降序排列。
12.定义一个函数prim,判断一个数是否是素数。
13.建立一个名为学生_pro1的存储过程,输入学号,查询该学生的姓名、课程名、分数。
14.创建一个名为删改学生的替代触发器,当更新学生表中某个学生时,显示提示信息,学生表