1. 关系数据库的基本概念
1.1 关系模型
关系模型是数据库的基本模型之一,它将数据组织成二维表的形式。在关系模型中,每一行代表一个实体,每一列代表实体的一个属性。
习题: 举例说明关系模型中的实体、属性和关系的概念。
答案:
- 实体:例如,在学生数据库中,每个学生就是一个实体。
- 属性:例如,学生的姓名、年龄、学号等。
- 关系:例如,学生与课程之间的关系,可以表示为“学生选课”。
1.2 关系代数
关系代数是关系数据库的操作语言,包括选择、投影、连接等操作。
习题: 使用关系代数操作来查询学生姓名和所选课程。
答案:
SELECT 学生.姓名, 课程.课程名
FROM 学生, 选课
WHERE 学生.学号 = 选课.学号;
2. SQL语言基础
2.1 数据定义语言(DDL)
DDL用于定义数据库结构,如创建表、修改表结构等。
习题: 创建一个名为“学生”的表,包含姓名、年龄、性别等字段。
答案:
CREATE TABLE 学生 (
学号 CHAR(10) PRIMARY KEY,
姓名 VARCHAR(50),
年龄 INT,
性别 CHAR(1)
);
2.2 数据操作语言(DML)
DML用于操作数据库中的数据,如插入、删除、更新等。
习题: 向“学生”表中插入一条数据。
答案:
INSERT INTO 学生 (学号, 姓名, 年龄, 性别)
VALUES ('202101', '张三', 20, '男');
2.3 数据控制语言(DCL)
DCL用于控制数据库的访问权限,如授予、回收权限等。
习题: 授予用户“user1”对“学生”表的查询权限。
答案:
GRANT SELECT ON 学生 TO user1;
3. 视图和索引
3.1 视图
视图是一个虚拟表,它可以从一个或多个基本表导出。
习题: 创建一个名为“男生”的视图,包含所有男生的姓名和年龄。
答案:
CREATE VIEW 男生 AS
SELECT 姓名, 年龄
FROM 学生
WHERE 性别 = '男';
3.2 索引
索引是数据库表中的一种数据结构,用于加速数据检索。
习题: 在“学生”表的“学号”字段上创建一个索引。
答案:
CREATE INDEX idx_student_xuehao ON 学生 (学号);
4. 存储过程和触发器
4.1 存储过程
存储过程是一组为了完成特定功能的SQL语句集合。
习题: 创建一个存储过程,用于插入学生信息。
答案:
DELIMITER //
CREATE PROCEDURE InsertStudent(IN 学号 CHAR(10), IN 姓名 VARCHAR(50), IN 年龄 INT, IN 性别 CHAR(1))
BEGIN
INSERT INTO 学生 (学号, 姓名, 年龄, 性别)
VALUES (学号, 姓名, 年龄, 性别);
END //
DELIMITER ;
4.2 触发器
触发器是一种特殊类型的存储过程,它在特定的数据库事件发生时自动执行。
习题: 创建一个触发器,在删除学生信息时,同时删除其选课信息。
答案:
DELIMITER //
CREATE TRIGGER DeleteStudentAfter
AFTER DELETE ON 学生
FOR EACH ROW
BEGIN
DELETE FROM 选课 WHERE 学号 = OLD.学号;
END //
DELIMITER ;
5. 数据库事务
5.1 事务的概念
事务是一系列操作的集合,这些操作要么全部成功,要么全部失败。
习题: 解释事务的ACID特性。
答案:
- 原子性(Atomicity):事务中的所有操作要么全部完成,要么全部不做。
- 一致性(Consistency):事务执行后,数据库的状态应该保持一致。
- 隔离性(Isolation):事务之间应该是隔离的,一个事务的执行不应影响其他事务。
- 持久性(Durability):事务一旦提交,其结果就永久保存在数据库中。
5.2 事务的隔离级别
事务的隔离级别决定了事务之间可能存在的干扰程度。
习题: 列举SQL标准中的四个事务隔离级别。
答案:
- 读未提交(Read Uncommitted)
- 读已提交(Read Committed)
- 可重复读(Repeatable Read)
- 串行化(Serializable)
6. 数据库备份与恢复
6.1 数据库备份
数据库备份是指将数据库数据复制到其他存储介质的过程。
习题: 列举常见的数据库备份类型。
答案:
- 完全备份
- 差异备份
- 增量备份
6.2 数据库恢复
数据库恢复是指将备份的数据恢复到数据库的过程。
习题: 列举常见的数据库恢复方法。
答案:
- 从备份文件恢复
- 使用事务日志恢复
7. 数据库安全与优化
7.1 数据库安全
数据库安全是指保护数据库数据免受未授权访问、修改和破坏的措施。
习题: 列举常见的数据库安全措施。
答案:
- 身份认证
- 访问控制
- 数据加密
7.2 数据库优化
数据库优化是指提高数据库性能的方法。
习题:
- 列举数据库优化的常见方法。
- 如何提高查询性能?
答案:
- 常见的数据库优化方法包括:索引优化、查询优化、硬件优化等。
- 提高查询性能的方法有:合理设计索引、优化查询语句、使用合适的存储引擎等。
