云南大学数据库重点
- 格式:docx
- 大小:345.44 KB
- 文档页数:9
E-R图转换:
1. 单值属性->列
2. 多值属性->表
3. 实体->表
4. 复合属性->多个简单列
级数:(最小级数,最大级数)
(0 or 1,1 or N) (1,1) (1,N)(N,N)
最大级数是1:单值参与
最大级数是N:多值参与
最小级数是1:强制参与
最小级数是0:可选参与
单值参与方的表应加入外键
关系转换成表:联系实体的主键作为主键
函数依赖:A决定B
Armstrong 公理:
Rule 1(包含规则):Inclusion Rule
If Y包含X,then X → Y
Rule 2(传递规则):Transitivity Rule
If X → Y and Y → Z ,then X → Z Rule 3(增广规则): Augmentation rule
If X → Y, then XZ → YZ
Rule 4: Union Rule (合并规则)
If X → Y and X → Z ,then X → YZ
Rule 5: Decomposition Rule (分解规则)
If X → YZ,then X → Y,and X → Z
Rule 6: Pseudotransitivity Rule (伪传递规则)
If X → Y,and WY → Z,then XW → Z
Rule 7: Set accumulation rule (聚积规则)
If X → YZ and Z → W,then X → YZW
关系的完整性:
1. 实体完整性(entity integrity)
若A是基本关系R的主属性,则A不能取空值(null)。
2. 参照完整性(referential integrity)
3. 用户定义完整性(user-defined integrity)
针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足语义要求。 运算:
1. 笛卡儿积 R:3*3,S:3*3 R×S=(3*3,3+3)=(9,6)
2. 选择,限制(restriction):X=Y,X≤Y,X>Y等待运算。
3. 投影(自动取消相同的行):投出所需要的列(属于关系R)
4. 连接: 一 . 等值连接:将值相等的两列连接起来(R,S: 区分R.B和S.B)
二.自然连接是特殊的等值连接,(R,S: 不区分R.B和S.B且消除重复列)
三.保留左(右)边关系(悬浮元组)叫左(右)外连接
外键约束:
FOREIGN KEY 约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。例如,如果在 publishers 表中删除一个出版商,而这个出版商的 ID 在
titles 表中记录书的信息时使用了,则这两个表之间关联的完整性将被破坏,titles 表中该出版商的书籍因为与 publishers 表中的数据没有链接而变得孤立了。FOREIGN KEY 约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束值相关,则该操作不可实现。若要成功更改或删除 FOREIGN KEY 约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。
外键是用来控制数据库中数据的数据完整性的,
就是当你对一个表的数据进行操作
和他有关联的一个或更多表的数据能够同时发生改变
这就是外键的作用
索引:加快查询速度的有效手段。能快速定位到需要查询的内容。
CREATE INDEX index_name ON table_name (column_name)
判断冲突操作:冲突操作指不同的事务对同一数据的读写操作和写写操作
读锁(S锁):共享锁 加上读锁后只能读,不能修改,其他事务只能再对A加读锁
写锁(X锁):排他锁,只允许加该锁的事务对数据对象进行读取和修改
ACID特性:
1. 原子性(atomicity):事务时数据库的逻辑工作单位,事务中包括的操作要么都做,要么都不做。不可分割
2. 一致性(consistency):事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
3. 隔离性(isolation):一个事务的执行不能被其他事务干扰。(并发执行的各个事务之间不能互相干扰)
4. 持续性(durability):一个事务一旦提交,它对数据库中的数据改变就应该是永久性的。
添加外键:
CREATE TABLE STUDENT(
SNO NUMBER(6),
SNAME VARCHAR2(20),
SEX VARCHAR2 (2),
AGE NUMBER(3),
ENTERDATE DATE,
CLAZZ VARCHAR2 (10)
FOREIGN KEY(SNO) REFERENCES STUDENT(CLAZZ)
);
默认时间为系统时间:TIME datetime default getdate(),
设置取值范围:
create table 课程(
课号 char(12),
课名 varchar(16),
学分 int check(学分>0 and 学分 <100),
学时 int check(学时>2 and 学时<4))
添加列:
ALTER TABLE STUDENT ADD EMAIL VARCHAR2(20) NOT NULL;
插入数据
INSERT INTO STUDENT VALUES(1001,'羽毛','男',-10,sysdate,'01级02班');
删除已有的列:
ALTER TABLE STUDENT DROP COLUMN EMAIL;
Update:
UPDATE 表名称 SET
列名称 =
新值 WHERE
列名称 =
某值
UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'
--insert--> 向已有表中插入数据 -->操作数据
--add -->向表中添加列 -->操作的表结构
--update -->对已有表中的数据进行修改
--modify -->修改表中的列
--delete -->删除表中的数据 --drop -->删除表
Group by:(分类)
select 类别, sum(数量) as 数量之和
from A
group by 类别
Order by:(默认升序对列进行排序)
SELECT Company, OrderNumber FROM Orders
ORDER BY Company
逆序显示:
SELECT Company, OrderNumber FROM Orders
ORDER BY Company DESC
视图:
视图是基于 SQL 语句的结果集的可视化的表。 视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加
SQL
函数、WHERE
以及
JOIN
语句,我们也可以提交数据,就像这些来自于某个单一的表。
CREATE VIEW view_name AS
SELECT column_name(s)【子查询】
FROM table_name
WHERE condition