• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

【数据库】期末复习总结

互联网 diligentman 43分钟前 4次浏览

第一章

概念

  • 数据库定义
    • 是一种依照特定数据模型组织、存储和管理数据的文件集合
  • 数据库和普通文件区别
    • 支持不同应用对数据共享访问;
    • 数据管理复杂;
    • 可独立于应用;
    • 管理由DBMS实现。
  • 数据模型定义
    • 描述事物对象的数据结构组成、数据语义联系、数据约束抽象结构以及说明
  • 主要数据模型
    • 层次数据模型
    • 网状数据模型
    • 关系数据模型
  • 关系数据模型优缺点
    • 优点
      • 结构简单、灵活;
      • 支持关系与集合运算;
      • 支持SQL
      • 应用广泛。
    • 缺点
      • 只支持结构化数据存储;
      • 数据类型简单;
      • 无法支持非结构化数据。
  • DBMS基本功能
    • 创建…
    • 增删查改…
    • 安全控制
    • 备份以及恢复
  • 四个管理阶段
    • 人工管理阶段
    • 文件系统管理阶段
    • 数据库系统管理阶段
  • 数据库应用系统类型
    • 业务处理系统
    • 管理信息系统
    • 决策支持系统
  • 系统生命周期
    • 需求分析
    • 系统分析
    • 系统实现
    • 系统测试
    • 系统运行与维护

第二章

概念

  • 实体定义
    • 包含数据特征的事物在概念模型世界中的抽象名称。
  • 关系定义
    • 具有关系特征、用于存放实体数据的二维表。
  • 键定义
    • 唯一标识元组的列。
  • 复合键定义
    • 关系中用来唯一标识元组的多列
  • 候选键定义
    • 关系中可能有多个列作为键,则其都是候选键。
  • 主键定义
    • 关系中最有代表性的一个候选键。
  • 主键作用
    • 唯一标识元组;
    • 与关联表外键建立联系;
    • 组织数据存储;
    • 建立索引快速检索。
  • 代理键定义
    • DBMS自动生成的数字序列以作为关系表主键
  • 代理键作用
    • 代替复合主键,获得更高性能的数据访问操作。
  • 关系模型完整性
    • 关系数据模型中对关系实施的完整性约束。
    • 包含
      • 实体完整性
      • 参照完整性
      • 用户自定义完整性
  • 实体完整性规则
    • 所有主属性不能取空值
    • 主键取值唯一
  • 参照完整性
    • 关系表之间需要遵守的数据约束,保证关系之间的数据一致性
    • 通过外键实现。
  • 用户自定义完整性
    • 用户根据业务需求自定义的数据约束。

第三章

概念

  • SQL
    • 是一种对关系数据库进行访问的数据操作语言。
    • 解释执行的。

操作

数据类型

对象 类型
字符 CHAR、VARCHAR、TEXT
整数 SMALLINT、INTEGER
浮点数 NUMBER(n,d)、FLOAT(n,d)
日期 DATE、DATETIME
货币 MONEY

操作库

  • 模板
CREATE DATABASE <数据库>;
ALTER DATABASE <数据库名> <修改内容>DROP DATABASE <数据库名>;

操作表

CREATE TABLE <表名>
(
	...
	<属性名> <数据类型> [完整性约束],
	...
	CONSTRAINT <主键名> PRIMARY KEY(<属性名>),
	CONSTRAINT <外键名> FOREIGN KEY(<属性名>)
		REFERENCES <关联表名>(<属性名>)
);
ALTER TABLE <表名> <修改方式>;
DROP TABLE <表名>;
  • 完整性约束
关键词 作用
PRIMARY KEY 主键
NOT NULL 非空值
NULL 空值
UNIQUE 值唯一
CHECK 有效性检查
DEFAULT 缺省值

操作索引

CREATE INDEX <索引> ON <表名>(<属性名>);
ALTER INDEX <索引> <修改项>;
DROP INDEX <索引>;

插入操作

INSERT INTO <表名> VALUES (属性值);

更新操作

UPDATE <表名> SET <属性名>=<表达式>
	WHERE <条件表达式>;
DELETE FROM <表名>
	WHERE <条件表达式>;

查询语句

SELECT <属性名> INTO <新表名> FROM <表名>
WHERE <条件表达式>
	BETWEEN <属性值> AND <属性值>
WHERE <条件表达式>
	LIKE <属性值>
GROUP BY <属性名>
ORDER BY <属性名> [DESC|ASC]
  • 内置函数
聚合函数 功能
AVG() 平均值
COUNT() 行数
MIN() 最小值
MAX() 最大值
SUM() 总和
  • 分类统计
SELECT Major AS 专业 COUNT StudentID AS 学生人数
FROM Student
WHERE StudentGender=‘男‘
GROUP BY Major
HAVING COUNT(*)> 2;
  • 子查询
SELECT TeacherID,TeacherName,TeacherTitle
FROM Teacher
WHERE CollegeID IN
(
	SELECT CollegeID
	FROM College
	WHERE CollegeName='计算机学院'
);
  • 关联多表查询
SELECT B.CollegeName AS 学院名称,A.TeacherID AS 编号,A.TeacherName AS 姓名,A.TeacherGender AS 性别,A.TeacherTitle AS 职称
FROM Teacher AS A,College AS B
WHERE A.CollegeID=B.CollegeID
ORDER BY B.CollegeName,A=TeacherID;
  • 连接查询
SELECT B.CollegeName AS 学院名称,A.TeacherID AS 编号,A.TeacherName AS 姓名,A.TeacherGender AS 性别,A.TeacherTitle AS 职称
FROM TEACHER AS A JOIN COLLEGE AS B
ON A.CollegeID=B.CollegeID
ORDER BY B.CollegeName,A.TeacherID;
  • 外部连接
SELECT C.CourseName AS 课程名称, T.TeacherName AS 教师,
	COUNT(R.CoursePlanID) AS 选课人数
FROM COURSE AS C JOIN PLAN AS P ON C.CourseID=P.CourseID
	JOIN TEACHER AS T ON P.TeacherID=T.TeacherID
	JOIN REGISTER AS R ON P.CoursePlanID=R.CoursePlanID
GROUP BY C.CourseName, T.TeacherName;

数据控制

GRANT <权限列表> ON <数据库对象> TO <用户|角色>;
REVOKE <权限列表> ON <数据库对象> FROM <用户|角色>;
DENY <权限列表> ON <数据库对象> TO <用户|角色>;

视图

CREATE VIEW <视图名> AS
<SELECT查询>;

SELECT * FROM <视图名>;

DROP VIEW <视图名>;
  • 例子
CREATE VIEW BasicCourseView AS
SELECT CourseName,CourseCredit,CoursePeriod,TestMethod
FROM COURSE
WHERE CourseType='基础课';
SELECT *
FROM BasicCourseView
ORDER BY CourseName;
DROP VIEW BasicCourseView;

第四章

概念

  • 开发过程
    • 数据需求分析
    • 数据库设计阶段
    • 数据库实现阶段
    • 数据库测试阶段
  • 数据模型
    • 概念数据模型CDM
      • 用户角度
    • 逻辑数据模型LDM
      • 系统分析员角度
    • 物理数据模型PDM
      • 系统设计人员角度
  • E-R模型
    • 实体-联系模型
    • 描述现实世界概念数据模型、逻辑数据模型的有效方法。
  • 规范化数据库设计的原因
    • 减少数据冗余
    • 数据完整性和一致性
    • 系统对数据高效访问
  • 函数依赖
    • 一个属性确定了,另一个属性也随之确定了。
  • 完全函数依赖
    • 表明函数依赖的决定因子中的最小属性集
    • 否则为部分函数依赖。
  • 属性传递依赖
    • 属性如果不是一一对应,可以根据属性之间的依赖关系,进行传递。
  • 多值依赖
    • 属性间的一对多联系。
  • 规范化范式
    • 关系表符合规范化程度的模式。
模式 程度
第一范式 属性不可细分
第二范式 消除部分函数依赖
第三范式 切断传递函数依赖
BCNF 决定因子都是候选键
第四范式 消除多值依赖

第五章

概念

  • 数据库管理原因

    • 规模扩大,系统变复杂
    • 多用户带来访问复杂性
    • 安全和隐私非常重要
    • 意外事件
  • 数据库管理目标

    • 保障系统正常运行
    • 发挥系统软硬件处理能力
    • 确保用户数据安全
    • 管理用户权限
    • 解决优化等问题
    • 发挥作用
  • ACID特性

  • 事务不能实现

    • 数据库的操作
    • 日志操作
    • 权限赋予
  • 并发控制的原因

    • 并发可能带来数据不一致事务死锁等问题。
  • 并发控制需解决的问题

    • 丢失更新数据
    • 不可重复读/幻读
    • 脏数据读
  • 可串行化调度

    • 事务中数据操作顺序的结果和事务串行执行结果一样时,并发事务调度才能保证操作的正确性和一致性
  • 加锁访问

    • 排它锁定
      • 不允许其他事务加锁
    • 共享锁定
      • 只允许其他事务加读取锁
  • 锁的相容性

排它锁 共享锁 无锁
排它锁
共享锁
无锁
锁协议 排它锁 共享锁 更新丢失 脏数据读 不可重复读
一级加锁协议 全程加 不加 × ×
二级加锁协议 全程加 读完释放 ×
三级加锁协议 全程加 全程加

二级和三级加锁协议都是在一级基础上的。

  • 二阶段锁定协议
    • 每个事务的加锁解锁分为两个阶段
  • 事务隔离级别
    • 级别越高,数据不一致可能越小,系统吞吐量也越小。
  • 安全模型
    • 身份认证
    • 权限控制
    • 系统防护
    • 加密存储

操作

事务

START TRANSACTION;
<SQL>;
...
COMMIT;
START TRANSACTION;
<SQL>;
...
ROLLBACK;
START TRANSACTION;
<SQL>;
...
SAVEPOINT <保存点名>;
...
ROLLBACK <保存点名>;

用户

CREATE USER "userA" WITH
	LOGIN
	NOSUPERUSER
	NOCREATEDB
	NOCREATEROLE
	INHERIT
	NOREPLICATION
	CONNECTION LIMIT -1
	RASSWORD '123456';

ALTER USER "userA"
	CONNECTION LIMIT 10;

DROP USER userA;

GRANT SELECT ON COURSE TO userA;

角色

CREATE ROLE "Role_Manager" WITH
	LOGIN
	CONNECTION LIMIT -1;

GRANT SELECT ON COURSE TO "Role_Manager";

备份

BACKUP DATABASE CourseDB TO DISK="D:CourseDB.bak";

RESTORE DATABASE CourseDB FROM DISK="D:CourseDB.bak";

第六章

概念

  • JDBC访问数据库步骤
    • 应用程序开始
    • 导入java.sql
    • 加载并注册驱动
    • 创建Connection对象
    • 创建Statement对象
    • 执行SQL
    • 使用ResultSet对象返回结果
    • 关闭ResultSet对象
    • 关闭Statement对象
    • 关闭Connection对象
    • 结束
  • 触发器
    • 可实现复杂的数据完整性
    • 本身是一个特殊的事务单位
    • INSERTUPDATEDELETE触发而被动执行。
    • 必须定义在表或视图上。
  • 触发器的特殊变量
    • NEW:值为改变之后的行。
    • OLD:值为改变之前的行。
    • TG_OP:值为引发触发器的操作。

操作

JDBC

  • 加载驱动
Class.forName("org.postgresql.Driver");
  • 建立连接
String url = "jdbc:postgresql://localhost:5432/testdb";
String usrName = "admin";
String pasWord = "password";
connection conn = DriverManager.getConnection(url,usrName,pasWord);
  • 创建Statement
Statement stat = conn.createStatement();
  • 执行SQL语句
String sql = "INSERT INTO STUDENT"
			+ " VALUES('201909','DD','男');";
stat.executeUpdate(sql);

String sql = "SELECT id,name,gender FROM company;"
ResultSet rs = stat.executeQuery(sql);
  • 打印结果
while(rs.next()){
	System.out.println(rs.getString("id"));
}
  • 关闭连接
rs.close();
stat.close();
conn.close();

存储过程

  • 创建
CREATE OR REPLACE FUNCTION countRecords()
RETURNS INTEGER 
AS $COUNT$
DECLARE 
	count integer;
BEGIN
	SELECT COUNT(*) INTO count FROM STUDENT;
	RETURN count;
END;
$COUNT$	LANGUAGE plpgsql;
  • 执行
SELECT * FROM countRecords();
  • 删除
DROP FUNCTION IF EXISTS countRecords();

PL/SQL语法

  • 条件
IF count>0 THEN
	count = count - 1;
ELSIF count<0 THEN
	count = count + 1;
ELSE
	EXIT;
END IF;
  • 循环
LOOP
	count=count+1;
	EXIT WHEN count>100;
END LOOP;

WHILE count>0 LOOP
	count=count-1;
END LOOP;

FOR i IN 1...10 LOOP
	RAISE NOTICE 'i=%',i;
END LOOP;

FOR rec IN SELECT id,name FROM STUDENT LOOP
	RAISE NOTICE "ID:%,NAME:%",rec.id,rec.name;
END LOOP;

触发器

  • 构造触发器函数
CREATE OR REPLACE FUNCTION score_audit()
RETURNS TRIGGER
AS $SCORE$
	BEGIN
		IF (TG_OP = "DELETE")THEN
			INSERT INTO AUIT SELECT OLD.ID,OLD.SCORE;
			RETURN OLD;
		END IF;
		RETURN NULL;
	END;
$SCORE$ LANGUAGE plpgsql;
  • 操作触发器
CREATE TRIGGER AUDIT_TRIGGER
AFTER DELETE OR INSERT 
ON STUDENT
FOR EACH ROW EXECUTE PROCEDURE score_audit();

ALTER TRIGGER AUDIT_TRIGGER ON STUDENT RENAME TO AT;

DROP TRIGGER IF EXISTS AUDIT_TRIGGER ON STUDENT CASCADE;

游标

  • 定义
CURSOR_NAME REFCURSOR FOR SELECT * FROM STUDENT;

CURSOR_NAME REFCURSOR(KEY INTEGER) IS SELECT * FROM STUDENT WHERE SID=KEY;
  • 打开
OPEN CURSOR_NAME FOR QUERY;

OPEN CURSOR_NAME EXECUTE QUERY_STRING;

OPEN CURSOR_NAME;

前两个适用于未绑定的,后面那个适用于绑定过的。

  • 使用游标
FETCH CURSOR_NAME INTO ID,NAME;
IF FOUND THEN
	...
END IF;
  • 关闭游标
CLOSE CURSOR_NAME;

第七章

概念

  • 分布式文件系统
    • 文件系统的资源不存储在本地节点
  • 分布式数据库=数据库+网络技术
  • 5V特征
    • 超量Volume
    • 高速Velocity
    • 异构Variety
    • 真实Veracity
    • 价值Value
  • NoSQL性质
    • 易扩展
    • 数据模型灵活
    • 高可用性
    • 大数据
    • 高性能
  • 分布式数据库不一致原因
    • 多个副本
    • 单点网络故障
    • 通信网络故障
    • 分布式提交等
  • 分布式环境要求CAP
  • BASE
  • NoSQL定义
    • 一个非关系数据存储系统
    • 不单指一个产品或技术,它代表一族产品,也是一个概念。
  • NoSQL技术
    • 简单数据类型:键值
    • 元数据应用数据分离
  • NoSQL特点
    • 优点
      • 高可扩展性
      • 分布式计算
      • 低成本
      • 架构灵活
      • 半结构化数据
      • 关系简单
    • 缺点
      • 没有标准化
      • 查询功能有限
      • 不直观
  • 列存储数据库
    • 把一列中的数据值串在一起存储
    • 例:HBASE
  • 键值对数据库
    • 每行记录由主键两个部分组成
    • 例:Redis
  • 文档数据库
    • 将数据存储为一个文档
    • 例:MongoDB
  • 图形数据库
    • 通过关系来连接各个节点
    • 例:Neo4J

程序员灯塔
转载请注明原文链接:【数据库】期末复习总结
喜欢 (0)