1. 数据库系统概论
数据库3个特点:永久存储,有组织,可共享
数据库管理技术:
人工管理:无专门的软件,数据不共享,程序与数据不具有独立性
文件系统管理:有专门用于管理数据的应用软件(以文件的形式存储在存储设备上),程序与数据具有一定的独立性,但独立性差,数据共享性差,冗余度大
数据库系统管理
下面列出的数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是( A )。
Ⅰ.人工管理阶段 Ⅱ.文件系统阶段 Ⅲ. 数据库阶段
A. 只有Ⅰ B. Ⅰ和 Ⅱ C. 只有Ⅱ D. Ⅱ和Ⅲ
数据库系统的组成:
数据库系统(DBS)包括:数据库(DB),数据库管理系统(DBMS),应用程序,数据库管理员(DBA),用户
数据库系统的特点:
数据结构化(数据库系统与文件系统的本质区别)
数据的共享性高,冗余度低,易扩充
数据独立性高
数据由DBMS统一管理和控制
不是数据库系统的特点是 A 。
A.数据的二级抽象和三级独立性 B.数据共享性
C.数据的结构化 D.数据独立
2. 数据库系统结构
数据模型的组成元素:
- 数据结构
- 数据操作
- 完整性约束
数据模型的分类:
概念模型:信息世界,E-R模型
实体(矩形),属性(椭圆),联系(菱形)
联系:一对一,一对多(班级与学生),多对多(商品与顾客,学生与课程)
逻辑模型:机器世界,如层次模型(数据结构是一棵“有向树”),网状模型,关系模型(二维表)
物理模型:机器世界,物理存储方式与存取方法
数据库系统的三层模式结构:
- 外模式(又称子模式、用户模式,可有多个)
- 概念模式(又称模式,只有一个)
模式是数据库( C )。
A. 全局物理结构
B. 局部物理结构
C. 全局逻辑结构
D. 局部逻辑结构
- 内模式(又称存储模式,只有一个)
数据库的二级映像:
- 外模式/模式映像 (保证逻辑独立性)
- 模式/内模式映像 (保证物理独立性)
什么是数据独立性?在数据库系统体系结构中是如何体现的?
1)数据独立性:数据库系统在某一层次模式上的改变不会使它的上一层模式也发生改变
的过程。数据独立性包括数据的逻辑独立性和物理独立性两种。
2) 一个数据库结构从逻辑上可以划分为三个层次:外部模式(External Schema),概念
模式(Conceptual Schema)和内部模式(Internal Schema),称为数据库系统的三级模式结
构。数据库的三级结构是依靠外模式/模式映像和模式/内模式映像来联系和互相转换的。正
是这两层映像保证了数据库系统中的数据具有较高的数据独立性,其中外模式/模式映像保
证逻辑独立性,模式/内模式映像保证物理独立性。
3. 关系数据库基础
关系就是表,表不一定是关系
关系的描述称为关系模式 eg:师生关系(教师,学生)
关系数据库:
- 元组/记录(关系中的每一行数据)
在学生管理关系数据库中,存取一个学生信息的数据单位是(D)。 A. 文件 B. 数据库 C. 字段 D. 记录
- 属性/字段(关系中的每一列)
- 域 (属性的取值范围)
- 码/关键字/键 (可以唯一表示表中的一个元组,可由一个或多个属性组成) 不能为空值,取值具有唯一性
关系模型中,一个关键字( C )
A.可由多个任意属性组成
B.至多由一个属性组成
C.可由一个或多个其值能唯一标识该关系模式中任何元组的属性组成
D.以上都不是
- 主码/主键 (被选中的候选码)一个关系只有一个主码
- 候选键/候选码:一个关系中的所有码构成候选码
- 替换键/替换码 (未选中的候选码)
- 主属性 :包含在任何一个候选码中的属性
候选关键字中的属性称为( B )
A.非主属性 B.主属性 C.复合属性 D.关键属性
- 非主属性:不包含在任何一个候选码中的属性
- 组合键:多个属性组合起来才能唯一标识
- 外码 :与所参照的主码具有相同的域,只能引用所参照主码中的值或者为空值(取值可重复)
现有如下关系:患者(患者编号,患者姓名,性别,出生日期,所在单位),医生(医生编号,医生姓名,性别,年龄,科室,职称),医疗(患者编号,医生编号,诊断日期,诊断结果)。其中,“医疗”关系中的外码有 ( C )
A.患者编号 B.医生编号
C.患者编号和医生编号 D.医生姓名和患者姓名
SNO 是 STUDENT 表的主码,目前 STUDENT 表有 20 条记录,则如下查询语句返回的数
量为(单选,选择最准确的答案):(A )
SELECT COUNT(DISTINCT SNO) FROM STUDENT
A:20 B:<20 C:>=20
关系的完整性:
- 域完整性 :属性的值域
- 实体完整性:必须有主码,且主码唯一不为空
- 参照完整性:外码的取值
在SQL Server中,表的外键所在列,要么是空值(NULL),要么数据来源于其参考(引用)的表。( T )
- 用户定义完整性:符合实际意义或业务规则
一个人口登记系统要求登记的婴儿的出生日期不能晚于当前日期,这种约束在数据库中
属于(C ):
A:实体完整性约束 B.参照完整性约束 C.用户自定义完整性约束 D.域约束
关系操作:
基本运算: ①并②差 ③笛卡尔积 ④投影⑤选择
传统的集合运算:并、交、差、广义笛卡尔积
并相容性:关系R与关系S属性个数相同,属性对应的域相同,对应属性名不一定相同(若不同,以前一个关系的属性名为准)
专门的关系运算:选择、投影、连接、除
选择:选符合的行
投影:选符合的列
连接:在笛卡儿积的结果中选择符合连接条件的
eg: 等值连接(同名的属性不会合并),自然连接(同名的属性会合并)
关系代数的连接操作相当于:(A )
A:先笛卡尔积,再选择 B:先笛卡尔积,再投影 C:先选择,再投影 D:先投影,再
设有关系R(A,B,C)和S(A,D),与自然连接R*S等价的关系代数表达式是( A )
A.∏B,C,S.A,D(σR.A=S.A(R×S))
B.σ(R.A=S.A)(R×S)
C. σR.A=S.A (∏B,C,S.A,D (R×S))
D.∏R.A,B,C,D(R×S)
当一个查询中具有选择和连接时,查询优化的方法是先执行选择、后执行连接,因为选择可以先过滤掉无关行,提高效率。( T )
关于关系代数运算,下面说法错误的是( D )。
A.选择运算是从行的角度进行的运算
B.投影运算是从列的角度进行的运算
C.两个关系分别有 m 个和 n 个属性,两个关系进行笛卡尔积得到的关系有 m+n 个属性
D.关系不能与自己进行笛卡尔积运算
4. 关系数据库标准语言SQL
SQL方言:
- SQL Server 的T-SQL
- Oracle的PL/SQL
SQL Server中的编程语言的简称为PL/SQL,也就是Procedural Language SQL的简写。( F )
SQL的功能组件:
DDL:definition定义
create,drop
DML: manipulation操纵
select ,update, delete,insert
DCL: control 控制
grant,revoke,deny
数据库管理系统能实现对数据库中数据的查询、插入、修改和删除等操作,这种功能称
为 C 。
A.数据定义功能 B.数据管理功能 C.数据操纵功能 D.数据控制功能
以下面为例讲解SQL语法:
注意事项:
- sql不区分大小写
- sql中全部用单引号,不用双引号
- 必须切换到英文输入法
--创建学生数据库: create database 学生 --使用学生数据库 use 学生 --创建学生数据库中的Student表 CREATE TABLE Student ( --格式:列名 数据类型(长度) 约束, Sno char (7) PRIMARY KEY , Sname char (10) NOT NULL , Ssex char (2) check(ssex in('男','女')) , Sage tinyint , Sdept char (20) ) --常用数据类型: --1. char(n) 固定长度为n --2. varchar(n) 可变长度,允许最大长度为n --3. int 占四个字节 --4 tinyint 0~255 占一个字节 --5. float --6. datetime 日期+时间 eg:1988年1月1日19:23:59 --约束分为: --1. 主键约束 primary key --2. 非空约束 not null --3. check约束 --4. 默认约束 default --5. 唯一约束 unique --6. 外键约束 foreign key XX references 表名(xx) CREATE TABLE Course ( Cno char (10) PRIMARY KEY , Cname char (20) NOT NULL , Ccredit tinyint , Semester tinyint , ) CREATE TABLE sc ( sno char (7) NOT NULL , cno char (10) NOT NULL , grade smallint , XKLB char (6) , PRIMARY KEY(sno,cno), FOREIGN KEY (cno) REFERENCES Course (Cno), FOREIGN KEY (sno) REFERENCES Student (Sno), CHECK (grade >= 0 and grade <= 100) ) go --向Student表中插入数据: insert student values('9512101','李勇','男',19,'计算机系') insert student values('9512102','刘晨','男',20,'计算机系') insert student values('9512103','王敏','女',20,'计算机系') insert student values('9521101','张立','男',22,'信息系') insert student values('9521102','吴宾','女',21,'信息系') insert student values('9521103','张海','男',20,'信息系') insert student values('9531101','钱小平','女',18,'数学系') insert student values('9531102','王大力','男',19,'数学系') insert course values('c01','计算机文化学',3,1) insert course values('c02','VB',2,3) insert course values('c03','计算机网络',4,7) insert course values('c04','数据库基础',6,6) insert course values('c05','高等数学',8,2) insert course values('c06','数据结构',5,4) insert sc values('9512101','c01',90,'必修') insert sc values('9512101','c02',86,'选修') insert sc values('9512101','c06',NULL,'必修') insert sc values('9512102','c02',78,'选修') insert sc values('9512102','c04',66,'必修') insert sc values('9521102','c01',82,'选修') insert sc values('9521102','c02',75,'选修') insert sc values('9521102','c04',92,'必修') insert sc values('9521102','c05',50,'必修') insert sc values('9521103','c02',68,'选修') insert sc values('9521103','c06',NULL,'必修') insert sc values('9531101','c01',80,'选修') insert sc values('9531101','c05',95,'必修') insert sc values('9531102','c05',85,'必修') go ```
关系是关系模式在某一个时刻的状态或者内容,关系模式是静态的,稳定的,而关系是动态的,随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。
为在查询结果中去掉重复元组,要在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
视图:删除用drop
什么是基本表?什么是视图?两者的区别和联系是什么?采用视图是否能加快查询速度?
为什么?
答案:
基本表是数据库中独立存在的表,在 SQL 中一个关系就对应一张表。
视图是一种数据库对象,是从一个或多个基表或视图中导出的虚表,其本质就是 SQL 查询。
两者的区别在于,基表是实际保存数据的实体,一个(或多个)基本表对应一个存储文件;
视图本身并不存放数据,只存放视图的定义,因此视图只是一个虚表。
两者的联系在于,视图时在基表之上建立的,它的结构和内容都来自于基表;一个视图可以
对应多个基表,一个基表也可以建立多个视图。视图是基表在逻辑上建立的新的关系。
采用视图不能加快查询速度,因为对视图的查询都将转换成对基表的查询,这一过程称为视
图消解,这个过程会耗费时间,因此相对于对基本的查询,其速度更慢。
create view 视图名
as
下面关于视图的说法中,不正确的是( 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
5. 关系数据库设计理论
数据依赖的影响:数据冗余度大,更新异常,插入异常,删除异常,但不会查询异常
关系规范中的删除异常是指
*不该删除的数据被删除*插入异常是指
*应该插入的数据未被插入*
更新异常:
该更新的数据没有被完全更新
关系模式中如果存在非主属性对码的部分函数依赖,将导致很多问题,除了:(A )
A.查询异常 B.插入异常 C.删除异常 D.修改异常
第一范式(1NF):给的一个关系最基本会满足1NF
第二范式(2NF): 不存在非主属性部分函数依赖于码
第二范式是在第一范式的基础上,消除了非主属性对码的部分函数依赖。因此,如果满足码是单个属性,不是组合的属性,那么此时的第一范式,就已经满足第二范式的要求了。( T )
第三范式(3NF): 不存在非主属性传递函数依赖于码
BC范式:不存在主属性对非所在码(不包含本属性的码)的传递与部分依赖(一般有2个及以上候选码时才考虑)
第四范式(4NF): 属性之间没有非平凡且非函数依赖的多值依赖
在做这类题目时,找对主码很重要,例如:
当关系模式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 端实体的主码联合做主
解析:10个实体就有10个关系,再加上5个m:n联系,会产生5个关系。故为15个
聚簇:一个数据库可有多个聚簇,一个关系只能有一个聚簇
以下说法错误的是(B )。
A.对于更新频繁的表,索引不能定义太多
B.一个数据库最多只能建立一个聚簇
C.一个关系最多只能建立一个聚簇
D.应选择值相对稳定,且经常被访问或使用的属性(组)作为聚簇码
解析:可以从两个角度来理解
- 创建外模式就是创建用户视图,而视图是不会提高查询效率的,
- 系统时间效率是内模式该考虑的问题,比如适当引入索引或建立聚簇
7. 数据库保护
数据库的保护:
- 并发控制
- 数据恢复
- 安全性控制
- 完整性控制
事务:数据库应用程序的最小逻辑工作单位。
或者定义为:是用户定义的一个数据操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单元。
解析:
事务通常由begin tansaction开始
以 commit或rollback结束
事务的特征:(ACID特性)
- 原子性
- 一致性
- 隔离性
- 持久性
并发操作引起的问题:
5. 丢失修改
6. 读”脏“数据 rollback回滚
7. 不可重复读 同一事务两次读取同一个数据项
对并发操作若不加以控制,可能会带来( A )问题。
A.数据不一致 B.不安全 C.死锁 D.死机
设有两个事务 T1、T2,其并发操作如下所示,下面评价正确的是 B 。
A.该操作不存在问题 B.该操作丢失修改
C.该操作不能重复读 D.该操作读“脏”数据
对于以上的问题,采取封锁技术
基本的封锁类型:
- 排他锁/写锁/X锁
- 共享锁/读锁/S锁
其中,在一个事务加了S锁后只能再加S锁,在一个事务加了T锁后不能再加任何锁
若事务 T 对数据 R 已经加 X 锁,则其他事务对数据 R D。
A.可以加 S 锁不能加 X 锁 B.不能加 S 锁可以加 X 锁
C.可以加 S 锁也可以加 X 锁 D.不能加任何
注意,尽管叫写锁,但是除了写也是可以读的!
封锁协议:
- 一级封锁协议:保证 丢失修改
- 二级封锁协议:保证 丢失修改 和 读”脏“数据
- 三级封锁协议:保证 丢失修改 和 读”脏“数据 和 不可重复读
并发操作会产生几种不一致情况?用什么方法避免各种不一致的情况?
答:
并发操作可能会产生丢失修改,不能重复读和读”脏”数据这三种不一致情况,采用封锁机制来进行并发控制,可避各种不一致情况。一级封锁协议可以避免丢失修改,二级封锁协议可以避免丢失修改和读”脏”数据,三级封锁协议可以避免丢失修改、不能重复读和读”脏”数据。
死锁:
预防死锁:
- 一次封锁法
- 顺序封锁法
诊断死锁:
- 超时法
- 事务等待法
并发调度的可串行性:
- 可串行化是并发事务正确性的准则:即只有可串行化,才认为是正确的调度
多个事务的并发执行顺序有很多种,不同执行顺序得到的结果不一定相同。这些结果( 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. 数据库新技术与其他知识点
NoSQL:一种非关系型数据库
分为:
- 键-值存储数据库:redis
- 列存储数据库:HBase
- 文档型数据库:MongoDB
- 图形数据库:InfoGrid
MongoDB是( C )。
A.键-值存储数据库 B.列存储数据库
C.文档型数据库 D.图形数据库
什么叫NoSQL数据库?NoSQL数据库适用哪些场合?
解:NoSQL数据库就是非关系数据库(2分)。
NoSQL数据库在以下几种情况下适用:
1) 需要灵活性更强的IT系统;
2)数据模型比较简单;
2) 对数据库性能要求更高;
4) 不需要高度的数据一致性;
5)给定键Key,比较容易映射复杂值的环境。
必考大题:
某水果外卖平台为了实现对其经营水果的管理,拟开发一个数据库系统,提出的要求如下:
①所有水果的单位均为公斤,水果种类很多,每种水果都有自己独有的编号,还有水果名和
基准售价;
②水果每次采购回来时都要有入库记录,记录入库的数量,入库时间和成本价,同一入库时
间可能入库多种水果,但一种水果每次入库的入库时间肯定不一样;
③客户可以通过网上下单订购水果,一个客户可以多次下单购买,但一个订单只能是一个客
户下单;
④需要记录客户的电话,姓名和地址,客户电话具有唯一性;
⑤还需要记录订单的订单编号,下单时间;
⑥一个订单中可以订购多种水果,需要记录订购每种水果的数量及单价,并需要知道订单总
价。
(1)请根据以上需求设计 E-R 图
(2)将上面 E-R 图转换为等价的关系模式(需要注明每个关系模式的主码,每个外码及其所参照的主码)
感谢关注点赞👍