TYTU数据库理论考试总结


一、关系数据库基础理论

1. 关系模式与基本概念

知识点 内容
关系模式定义格式 关系名(属性名1, 属性名2, ..., 属性名n)
关系模式五要素 ①关系名 ②属性名 ③属性类型 ④属性长度 ⑤关键字
属性特性 不可再分(原子性,1NF要求)
候选键 由一个或多个其值能唯一标识该关系模式中任何元组的属性组成

2. 关系代数运算

五种基本运算

并、差、笛卡尔积、投影、选择

传统集合运算

①笛卡尔积 ②并 ③交 ④差

专门的关系运算

①选择 ②投影 ③连接(含自然连接)

运算 符号/说明 特点
选择 σ_F(R) 按条件f筛选行
投影 Π(R) 选择列
笛卡尔积 R×S 最耗时的运算,结果集最大
自然连接 要求R和S含有共有属性 自动按同名属性等值连接

运算分类(数学基础)

①关系代数 ②关系演算

3. 函数依赖与范式

概念 说明
A→B 属性A和属性B的联系是多对一
1NF 属性不可再分
2NF 消除非主属性对码的部分函数依赖
3NF 消除传递函数依赖

二、SQL语言(重点⭐)

1. SQL基本特征

特性 内容
语言类型 非过程化语言(声明式)
数据库类型 关系数据库语言
三大功能 数据定义(DDL)、数据操纵(DML)、数据控制(DCL)
使用方式 交互式SQL嵌入式SQL

2. 数据定义语言(DDL)

-- 创建表
CREATE TABLE student(
    NO CHAR(4) NOT NULL,
    NAME CHAR(8) NOT NULL,
    SEX CHAR(2),
    AGE NUMBER(2)
);

-- 删除表中属性(列)
ALTER TABLE S DROP Age;

-- 删除表
DROP TABLE 表名;

表空间与数据文件

概念 说明
表空间(Tablespace) Oracle中最大的逻辑存储结构
数据文件 物理存储文件,必须隶属于某个表空间;一个表空间可包含多个数据文件
数据块(Data Block) 最小的I/O逻辑存储单元
-- 创建表空间
CREATE TABLESPACE MYTS
LOGGING
DATAFILE 'c:\oradata\orcl\MYTS01.DBF'
SIZE 100M REUSE
AUTOEXTEND ON NEXT 10M MAXSIZE 300M;

-- 创建表时指定表空间
CREATE TABLE emp(
    e_no VARCHAR2(5) PRIMARY KEY,
    e_name VARCHAR2(10) NOT NULL,
    e_job VARCHAR2(9),
    e_sal NUMBER(6),
    d_no NUMBER(2) REFERENCES dept(d_no)
) TABLESPACE MYTS;

3. 数据操纵语言(DML)

插入数据

-- 方式1:插入完整记录
INSERT INTO R VALUES(25, '李明', '男', 21, '95031');

-- 方式2:插入指定列
INSERT INTO R(NO, NAME, CLASS) VALUES(30, '郑和', '95031');

修改数据

-- 修改单条记录
UPDATE R SET NAME='王华' WHERE NO=10;

-- 批量修改
UPDATE R SET CLASS='95091' WHERE CLASS='95101';

删除数据

-- 按条件删除
DELETE FROM R WHERE NO=20;

-- 模糊匹配删除(姓"王"的学生)
DELETE FROM R WHERE NAME LIKE '王%';

4. 数据查询语言(DQL) — 核心重点

基础查询结构

SELECT [DISTINCT] 列名
FROM 表名
WHERE 条件
GROUP BY 分组列
HAVING 分组条件
ORDER BY 排序列 [ASC/DESC];

空值判断

使用操作符 IS NULL / IS NOT NULL不能用 = NULL

SELECT * FROM emp WHERE e_job IS NULL;

多表连接查询

-- 方式1:WHERE连接(传统)
SELECT S.SN, SC.C#, SC.GRADE
FROM S, SC
WHERE S.S# = SC.S#;

-- 方式2:JOIN连接(标准)
SELECT S.SN, SC.C#, SC.GRADE
FROM S JOIN SC ON S.S# = SC.S#;

-- 右外连接
SELECT * FROM emp RIGHT OUTER JOIN dept ON emp.d_no = dept.d_no;

嵌套查询(子查询)

-- 1. 比较子查询:检索比"王华"年龄大的学生
SELECT SN, AGE, SEX FROM S
WHERE AGE > (SELECT AGE FROM S WHERE SN='王华');

-- 2. IN/NOT IN子查询
SELECT S# FROM SC
WHERE C#='C1' AND S# IN (SELECT S# FROM SC WHERE C#='C2');

-- 3. ALL/ANY子查询:检索选修C2课程成绩最高的学生
SELECT S# FROM SC
WHERE C#='C2' AND GRADE >= ALL(
    SELECT GRADE FROM SC WHERE C#='C2'
);

-- 4. EXISTS子查询:检索选修了全部课程的学生
SELECT SNAME FROM S
WHERE NOT EXISTS(
    SELECT * FROM C
    WHERE NOT EXISTS(
        SELECT * FROM SC 
        WHERE S#=S.S# AND C#=C.C#
    )
);

聚合查询与分组

-- 统计选修四门以上课程的学生总成绩(不统计不及格)
SELECT S#, SUM(GRADE)
FROM SC
WHERE GRADE >= 60
GROUP BY S#
HAVING COUNT(*) >= 4
ORDER BY 2 DESC;  -- 按第二列(总成绩)降序

WHERE vs HAVING 区别

  • WHERE:用于分组前的行级筛选
  • HAVING:用于分组后的结果筛选

范围查询

-- BETWEEN...AND...
SELECT S#, SNAME, AGE FROM S
WHERE AGE BETWEEN 18 AND 20;
-- 等价于:AGE >= 18 AND AGE <= 20

5. 视图(View)

知识点 内容
视图本质 虚表,从一个或几个基本表导出
存储内容 只存放视图的定义,不存放对应的数据
主要作用 提高数据库系统的安全性
创建视图 CREATE VIEW 视图名 AS SELECT...
修改视图数据 UPDATE 视图名 SET...WHERE...
-- 创建视图示例
CREATE VIEW S_CS_VIEW AS
SELECT SNO, SNAME, SEX
FROM STUDENT
WHERE Sdept='CS';

-- 通过视图修改数据
UPDATE S_CS_VIEW
SET SNAME='王慧平'
WHERE SNAME='王平';

-- 创建多表连接视图
CREATE VIEW datascore_view AS
SELECT SNO 学号, SNAME 姓名, GRADE 成绩
FROM STUDENT, SC, COURSE
WHERE STUDENT.SNO=SC.SNO 
  AND COURSE.CNO=SC.CNO
  AND CNAME='数据库';

6. 索引(Index)

-- 创建复合索引(基于多列)
CREATE INDEX c_index ON student(stuno, sname) TABLESPACE users;
索引类型 说明
B树索引 默认索引类型
位图索引 适合低基数列
复合索引 基于多列的索引
基于函数的索引 基于表达式或函数的索引

三、数据库设计

1. 数据库设计六阶段

需求分析 → 概念结构设计 → 逻辑结构设计 → 物理结构设计 → 数据库实施 → 数据库运行和维护
阶段 主要任务 核心产出
需求分析 准确了解与分析用户需求(数据与处理) 数据字典、数据流图(DFD)
概念结构设计 综合、归纳与抽象,形成独立于DBMS的概念模型 E-R图
逻辑结构设计 将概念结构转换为某个DBMS支持的数据模型 关系模式
物理结构设计 为逻辑数据模型选取最适合应用环境的物理结构 存储结构、索引设计
数据库实施 建立数据库、编制调试程序、组织数据入库 数据库、应用程序
运行和维护 评价、调整与修改 维护文档

2. E-R图(实体-联系图)

基本元素

  • 矩形:实体
  • 椭圆:属性
  • 菱形:联系
  • 连线:实体与联系之间的连接,标注联系类型(1:1, 1:n, m:n)

E-R图合并冲突(三类)

①属性冲突 ②命名冲突 ③结构冲突

E-R图向关系模型转换规则

联系类型 转换方法
1:1联系 将一方的主键加入另一方,或独立成关系
1:n联系 将1方的主键加入n方作为外键
m:n联系 独立转换为一个关系模式,主键为双方主键的组合

示例转换

全局E-R图包含:单位、教师、学生、课程 四个实体

转换结果:
单位(单位名, 电话)
教师(教师号, 姓名, 性别, 职称, 单位名)  -- 外键:单位名
课程(课程编号, 课程名, 单位名)          -- 外键:单位名
学生(学号, 姓名, 性别, 年龄, 单位名)     -- 外键:单位名
讲授(教师号, 课程编号)                    -- m:n联系
选修(学号, 课程编号)                    -- m:n联系

3. 数据字典

  • 定义:系统中各类数据描述的集合
  • 内容:数据项、数据结构、数据流、数据存储、处理过程
  • 作用:需求分析阶段建立,是概念设计的基础

四、数据库三级模式结构

模式 别名 描述 对应
外模式 子模式/用户模式 用户看到和使用的局部数据 用户应用
模式 概念模式/逻辑模式 数据库中全体数据的全局逻辑结构 基本表
内模式 存储模式 数据存储结构和存取方式 物理存储

一个数据库系统中只能有一个数据库模式,但可以有多个外模式。


五、Oracle专项知识(真题试卷)

1. Oracle体系结构

实例(Instance)组成

组件 说明
系统全局区 (SGA) 内存区域,缓存数据和控制信息
后台进程 PMON(进程监控)、DBWR(数据库写入)等

注意:控制文件是数据库的物理组成部分不属于实例

物理结构三文件

数据文件、控制文件、重做日志文件

逻辑存储结构

表空间(Tablespace) → 段(Segment) → 区(Extent) → 数据块(Data Block)
概念 说明
表空间 最大的逻辑存储结构
数据块 最小的I/O逻辑存储单元

2. 数据库对象详解

序列(Sequence)

特性 说明
用途 生成唯一数字序列的数据库对象
存储 不占用实际存储空间
伪列NEXTVAL 返回序列生成的下一个值
伪列CURRVAL 返回序列的当前值

重要:必须在首次使用 NEXTVAL 后,才能使用 CURRVAL

-- 创建序列
CREATE SEQUENCE seq_no
START WITH 10000       -- 起始值
INCREMENT BY 2         -- 步长(可为负数)
MINVALUE 10            -- 最小值
NOCYCLE                -- 禁止循环
CACHE 5;               -- 预先分配5个序列号

模式(Schema)

一个用户拥有的所有数据库对象的集合

同义词(Synonym)

对象的别名。创建公共同义词命令:

CREATE PUBLIC SYNONYM synonym_name FOR object_name;

3. PL/SQL编程

程序块结构

DECLARE
    -- 声明部分
BEGIN
    -- 可执行部分
EXCEPTION
    -- 异常处理部分
END;

数据类型存储差异

类型 存储"test"的实际长度
CHAR(10) 10字符(固定长度,补空格)
VARCHAR2(10) 4字符(可变长度)

游标(Cursor)属性

属性 说明
%ROWCOUNT 获取受最近一次SQL操作影响的行数
-- 游标使用示例
DECLARE
    CURSOR sales_cur IS SELECT * FROM salesdetails;
BEGIN
    FOR sales_rec IN sales_cur LOOP
        IF sales_rec.tsales > sales_rec.asales THEN
            DBMS_OUTPUT.PUT_LINE('产品:'||sales_rec.pid||'需提高销售额');
        ELSIF sales_rec.tsales = sales_rec.asales THEN
            DBMS_OUTPUT.PUT_LINE('产品:'||sales_rec.pid||'已达到销售额');
        ELSE
            DBMS_OUTPUT.PUT_LINE('产品:'||sales_rec.pid||'销售业绩出色');
        END IF;
    END LOOP;
END;

异常处理

异常类型 说明
预定义异常 VALUE_ERROR 值转换或大小不匹配错误
自定义异常 需使用 RAISE 语句显式触发
DECLARE
    empname employee.ename%TYPE;
    eno employee.empno%TYPE;
BEGIN
    eno := '&employee_number';
    SELECT ename INTO empname FROM employee WHERE empno = eno;
    DBMS_OUTPUT.PUT_LINE('职员姓名:' || empname);
EXCEPTION
    WHEN VALUE_ERROR THEN
        DBMS_OUTPUT.PUT_LINE('要存储在变量中的值过大');
END;

4. 权限管理

权限类型

类型 说明
系统权限 系统级控制数据库的存储和使用机制(如连接数据库、创建表空间)
对象权限 对象级控制(如表、视图的SELECT、UPDATE权限)

角色(Role)

具有名称的一组相关权限的组合,用于简化权限管理。

用户与授权

-- 创建用户
CREATE USER user1 IDENTIFIED BY abc;

-- 授予系统权限(WITH ADMIN OPTION允许级联授权)
GRANT CONNECT TO user1 WITH ADMIN OPTION;

-- 授予对象权限(WITH GRANT OPTION允许级联授权)
GRANT SELECT ON scott.emp TO user1 WITH GRANT OPTION;

导出工具(EXP)

导出用户所有对象时,使用参数 OWNER

撤销信息管理

版本 管理方式
Oracle 10g以前 回滚段 (Rollback Segment)
Oracle 10g及以后 自动UNDO管理 (Automatic UNDO Management)

5. 程序化对象(存储过程、函数、触发器、包)

过程/函数参数模式

模式 说明
IN 输入参数(默认
OUT 输出参数,在过程中被赋值
IN OUT 既可输入又可输出

函数(Function)

头部 RETURN 子句用于声明返回值的数据类型

CREATE OR REPLACE FUNCTION dept_func(p_no IN dept.d_no%TYPE)
RETURN VARCHAR2
IS
    v_d_name dept.d_name%TYPE;
BEGIN
    SELECT d_name INTO v_d_name FROM dept WHERE d_no = p_no;
    RETURN v_d_name;
END dept_func;

程序包(Package)

概念 说明
规范中声明的过程/函数 公有的,可被外部调用
规范中未声明的包体过程/函数 私有的,只能在包内调用

触发器(Trigger)

特性 说明
触发事件 INSERT, UPDATE, DELETE
SELECT查询 不会触发DML触发器
替代触发器(Instead-of) 定义在视图上,用于替换实际执行的DML语句,直接对基表进行操作
-- 级联删除触发器示例
CREATE OR REPLACE TRIGGER del_dept_tri
BEFORE DELETE ON dept
FOR EACH ROW
BEGIN
    DELETE FROM emp WHERE d_no = :old.d_no;
END;
/

六、实用命令速查

命令 功能
DESC table_name; 查看表结构
CREATE USER ... IDENTIFIED BY ... 创建用户
CREATE PUBLIC SYNONYM ... 创建公共同义词
GRANT ... TO ... WITH ADMIN OPTION 授予系统权限(级联)
GRANT ... ON ... TO ... WITH GRANT OPTION 授予对象权限(级联)

七、高频考点速记

考点 答案/要点
关系模式属性特性 不可再分
五种基本运算 并、差、笛卡尔积、投影、选择
最耗时的运算 笛卡尔积
SQL语言类型 非过程化
SQL三大功能 数据定义、数据操纵、数据控制
视图提高什么 安全性
数据库设计六阶段 需求分析→概念设计→逻辑设计→物理设计→实施→运行维护
E-R图属于哪个阶段 概念设计
设计关系模式是哪个阶段 逻辑设计
索引设计属于哪个阶段 物理设计
m:n联系转换 双方主键组合作为新关系的主键
合并冲突类型 属性冲突、命名冲突、结构冲突
Oracle实例组成 SGA + 后台进程(不含控制文件
Oracle物理结构三文件 数据文件、控制文件、重做日志文件
序列伪列 NEXTVAL、CURRVAL(NEXTVAL先使用)
空值判断 IS NULL(不能用= NULL)
CHAR vs VARCHAR2 CHAR固定长度补空格,VARCHAR2可变长度
GROUP BY vs HAVING WHERE过滤行,HAVING过滤分组
触发器触发事件 INSERT/UPDATE/DELETE(SELECT不触发
程序包私有成员 规范中未声明的包体过程/函数
函数RETURN作用 声明返回值的数据类型
最小I/O单元 数据块(Data Block)
最大逻辑存储结构 表空间(Tablespace)

八、易错点提醒

  1. DELETE vs DROP vs ALTER TABLE DROPDELETE删除数据行;DROP删除表结构;ALTER TABLE...DROP删除列
  2. WHERE vs HAVINGWHERE过滤行(分组前);HAVING过滤分组(分组后)
  3. NULL判断:必须使用IS NULL / IS NOT NULL绝对不能用= NULL
  4. GRANT授权WITH ADMIN OPTION(系统权限级联)、WITH GRANT OPTION(对象权限级联)
  5. 序列使用:必须先使用NEXTVAL,才能使用CURRVAL
  6. 触发器类型:替代触发器(Instead Of)定义在视图上,用于替换DML操作;SELECT不会触发DML触发器
  7. CHAR vs VARCHAR2:CHAR是固定长度(补空格),VARCHAR2是可变长度
  8. 实例 vs 数据库:实例=SGA+后台进程;控制文件属于物理结构,不属于实例

!建议重点掌握SQL查询语句编写E-R图转换范式判断Oracle对象管理这四类大题。

posted @ 2026-05-12 12:57  kkman2000  阅读(14)  评论(0)    收藏  举报