SQLServer各章知识点及练习题Word文档下载推荐.docx
《SQLServer各章知识点及练习题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《SQLServer各章知识点及练习题Word文档下载推荐.docx(27页珍藏版)》请在冰豆网上搜索。
C、DB包括DBS和DBMS
D、DBS就是DB,也就是DBMS
4、DBMS目前最常用的模型是()。
A、网状模型B、层次模型
C、面向对象模型D、关系模型
5.()是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。
数据库在建立、使用和维护时由其统一管理、统一控制。
A.DBMSB.DBC.DBSD.DBA
6.SQLServer2008是一个()的数据库系统。
A.网状型B.层次型C.关系型D.以上都不是
12.DBA是()
A.操作系统B.数据库管理系统C.数据库D.数据库管理员
7、有个学生关系,其关键字为学号;
一个课程关系,其关键字为课程号;
一个选修关系,其关键字为学号和课程号的组合,则学号和课程号分别为该关系的()
A、外关键字(外键)B、主辅关键字C、主关键字D、什么都不是
7、包含在任何一个候选关键字中的属性称为(),不包含在任何一个侯选关键字中的属性称为()。
A、主属性B、次属性C、非主属性D、外属性
8、一个同学可以借阅多本图书,一本图书可能有多个同学借阅,学生和图书之间的联系为()。
A、一对多B、多对多C、多对一D、一对一
9、关系中的元组和属性分别对应二维表中的(B)和(A)。
A、列B、行C、记录D、结构
10、关系模型中,一个关键字是()。
A、可由多个任意属性组成
B、至多由一个属性组成
C、可由一个或多个其值能唯一标识该关系模式中任何元组的属性组成
D、以上都不是
11、同一个关系模型的任意两个元组值()。
A、不能全同B、可全同C、必须全同D、以上都不是
12、一个关系数据库文件中的各条记录()。
A、前后顺序不能任意颠倒,一定要按照输入的顺序排列
B、前后顺序可以任意颠倒,不影响库中的数据关系
C、前后顺序可以任意颠倒,但排列顺序不同,统计处理的结果就可能不同
D、前后顺序不能任意颠倒,一定要按照关键字段值的顺序排列
13、关系模型的任何属性()。
A、不可再分B、可再分
C、命名在该关系模式中可以不惟一D、以上都不是
*14、若关系R∈1NF,且它的每一非主属性都完全函数依赖于主键,则称R属于(B)。
A、第一范式B、第二范式C、第三范式D、第四范式
*15、若关系R∈2NF,且它的每一非主属性都不传递函数依赖于主键,则称R属于(C)。
二、填空题
1、为保证多个用户可同时共享数据库中的数据,数据库管理系统(DBMS)必须提供数据库的安全性控制、数据库的完整性控制、数据库恢复、并发控制和事务支持的功能。
2、客观存在并可相互区别的事物称为实体。
3、关系模型的基本结构是表,它又称为关系;
关系模型中数据之间的联系是通过
公共属性实现的。
4、关系模型用表格形式结构来表示实体类型和实体之间的联系。
关系在用户看来是一个表,记录(元组)是其中的行,属性是其中的列。
5、一个关系模式的定义主要包括关系名、属性名、属性类型、属性长度和关键字。
6、关系数据库中可命名的最小数据单位是属性名。
7、关系模式是关系的框架,相当于记录格式。
8、在一个实体表示的信息中,称能唯一标识实体的属性或属性组为关键字。
9、已知系(系编号,系名称、系主任、电话、地点)和学生(学号,姓名,性别,入学日期,专业,系编号)两个关系,系关系的主关键字是系编号,学生关系的主关键字是学号,学生关系的外关键字是系编号。
10.完整性约束包括实体完整性、_参照_完整性和用户定义完整性。
_实体完整性用于保证数据库中数据表的每一个特定实体的记录都是惟一的。
*7、关键的规范化是对关系的分解过程。
*8、在1NF,2NF,3NF之间,相互是一种包含的关系。
*9、在一个关系R中,若每个数据项都是不可再分割的,那么R一定属于第一范式。
*10、设有关系R(工号,姓名,工种,定额),则R属于第二范式,将其转化为第三范式结果应为R1(工号,姓名,工种)和R2(工种,定额)。
关系R属于第二范式而不属于第三范式的说明:
∵关系R的主键是工号,主键是单属性不可能存在部分函数依赖∴R∈2NF
又∵关系R中工号→工种,工种→工号,工种→定额,∴关系R中存在传递函数依赖,关系R不属于第三范式。
三、数据库概念设计题
1.说明下列E-R图中,矩形、椭圆和菱形各表示什么?
从上面的E-R图中,回答学生的主键和课程的主键各是什么?
试将下面的E-R图转换成关系模式。
(1)
成绩
m
n
选修
课程
学生
答:
用表示实体用表示属性
用表示实体间联系
学生的主键是学号,课程的主键是课程号。
上面的E-R图转换成三个关系:
学生(学号,姓名,性别,年龄,班级)
课程(课程号,课程名,学分,学时)
选修(学号,课程号,成绩)
在选修关系中,学号、课程号分别称为选修关系的外键。
2、下面的E-R图反映实体间什么联系?
实体主键各是什么?
请把该E-R图转换为关系模式。
上面的E-R图表示的是学生实体与班级实体间的联系是多对一联系。
转换为关系模式应该有2个。
请同学们自己转换关系模式。
第2章SQLServer2008概述
1、了解SQLServer2008体系结构的4个组成部分;
2、SQLServer2008的版本;
(6个不同的版本)
企业版:
功能最齐全、性能最优
标准版:
适合于中小型企业的数据管理
开发人员版:
适合于应用程序开发人员
工作组版:
入门级的数据库产品
精简版:
是一个免费、易用且便于管理的数据库版
企业评估版:
运行时间只有120天。
3、了解配置服务器、查看服务器属性
第3章创建和管理SQLServer2008数据库
1、SQLServer2008的两种数据库类型,系统数据库和用户数据库;
系统数据库:
master、tempdb、msdb、ReSource和model
master数据库是SQLServer的核心,如果该数据库被损坏,SQLServer将无法正常工作。
msdb数据库是一个与SQLServerAgent服务有关的数据库
model数据库是所有数据库的模板,当执行CREATEDATABASE语句时,将通过复制model数据库中的内容来创建数据库的第一部分。
Resource数据库是隐藏、只读的,包含了SQLServer2008中的所有系统对象
Tempdb数据库保存所有临时表和临时存储过程
用户数据库:
如示例数据库AdventureWorks,还有用户自己创建的数据库
2、数据库的组成;
一个SQLServer2008的数据库由多个文件组成。
SQLServer2008中每个数据库包括主数据库文件(.mdf)、辅助数据库文件(.ndf)和事务日志文件(.ldf)。
一个SQLServer2008的数据库至少应包含一个主数据库文件和一个事务日志文件。
每个数据库文件有两个名称:
逻辑文件名:
(logical_file_name):
是在所有Transact-SQL语句中引用文件时所使用的名称。
物理文件名(os_file_name):
是包括目录路径的物理文件名。
是操作系统下的文件名。
文件组:
可以将数据文件分成文件组。
有两种类型的文件组:
主文件组(Primary)和用户定义文件组。
注意:
日志文件不包括在文件组内。
3.掌握建立数据库的方法;
用图形界面方式创建和用SQL语句建立:
CREATEDATABASE数据库名
练习题
1、当执行CREATEDATABASE语句时,将通过复制()数据库中的内容来创建数据库的第一部分。
A、MasterB、MsdbC、ModelD、Tempdb
2、主数据文件的扩展名是()
A、.mdfB、.ndfC、.ldfD、.pdf
3、在SQLSERVER中不是系统数据库的是()。
A.MasterB.ModelC.TempdbD.Pubs
4.MicrosoftSQLServer2008系统由四个部分组成,这四个部分被称为4个服务,其中核心服务是()。
A.数据库引擎B.AnalysisServices
C.ReportingServicesD.IntegrationServices
5.下列哪个不是SQLServer数据库文件的后缀。
()
A..mdfB..ldfC..tifD..ndf
6.下面描述错误的是()。
A.每个数据文件中有且只有一个主数据文件。
B.日志文件可以存在于任意文件组中。
C.主数据文件默认为在primary文件组。
D.文件组是为了更好的实现数据库文件组织。
二、填空题
1、每个SQLServer2008的数据库至少具有两个操作系统文件:
一个数据文件和一个日志文件。
2、每个数据库文件有两个名称,分别是逻辑文件名和一个物理文件名。
第4章创建和管理SQLServer2008数据表
1.掌握建立表的方法,特别注意用SQL语句建立约束的方法,6种约束
CREATETABLE学生表
(学号varchar(11)primarykey,
姓名varchar(20)notnull,
性别char
(2)default‘男’,
出生日期smalldatetime,
入学日期smalldatetime,
院系名称varchar(20),
身份证char(18)UNIQUE
)
CREATETABLE选课表
(学号varchar(11)FOREIGNKEYreferences学生表(学号),
课程号varchar(6)FOREIGNKEYreferences课程表(课程号),
分数intcheck(分数between0and100),
primarykey(学号,课程号)
)
2、标识列(IDENTITY):
需要指定两个值:
种子值和增量值,标识列的类型定义为int或bigint类型。
3、一般掌握修改表结构和删除表的方法:
ALTERTABLEDROPTABLE
4、掌握INSERT、UPDATE、DELETE语句的格式和功能
(1)INSERT语句的基本语法:
INSERTINTO表名[(列名1,列名2,……,列名n)]
VALUES(值1,值2,……,值n)
有时用:
INSERTINTO表名(列名1,列名2,……,列名n)
SELECT语句
(2)UPDATE语句基本语法:
UPDATE表名SET列名1=值1[,列名2=值2,……,列名n=值n]
WHERE条件表达式
(2)DELETE语句基本语法:
DELETEFROM表名WHERE条件表达式
1、设学生表结构是:
学号varchar(11)primarykey,
姓名varchar(20)notnull,
性别char
(2)default‘男’,
身份证char(18)
需要插入1988年1月2日出生的张三的记录,若执行
Insertinto学生表(学号,姓名,院系名称,出生日期)
Values(‘20080101’,‘张三’,‘计算机系’,1988-1-2)
则命令()。
A、编译出错B、编译通过但不能插入
C、能插入出生日期D、说不准
2、要在学生表中增加一个日期型字段B,应该用()
A、INSERTINTO学生表ADDB
B、ALTER学生表ADDBDATETIME
C、ALTERTABLE学生表ADDBDATETIME
D、ALTERTABLE学生表ADDBDATE()
3、要在学生表中删除一条字符类型字段A的值是字符串‘B’的记录,应该用()
A、DELETEFROM学生表WHEREA=B
B、ALTER学生表DROPA
C、DELETEFROM学生表WHEREA=‘B’
D、DELETEFROM学生表WHEREAIS‘B’
4、限制输入到列的值的范围,应使用()约束。
A.CHECKB.PRIMARYKEYC.FOREIGNKEYD.UNIQUE
第5章数据查询
SELECT语句一般格式为:
SELECT*|[ALL|TOPn]|DISTINCT]<
目标列表达式>
[,<
]…
FROM<
表名或视图名>
[,<
[WHERE<
条件表达式>
]
[GROUPBY<
列名1>
[HAVING<
]]
[ORDERBY<
列名2>
[ASC|DESC]]
SELECT语句练习题:
实验原始数据:
Studentmaneger数据库,有三个表:
学生表记录24条,计算机系22,财经系1,机电系1;
课程表记录7条选课表记录77条
1、对单个表的查询,查询结果已给出,请同学们将命令补充完整。
(1)查询财经系全体学生的信息。
Select*from学生表where院系名称='
财经系'
(2)查询姓张的学生的学号和姓名
select学号,姓名from学生表where姓名like'
张%'
(3)查询每门课的学分
select课程名,学分
from课程表
(4)查询平均分大于等于90分的学生学号和平均分
select学号,avg(分数)as平均分
from选课表
groupby学号havingavg(分数)>
=90
(5)查询平均分最高的前三名学生学号和平均分
selecttop3学号,avg(分数)as平均分
groupby学号
orderbyavg(分数)desc
(6)查询学号最后一位为5的学生
Select*from学生表where学号like'
%5'
2、对多个表的连接或嵌套查询:
(7)查询学生的学号、姓名,选修课程名称和成绩,先按课程号升序排列,相同课程按分数降序排列
useStudentManager
select学生表.学号,学生表.姓名,课程表.课程名,选课表.分数
from学生表
innerjoin选课表on学生表.学号=选课表.学号
innerjoin课程表on选课表.课程号=课程表.课程号
orderby选课表.课程号,分数desc
请同学们修改为用Where子句的连接查询
from学生表,选课表,课程表
where选课表.课程号=课程表.课程号and学生表.学号=选课表.学号
orderby选课表.课程号,分数desc
(8)
查询计算机系总分前5名的学生信息
selecttop5学生表.学号,姓名sum(分数)AS总分
where院系名称=’计算机系’
groupby学生表.学号,姓名
orderbysum(分数)desc
selecttop5学生表.学号,姓名,sum(分数)AS总分
from学生表,选课表
where学生表.学号=选课表.学号and院系名称='
计算机系'
orderby总分desc
(9)
查询学分大于等于’经济法’的课程
select课程名
where学分>
=(select学分
where课程名=‘经济法’)
(10)查询没有选修任何课程的学生信息
select*
where学号notin(select学号from选课表)
(11)查询选修了’ASP.NET’课程且成绩在85分以上(包括85分)的学生的学号、姓名和分数
select学生表.学号,学生表.姓名,选课表.分数
innerjoin选课表on(学生表.学号=选课表.学号)
innerjoin课程表on(课程表.课程号=选课表.课程号)
where选课表.分数>
=85and课程名=’ASP.NET’
where学生表.学号=选课表.学号and课程表.课程号=选课表.课程号
and选课表.分数>
=85and课程名='
ASP.NET'
(12)查询选修课程超过4门的学生
usestudentmanager
where学号in
(select学号from选课表
groupby学号
havingcount(*)>
4)
(13)查询有课程考试不及格的学生
select学生表.学号,学生表.姓名,学生表.性别,学生表.院系名称
from学生表innerJoin选课表on(学生表.学号=选课表.学号)
where选课表.分数<
=59
或者用下列方法:
where分数<
60)
(14)查询有学生考试不及格的课程(与上例相同,请用第二种方法作)
select课程表.课程号,课程表.课程名
innerJoin选课表on(课程表.课程号=选课表.课程号)
where分数<
=59
(15)查询考试分数两门不及格的学生人数
selectcount(*)as两门课不及格的人数
from学生表where学号in
(select学号
60
havingcount(*)=2)
第6章Transact-SQL语言
1.掌握字符数据类型:
固定长度字符Char、Nchar、可变长度字符Varchar、Nvarchar
数字类型:
int、smallint、money、smallmoney
2、局部变量(LocalVariable)和全局变量(GlobalVariable)
局部变量必须以@开头,而且必须先用DECLARE命令说明后才可使用,其说明形式如下:
DECLARE@变量名变量类型[,@变量名变量类型…]
必须使用SELECT或SET命令来设定变量的值,其语法格式如下:
SELECT@局部变量=字段、变量值或表达式
SET@局部变量=变量值或表达式
3、全局变量不是由用户的程序定义的,它们是在服务器级定义的。
只能使用预先说明及定义的全局变量。
引用全局变量时,必须以@@开头。
4、运算符增加模糊匹配查找运算符LIKE
模糊查询的匹配符‘%’和‘_’
5、聚合函数SUM、AVERAGE、MAX、MIN、COUNT等
聚合函数经常在SELECT语句中出现,也常常和GROUPBY子句配合使用,
例如:
(1)统计每名学生的考试门数。
SELECT学号,COUNT(*)as考试门数
FROM选课表
GROUPBY学号
(2)统计多少学生参加考试。
selectcount(*)as考试人数from学生表
where学号in(SELECTdistinct学号FROM选课表)
(3)统计课程号是03001的平均成绩和最高成绩
SELECTAVG(分数)as平均成绩,MAX(分数)as最高成绩
Where课程号='
03001'
(4)统计学号='
063001032'
的平均分数、考试的课程门数。
DECLARE@fenshureal,