下面列出的数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是( A )。
Ⅰ.人工管理阶段 Ⅱ.文件系统阶段 Ⅲ. 数据库阶段
A. 只有Ⅰ B. Ⅰ和 Ⅱ C. 只有Ⅱ D. Ⅱ和Ⅲ
数据库系统的组成:
数据库系统(DBS)包罗:数据库(DB),数据库管理系统(DBMS),应用程序,数据库管理员(DBA),用户
数据库系统的特点:
数据结构化(数据库系统与文件系统的本质区别)
数据的共享性高,冗余度低,易扩充
数据独立性高
数据由DBMS统一管理和控制
不是数据库系统的特点是 A 。
A.数据的二级抽象和三级独立性 B.数据共享性
C.数据的结构化 D.数据独立
为在查询结果中去掉重复元组,要在SELECT语句中使用保存字( C )
A.UNIQUE B.COUNT C. DISTINCT D.UNION
SNAME 为门生姓名,SSEX 为门生性别,SAGE 为门生年事,假设 SAGE 不允许为空且数
据类型为整型,实行下列语句将返回:(D )
SELECT SNAME,SSEX,COUNT(SAGE) FROM STUDENT GROUP BY SSEX
A:各个性别的门生人数 B:各个性别的门生姓名,性别及人数
C:各个性别的门生姓名,性别及年事之和 D:错误消息
下面哪些 SQL 子句是在正确判断 GRADE 属性取值不为空:(B )
①GRADE !=NULL ②GRADE IS NOT NULL ③NOT GRADE IS NULL ④GRADE NOT IS
NULL
A. ①② B.②③ C.②③④ D.②
单表查询:select * from 表名
多表查询:
内毗连 innner join (inner可省略)
外毗连 left join, right join , full join
嵌套查询:
使用in的子查询
使用any ,some,all的查询
使用exists 的子查询
数据更新:
插入数据
更新数据
删除数据
若用如下的SQL语句创建了一个表SC:
CREATE TABLE SC
( Sno char(10) NOT NULL,
Cno char(10) NOT NULL,
Score int,
Note char(10))
向SC表实行如下语句时,( B )可以正确被插入。
A. insert into SC values(‘201009’,’111’,60,必修)
B. insert into SC values (‘200823’,’101’,NULL,NULL)
C. insert into SC values (NULL,’103’,80,’选修’)
D. insert into SC values (‘201132’,NULL,86,‘ ’)
获取时间:可用Getdate()
比方
select Sname,Year(getdate())-Sage as 出生年份 from Student
下面关于视图的说法中,不正确的是( B )
A.视图是外模式
B.使用视图可以加速查询语句的实行速度
C.使用视图可以简化查询语句的编写
D.视图是虚表
下面关于视图的说法,正确的是:(C )
A.通过视图查询数据比直接使用 SQL 语句从基表查询数据服从更高
B.视图必须基于基表创建,不能基于视图创建视图
C.视图定义中含有 GROUP BY 子句时,不能通过该视图更新数据
D.删除视图的 DDL 语句为:DELETE VIEW 视图
索引:
经常用,考虑创建索引
对于频仍更新的表,索引不能定义太多
聚集索引一个表只有一个,非聚集索引一个表可以有多个
删除索引用drop
标题:
1.查询“计算机科学学院”使用126邮箱(邮箱名末尾为“@126.com”)的门生信息。
解:SELECT *
FROM Student
WHERE Sdept=’计算机科学学院’ and Email LIKE ‘%@126.com’
2、利用多表毗连技术查询各个院系的门生均匀结果。
解:SELECT Sdept, AVG(Grade)
FROM Student JOIN SC ON Student.Sno=SC.Sno
GROUP BY Sdept
3、查询 “数据库原理及应用”课程结果精良(大于等于90)的门生学号、姓名,要求使用子查询实现,结果显示门生学号、姓名。
解:SELECT Sno, Sname FROM Student
WHERE Sno IN(SELECT Sno FROM SC WHERE Grade>=90 AND Cno=
(SELECE Cno FROM Course WHERE Cname=’数据库原理及应用’))
4、将“程序计划基础“课程的学分加1。
解:UPDATE Course
SET Ccredit=Ccredit+1
WHERE Cname=’程序计划基础’
创建一个名为vwStu的视图,包罗每个门生的学号、姓名及其目前已选修课程的总学分。
解:CREATE VIEW vwStu(学号,姓名,总学分)
AS
SELECT Student.Sno,Sname,sum(Ccredit)
FROM Student JOIN SC ON Student.Sno=SC.Sno
JOIN Course ON Course.Cno=SC.Cno
GROUP BY Student.Sno,Sname
当关系模式R(A,B)已属于3NF,下列说法正确的是( B )
A.它一定消除了插入和删除异常
B.仍存在一定的插入和删除异常
C.一定属于BCNF
D.A和C都是
门生关系表为Student(学号, 姓名, 年事, 所在学院, 学院所在, 学院电话),主码:学号,此中存在的数据依赖为:(学号)→(姓名, 年事, 所在学院),(所在学院)→(学院所在, 学院电话)。请分析student关系是否满意3NF,如果不满意,其将其优化以满意3NF。
解:
student关系不满意3NF,因为存在传递函数依赖(学号)→(所在学院)→(学院所在,学院电话)
分解为两张表:
门生(学号, 姓名, 年事, 所在学院);学院(学院, 所在, 电话)。
设有关系模式 R (职工 ID,职工名,项目 ID,项目名,工资)
职工 ID 和项目 ID 具有唯一性,职工 ID 可决定职工名,项目 ID 可决定项目
名,每个职工可参加多个项目,各领一份工资。请分析 R 是否满意第三范式,
并阐明原因;如果不满意第三范式,请将其规范化到满意第三范式。
【参考答案】
(1)上面关系存在如下函数依赖:
职工 ID→职工名,项目 ID→项目名,(职工 ID,项目 ID)→工资
以是关系的主码是(职工 ID,项目 ID),不存在非主属性对码的传递
函数依赖,单存在非主属性对主码的部门函数依赖,因此不满意第二范
式,也就不满意第三范式。
(2)将 R 通过分解为成如下三个关系模式:
R1= (职工 ID,项目 ID, 工资),主码(职工 ID,项目 ID)
R2= (职工 ID,职工名),主码职工 ID
R3= (项目 ID,项目名),主码项目 ID
以上三个关系模式不存在非主属性对码的部门或传递函数依赖,满意第三范式
关系模式的规范化:并不是规范化程度越高越好,偶尔候会适当反规范化来增加冗余,以此来提高查询服从
在关系数据库的实际应用中,一般认为,规范化程度越高,关系模式就越好。( F )
6. 数据库计划
基本步骤:
需求分析:数据流图
概念结构计划:系统阐明书,E-R图,实体接洽图
逻辑结构计划:系统结构图(模块结构图),关系模子
物理结构计划:确定存取方法:索引方法,聚簇方法,Hash方法
数据库实施
数据库运行与维护
此中,
概念结构计划中局部E-R模子的归并过程中会产生三种辩论:
属性辩论 :类型,取值范围不同
定名辩论:同名异义,异名同义
结构辩论
在归并E-R图时发现“部门”在一个局部应用中被当作实体,而在另一个局部应用中被当作属性,这种现象称为( C )辩论。
A.属性 B.定名 C.结构 D.语法
逻辑结构计划中把概念模子(E-R图)转化为关系数据模子是重点
从E-R模子向关系模子转换时,一个M∶N(多对多)接洽转换为关系模子时,应该 C 。
A.M 端实体的主码纳入 N 端实体对应的关系做外码
B.N 端实体的主码纳入 M 端实体对应的关系做外码
C.产生一个新的关系,M 端实体的主码和 N 端实体的主码在此中做外码
D.产生一个新的关系,该关系一定是 M 端实体的主码和 N 端实体的主码联合做主
多个事务的并发实行顺序有很多种,不同实行顺序得到的结果不一定相同。这些结果( D )。
A.都一定正确
B.只有一个是正确的
C.都不正确
D.如果与按某一顺序的事务串行实行的结果相同,就是正确的。
两段锁协议包管可串行性
例题:
数据规复:
创建冗余:数据转储,登岸日志文件
实施数据库的规复
此中,
数据转储可分为
静态转储:系统无运行事务时进行的转储操纵。得到的一定是一个数据一致的副本。低落了数据库的可用性
动态转储:不用期待正在运行的用户事务竣事,也不影响新事务的运行。并不能包管数据正确有效。
数据转储也可分为
海量转储:每次转储全部数据库
增量转储:每次只转储上一次转储后更新过的数据,适合较大的数据库
以下说法正确的是( C )。
A.静态转储不能够包管得到的一定是个数据一致的副本
B.动态转储会低落数据库的可用性
C.动态转储不能包管副本中数据的正确有效性,它需要联合日志文件,才气把数据库规复到某一时刻的正确状态
D.如果数据库很大,更新操纵又十分频仍,采用海量转储更有服从
登岸日志文件必须遵循的两个原则:
登记的次序严格按照并发事务的时间实行
必须先写日志文件,后写数据库
数据库故障:事务内部故障,系统故障,介质故障,计算机病毒
8. 安全管理
角色分为系统预定义的固定角色和用户根据自己的需要定义的用户角色
SQL Server提供的安全控制:
确认用户是否是数据库服务器的合法用户(具有登录账号)
确认用户是否是特定数据的合法用户(具有访问数据库的权限)
确认用户是否具有合适的操纵权限(具有操纵数据库数据的权限)
为数据库用户user1授予查询和修改Student表的权限。
解:GRANT SELECT,UPDATE ON Student TO user1
现有一无任何权限的访客User1试图查询和更新门生数据库中的student表,请简述SQL Server提供的安全控制的3个步骤,并请以DBA身份为其完成该3步授权,写出用到的SQL语句。
解:
第一步:创建数据库服务器登录名;
第二步:确认该用户是否为门生数据库的合法用户
第三步:确认用户是否具有对student表的操纵权限
对应这3个步骤的语句如下:
第一步:create login User1 with password=‘123456’
第二步:create user User1 for login User1
第三步:grant select,update on student to user1
下列 SQL 语句中,能够实现“收回用户 ZHAO 对门生表(STUD)中学号(XH)的修
改权”这一功能的是 C
A.revoke UPDATE(XH) ON TABLE FROM ZHAO
B.revoke update(XH) ON TABLE FROM PUBLIC
C.revoke UPDATE(XH) ON STUD FROM ZHAO
D.revoke update(XH) ON STUD FROM PUBLIC
9. 备份与规复数据库
备份方法:
完整备份:不适合频仍备份
差异备份 :在完整备份的基础上
事务日志备份:在上一次备份的基础上
SQL SERVER 规复数据库时,对规复的顺序有什么要求?
解答:规复数据库时必须要遵守严格的顺序。规复数据库的顺序为:
1)规复近来的完全数据库备份。
2)规复完全备份之后的近来的差异数据库备份(如果有的话)。
3)按日志备份的先后顺序规复自完毕或差异备份之后的全部日志备份。
10. 存储过程与触发器
T-SQL语法变量:
Declare @name varchar(10)
set @name=‘张三’
print @name
以下代码的运行结果为( D )
declare @cname varchar(20)
set @cname=‘数据库原理及应用’
go
print @cname
A.’数据库原理及应用’ B.数据库原理及应用
C.@cname D.报错,没有运行结果
题解:因为局部变量的作用范围是从声明开始到批处理go竣事为止
存储过程:
create procedure XX
as
begin
…
end
实行:execute XX
编写一个存储过程prcFindByCno,吸收课程号作为参数,通过输出参数返回该课程目前已选修人数。已知在表中课程号定义为char(10)。
解:CREATE PROC prcFindByCno @cno char(10),@total int output
AS
SELECT @total=count(*) from SC where Cno=@cno
触发器:
某个服装批发商系统会在每个事务发生时自动更新所需的表格。向“订单”表格添加新的行后,“产物”表格中的iQuantityOnHand属性必须相应地减少。应该创建以下哪个触发器来确保以上更新?( C )
A.“产物”表格上的插入触发器 B.“订单”表格上的更新触发器
C.“订单”表格上的插入触发器 D.“产物”表格上的更新触发器
11. 数据库新技术与其他知识点