《数据库技术》复习
第一章
基本概念:
关系数据模型:
是由若干个关系模式组成的集合。
关系模式:
关系模式的实例称为关系,每个关系可以看成由行和列交叉组成的二维表格,表中的一行称为一个元组,可以用来标识实体集中的一个实体。(实体:实际存在的个体。)
关系:
表中的列称为属性,列名集属性名,表中的属性名不能相同。列的取值范围称为域,同列具有相同的域,不同的列也可以有相同的域。
性质:表中的任意两行(元组)不能相同。
属性值具有原子性,不可分解。
没有重复的元组。
理论上没有行序,但是有时候使用时可以有行序。
主键:
能唯一标识表中不同行的属性或属性组称为主键。
关系完整性:
关系模型的完整性规则是对数据的约束。
- 实体完整性,这是指关系的主属性不能为空值。空值就是指不知道或是不能使用的值,并不是指空字符串。
- 参照完整性,如果关系的外键R1与关系R2中的主键相符,那么外键的每个值必须在关系R2中主键的值中找到或者是空值。
- 用户定义完整性,针对某一具体的实际数据库的约束条件。它由应用环境决定,反映某一具体应用所涉及的数据必须满足要求。关系模型提供定义和检验这类完整性的机制,以便用统一的、系统的方法处理,而不必由应用程序承担这一功能。
范式理论:
范式是设计数据库时所遵循的规则,主要用于消除数据库表中的冗余数据,改进数据库整体组织,增强数据的一致性,增加数据库设计的灵活性。
第一范式:如果关系模式R的每个关系r的属性都是不可分的数据项,那么就称R是第一范式的模式。即列不可再分。
第二范式:如果关系模式R是第一范式,且每个非主属性完全函数依赖于候选键,那么就称R是第二范式的模式。即属性依赖。
第三范式:如果关系模型R是第二范式,且关系模型R(U,F)中的所有非主属性对应任何候选键都不存在传递依赖,则关系R是属于第三范式的模式。即非依赖传递。
考试内容主要以选择题、问题分析题为主。
例如:
①范式是设计数据库时所遵循的规则,如果学生表的联系方式属性列即有手机号又有邮箱,则认为学生表是不符合【 A 】。
A.第一范式 B. 第二范式 C. 第三范式 D. 第四范式
②关系模型中为了保证对数据的约束,提供了相应的规则,请简述这些规则是如何约束关系模型的完整性的。(见关系完整性)
第二章
基本概念:
物理存储结构(包括哪些文件,各自作用是什么)
由储存在磁盘中的操作系统文件所组成,包括数据文件(*.dbf)控制文件(*.ctl)和重做日志文件(*.log)。
数据文件:指存储数据库数据的文件。
控制文件:很小的二进制文件,用于描述和维护数据库的物理结构。
重做日志文件:是记录数据库中所有修改信息的文件。
逻辑存储结构(组成及其关系)
主要包括表空间、段、区和数据块。
一个数据库由一个表空间组成;一个表空间由一个或多个段组成;一个段由一个或多个区组成;一个区由一个或多个数据块组成。
表空间的大小等于构成该表空间的所有数据文件大小的总和。表空间用于存储用户在数据库中创建的所有内容。
段视为一个单位的数据库对象,例如表或索引。段是数据库终端用户将处理的最小存储单位。
区是磁盘空间分配的最小单位。
数据块是用来管理存储空间的最基本单位。
Oracle的进程结构(包括哪些,各自作用)
DBWn进程 (Database Writer 数据库写入):将数据库缓冲区中的数据写入数据文件的进程。
LGWR进程(Log Writer 日志写入):负责管理日志缓冲区的一个后台进程,用于将日志缓冲区中的日志数据写入磁盘的日志文件中。
CKPT进程(Check Point 检查点):一般在发生日志切换时自动产生,用于缩短实例恢复所需的时间。
SMON进程(System Monitor系统监控):用于数据库实例出现故障或系统崩溃时,通过将联机重做日志文件中的条目应用于数据文件,执行崩溃恢复。
PMON进程(Process Monitor 进程监控):用于在用户进程出现故障时执行进程恢复操作,负责清理内存存储区和释放该进程所使用的资源。
ARCn进程(Archive Process 归档):用于将写满的日志文件复制到归档日志文件中,防止日志文件组中的日志信息由于日志文件组的循环使用而被覆盖。
RECO进程(Recovery 恢复):进程存在于分布式数据库系统中,用于自动解决在分布式数据库中出现的事务故障。
Oracle的内存结构
系统全局区是Oracle为系统分配的一组共享的内存结构,可以包含一个数据库实例的数据或控制信息。包含数据缓冲区,日志缓冲区, 共享池,大型池,Java池等。
程序全局区是Oracle系统分配给一个进程的私有内存区域。通过SHOW PARAMETER查看该参数的信息。
数据字典
是由Oracle自动创建并更新的一组表,它是Oracle数据库的重要组成部分,提供了数据库结构、数据库对象空间分配和数据库用户等有关的信息。数据字典的所有者为sys用户,而数据字典表和数据字典视图都被保存在system表空间里。
考试内容主要以选择题、问题分析题为主。
例如:
- 请简述Oracle数据库保存在物理介质上的文件有哪些,其作用是什么?
数据文件,控制文件,日志文件。
数据文件:指存储数据库数据的文件。
控制文件:很小的二进制文件,用于描述和维护数据库的物理结构。
重做日志文件:是记录数据库中所有修改信息的文件。
- 试分析Oracle的逻辑存储结构的组成。
一个数据库由一个表空间组成;一个表空间由一个或多个段组成;一个段由一个或多个区组成;一个区由一个或多个数据块组成。
③当系统突然掉电时,以下哪个对象的数据不会丢失?【 D 】
A. 数据缓冲区 B. 共享池 C. 日志缓冲区 D. 日志文件
④下面哪个进程负责将日志缓冲区中的日志数据写入磁盘的日志文件【 B 】
A. DBWn进程 B. LGWR进程 C. CKPT进程 D. SMON进程
⑤下面关于数据字典的说法,错误的是【 C 】。
A. 数据字典是由Oracle自动创建并更新的一组表
B. 数据字典的所有者为sys用户
C. 数据字典可以读写,用户可以更改其中的数据信息和结构
D. 数据字典提供了数据库结构、数据库对象空间分配和数据库用户等有关信息。
⑥对于创建好的表,如果想要了解其信息,可以查询数据字典【 C 】
A. user_functions B. user_source
C. dba_tables D. user_files
⑦P37三、1、2;P36 二、1、3、5
- 下面对数据文件的叙述中,正确的是( C )
- 一个表空间只能对应一个数据文件
- 一个数据文件可以对应多个表空间
- 一个表空间可以对应多个数据文件
- 数据文件存储了数据库中的所有日志信息
- 下面哪种后台进程用于将数据缓冲区中的数据写入数据文件?( B )
A.LGWR B. DBWn C. CKPT D.ARCn
3. 解析后的SQL语句会缓存在SGA的哪个区域中?( C )
A. Java池 B.大型池 C.共享池 D.数据缓冲区
第三章
掌握SQL*Plus的基本命令,describe、save、get、start、edit、spool
DESCRIBE:可以返回数据库中所存储的对象的描述。可以列出各个列以及各个列的属性。
SAVE:可以将当前缓冲区的内容保存到文件中。
save file_name(无法保存到没有创建的文件)
GET:读取文件内容到缓冲区(不执行)
GET file_name
START:读取文件中的内容到缓冲区(然后在SQL*plus中运行这些内容)
EDIT:将缓冲区中的内容复制到一个名为afiedt.buf(默认)文件中。
SPOOL:将SQL*plus中的输出结果复制到一个指定文件中(屏幕录制)
SPOOL file_name 结束 SPOOL OFF
考试内容主要以选择题为主。
例如:
- P62二、3,5;三、1,
第四章
基本概念:表空间
P63-66表空间的创建语法,重点掌握例4.1
考试内容主要以选择题、问题分析题为主。
例如:
- P86 二、4、5;P87三、5
第五章
表的创建和修改、完整性约束、索引的概念、视图的创建、序列的创建和使用。
考试内容主要以选择题、操作题、程序题为主。
例如:
①Oracle中视图的定义是【 】
A. 一个基表中导出的基表
B. 一个基表中导出的虚表
C. 一个或几个基表或视图中导出的基表
D. 一个或几个基表或视图中导出的虚表
②根据如下所示内容,写出表创建语句,注意属性的数据类型及表的完整性约束。
序号 | 列名 | 含义 | 数据类型 | 长度 | 约束 |
1 | CID | 课程号 | 字符型(char) | 4 | 主键 |
2 | cname | 课程名 | 字符型(varchar) | 20 | 非空 |
3 | Cfen | 学分 | 整数(number) |
| 范围【1,10】 |
成绩表sc(学号sno,课程号cno,成绩grade)
具体示例可以参看P107页
注意建表时,性别的约束,外键的约束。
学分范围的约束:check(cfen>=0 and cfen<=100)
多个属性构成主键的写法:constraint PK_SC primary key(sno,cno)
P91-92页示例,表的属性列添加,删除等操作
③创建视图V_Student,要求列名用中文名称(学号,姓名, 性别,年龄), 视图返回的成绩在80分以上的学生。
视图的创建P113-115
④P124二、5,6;
第七、八章
重点:数据库的增、删、改、查,select的语法及其各个子句,事务的概念和提交回滚;子查询和高级查询(主要是2个表的高级查询)。
考试内容主要以选择题、操作题、程序题为主。
例如:
- 请查询emp表中员工人数大于3的部门编号和人员数。
- 向sc表插入一条记录(1001,1000,79)
- SQL语句将为计算列SAL*12生成别名Annual Salary语句正确的是【 】
- SELECT ename,sal*12 ‘Annual Salary’ FROM emp;
- SELECT ename,sal*12 ”Annual Salary” FROM emp;
- SELECT ename,sal*12 as Annual Salary FROM emp;
- SELECT ename,sal*12 is Annual Salary FROM emp;
- 修改emp表中smith所在部门编号为200
- 查询工资在3000-5000的员工姓名和ID号
- 查询工资高于Smith的所有员工
- 查询所有男员工的信息。
- 查询每个部门工资最高的员工信息。
- P169二、1-5;三1,5;P195三、2,4,5;
第九章
PL/SQL程序的基本语法(变量定义、条件选择语句、循环语句),能够读懂程序。了解异常的概念。
考试内容主要以选择题、操作题、程序题为主。
例如:
- 阅读如下程序,给出程序运行结果
declare
a number:=100;
b number:=10;
begin
if a>10 then
b:=20;
elsif a>40 then
b:=30;
else
b:=50;
end if;
dbms_output.put_line(b);
end;
- 请根据成绩分数给出优良中差的输出结果,P206
- PL/SQL程序设计中,抛出异常的字句是【 】
A. throw B. throws C. raise D. cast
④P220二、2,3,4,;三、2
第十章
存储过程的定义与调用(in和out参数的概念),函数的定义与调用,存储过程与函数的区别,触发器的定义与概念
考试内容主要以选择题、问题分析题、操作题、程序题为主。
例如:
- 定义了一个存储过程create or replace procedure getsum(pid in number),下列执行该存储过程的语句正确的是【 】
- Exec getsum(pid=100)
- Execute getsum
- Exec getsum(1000)
- Exec getsum(pid->19)
- 创建一个存储过程,可以根据学号,查询该学生的成绩,并输出成绩等级。
- 给出调用上述存储过程的语句
- 定义触发器的语句是什么?
- P242 二、1、2、3、4;三1,2;
第十二章
用户、角色的创建与管理,权限授予的基本语法
考试内容主要以选择题、问题分析题、操作题为主。
例如:
- 创建用户yang,密码为1234
- 创建角色teacher,并将角色分配给用户yang
- 将emp表的查询权限赋给yang,并允许其将权限传播给其他用户
- P285二、5;三、1,2;
请仔细理解书上例题