一:关系数据库的描述
1:实体间的联系: 1:1、1:n、m:n
2:候选码:关系中某一属性组的值能唯一标识一个元组(记录)而其子集不能,则该属性组所包含的属性们称为候选码。
主码:若有多个候选码,选一个作为主码。
全码:关系模式的所有属性都是候选码,称为全码。
二:关系代数
1:传统集合运算
并:两种关系R、S的并集由R跟S的记录合并得到;
差:R-S的表记录由R表中有而S表中没有的记录组成;
交:R、S的交集由既属于R表又属于S表的记录组成;
笛卡尔积:若R有k1条记录,S有k2条记录,则R、S的笛卡尔积有k1*k2条记录,每条记录有r+s列,前r列为R的记录,后s列为S的记录。即:遍历R中每一条记录,在其后面依次拼接S表的记录。共循环了k1*k2次。
2:专门关系运算
选择:从表中选出符合条件的元组(记录)组成结果表;(行查询)
投影:从表中选出若干属性列组成结果表;(列查询)
连接:从两个关系的笛卡尔积中选出属性间满足某条件的元组。
等值连接:从R、S关系的笛卡尔积中,选取R中某些属性值与S中某些属性值相等的元组;
自然连接:一种特殊的等值连接,选出R、S中同名的属性组的值相等的元组,并在结果中去掉重复的属系列留下一个即可;
通过自然连接利用两个关系某相同属性把两个表拼接在了一起,此时会出现以下情况:
悬浮元组:在R、S通过属性B的值拼接时,如果出现R中的某B属性值bn在S中没有相等值,则此时bn所在元组就会被舍弃,不加入结果表中。
外连接:如果把悬浮元组也加入结果表中,则把bn属性所在行在另一个表中取不到值的列设为NULL值。
左外连接:只保留左边关系R的悬浮元组。即:R中bn在S中无等值,把R中bn元组加入结果表,元组中属于S的属性列赋NULL值。
右外连接:只保留右边关系S的悬浮元组。即:S中的bn在R中无等值,把S中bn所在元组加入结果表,该元组中属性R的属性列赋NULL值。
三:SQL语言
1:定义模式(定义数据库):CREATE SCHEMA 模式名(数据库名) AUTHORIZATION 用户名
2:删除模式(删除数据库):DROP SCHEMA 模式名[CASCADE|RESTRICT] 级联删除或限制不能删除
3:创建表:CREATE TABLE 表名 (列名 数据类型 约束条件,...);
4:修改表:ALTER TABLE 表名
ADD 列名 数据类型 约束条件
DROP 列名[CASCADE|RESTRICT]
ALTER COLUMN 列名 数据类型
5:删除表:DROP TABLE 表名[CASCADE|RESTRICT]
6:数据查询:SELECT[ALL|DISTINCT] 表达式 FROM 表名 WHERE 表达式 GROUP BY 列名 HAVING 表达式 ORDER BY 列名[ASC|DESC];
去除重复属性 对groupby结果进一步筛选 升序|降序
WHERE 表达式常用条件:
比较:=,>,<,<=,>=,!=......
范围:between...and...
归属:in、not in
模糊查询:like 、not like (%作通配符表示模糊内容)
7:插入数据:INSERT INTO 表名 属性列名 VALUES(属性值,...,...)
8:修改数据:UPDATE 表名 SET 列名=修改值 where 条件
9:删除数据:DELETE FROM 表名 where 条件
四:视图
视图不是一个具体的表,它只不过是一个“窗户”,透过它可以看到某个表中某些特定的数据以及变化。
五:数据库安全
1:自主存取控制
通过GRANT、REVOKE赋予用户、角色某些权限或撤销其权限;
2:强制存取控制
为用户赋予许可证,为数据设定密级。
只有当用户许可证级别大于等于数据密级时,才允许读取数据;
只有当用户许可证级别小于等于数据密级时,才允许写数据;(是写入而不是修改,低等级用户只拥有向表中增加数据的权限,不能查看,不能修改)
六:完整性约束
1:定义主键:PRIMARY KEY(属性名)
2:定义外键:FOREIGN KEY(属性名) REFERENCES 外表名(参考属性名)
3:自定义约束:自定义某属性的约束条件:Check 条件
七:触发器
触发器又叫 事件—条件—动作 规则。即:某事件(数据库的增删查改)发生前/后—符合某条件—执行某动作
八:关系理论
第一范式:基本表,表中无表(即属性不可再分)。
第二范式:在第一范式的基础上,每一个非主属性都可由任意一个主属性推出。
第三范式:在第二范式基础上,每个非主属性由任意一个主属性直接推出而不传递或部分推出。
第四范式:每一个主属性都可推出所有非主属性,并且没有任何一个非主属性能推出主属性。
九:数据库恢复
1:事务:用户定义的一系列数据库操作,要么全做,要么不做。具有ACID特征:
原子性:事务不可分割。
一致性:事务结果使数据库从一个一致性状态变到另一个一致性状态。
隔离性:事务间相互独立,互不干扰。
持续性:事务一旦成功提交,对数据库的改变是永久的而不是暂时的。
十:并发控制
1:数据库并发操作引起数据不一致:丢失修改、不可重复读、读到“脏”数据
2:封锁技术:事务T操作某个数据对象前先加锁,然后进行操作。在锁释放期间其他事务不能操作该数据对象。分两种:排它锁(写锁,其他事务不能读不能写)、共享锁(读锁,其他事务也可以读)。
3:死锁:两个事务互相等待对方释放锁,导致死锁。
4:处理死锁:选择一个造成死锁的最小代价的事务将其撤销,等待其他事务优先执行完再执行。