绪论
数据库
数据库 是长期存储在计算机内的、有组织的、可共享的、统一管理的数据集合。
模式
模式 也称逻辑模式,是数据库中全体数据的逻辑结构和特征描述,是所有用户的公共视图。
视图
视图是从一个表或几个基本表(或视图)中导出的虚拟表。在系统的数据字典中仅仅存放了视图的定义,不存放对应的数据。
SQL 语法规则
DDL
(Data Definiation Language 数据定义语言) 用于描述数据库中要存储的东西
表级完整性约束条件
涉及相应表中的完整性约束条件
- 实体完整性约束条件
PRIMARY KEY
CREATE TABLE TABLE_NAME( id int,stuno varchar(255),PRIMARY KEY(id,stuno))
CREATE TABLE TABLE_NAME(id int, stuname varchar(255),UNIQUE(id,stuname))
- 参照完整性约束条件
column_name int FOREIGN KEY REFERENCES target_table_name(column_name)
CONSTRAINT 外键约束名 FOREIGN KEY( column_1,column_2 ) REFERENCES target_table(column_1,column_2) ON <ACTION> [CASCADE|RESTRICT]
- 在编码时,建议引用名和对象名保持一致,且数据类型必须保持一致
- 用户定义完整性约束条件
check
CREATE TABLE <table> ( id int check(id > 100 AND name='name'),name varchar(255) )
列级完整性约束条件
涉及相应属性列的完整性约束条件
- 实体完整性约束条件
PRIMARY KEY
CREATE TABLE TABLE_NAME(column_name data_typo PRIMARY KEY)
CREATE TABLE TABLE_NAME(column_name data_typo UNIQUE)
- 参照完整性约束条件
FOREIGN KEY (column_name) REFERENCES target_table_name(column_name)
- 在编码时,建议引用名和对象名保持一致,且数据类型必须保持一致
- 用户定义完整性约束条件
check
CREATE TABLE <table> ( id int check(id > 100 AND name='name'),name varchar(255) )
数据库系统安全
关系规范化
第一范式
所有属性必须是原子的,某个属性有多个码时,必须拆分成不同的属性
第二范式
需满足 1NF,非码属性必须完全依赖于候选码;即数据库中的每一个实例或记录可以被唯一的区分,简而言之,第二范式就是再第一范式的基础上,属性完全依赖于码。
第三范式
在 2NF 的基础上,任何非主属性不依赖于其他非主属性,换言之,第三范式要求一个关系中不包含已在其他关系已包含的非主关键字信息。即关系不能包含其他关系中非主键的信息。所有必须是 Key->Other
BCNF 范式
在 3NF 的基础上,任何非主属性不能对子集依赖(在 3NF 基础上消除了对主码子集的依赖),为第三范式的修正。简单来说,就是所有属性都是 Key
第四范式
限制关系模式的属性之间不允许有非平凡且非函数的多值依赖。当一个表中的非主属性相互独立时(3NF)。
对象类型
关系图、表、视图、存储过程、用户、角色、规则、默认、用户定义的数据类型、用户定义的函数、全文目录
数据库权限分类
对象类型 | 对象 | 操作类型 |
---|---|---|
模式 | CREATE SCHEMA | |
数据库模式 | 基本表 | CREATE TABLE 、ALTER TABLE |
视图 | CREATE VIEW | |
索引 | CREATE INDEX | |
数据 | 基本表和视图 | SELECT 、INSERT 、UPDATE 、DELETE 、REFERENCE 、ALL PRIVILEGES |
属性列 | SELECT 、UPDATE 、INSERT 、REFERENCES、 ALL PRIVILEGES` |
^79061e
事务
事务是并发控制的单位,是用户定义的一个操作序列。具有 #原子性|原子性(Atomicity)、#一致性|一致性(Consistency)、#隔离性|隔离性(Isolation)、#持久性|持久性(Durablity) ACID
四大特性。
原子性
事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。
一致性
事务的执行结果只能是从一个一致性状态转变为另外一个一致性状态。一致性与原子性密切相关。
隔离性
一个事务的执行不能被其他事务干扰。
持久性
一个事务一旦提交,他对数据库中数据的改变就应该是永久的。
封锁
封锁就是事务 T 在对某一个#对象类型|数据对象操作之前,先向系统发出请求,对其加锁。