前言
复习数据库系统概论的自用手册,保留了应付考试的内容。
一、数据库与表基本操作
1.数据库与表的建立与删除:
建立数据库: CREATE DATABASE 数据库名;
建立表: CREATE TABLE 表名
(
列名1 数据类型 PRIMARY KEY/UNIQUE //主键/唯一值
...... //操作同上
)
删除: DROP 类型 名字 //类型可以是数据库、表、视图、存储过程、索引....但是用它删除要注意表之间的约束条件
2.表操作:ALTER
1.增加列:
ALTER table 表名
add 列名 数据类型;
2.外键参照:
创建表时,在后面加上foreign key(...) references 外表名(....)
3.更改约束:
alter table 表名
drop foreign key 外键名 //删除
add foreign key 外键名 (..)references 外表名(...)//添加
on update/delete...... //级联操作,更新、删除时
4.插入行:
insert into 表名
values(根据每一列的具体要求写值)
5.更新数据(视图也一样):
例:update 表名
set
xxx=....
where .....
6.删除一行:
delete from 表名
where ....
二、基本操作
1.别名:AS
select
a,
b,
c,
(d+10)*100 AS 起的别名
from xxxxx
2.结果去重:DISTINCT
select distinct xxx
from xxxxx
3.查询结果返回多个值:IN
select *
from xxx
where xxx IN (你的操作)
4.查询结果在…之间:BETWEEN…AND
select *
from xxx
where xxxx BETWEEN 左边界 AND 右边界
5.查询空值:NULL
select *
from xxx
where xxxx is NULL
6.限制返回结果数量:LIMIT
select *
from xxx
where xxxx
LIMIT 3 //返回前三条数据;(limit 6,3) =>跳过六个,返回三个
7.字符串操作:
'%'表示任意个字符,例:
"刘%" =>左边界是刘的
"%刘" =>右边界是刘的
"%刘%" =>带“刘”这个字
'_'代表单字符,例:
"刘_" =>左边界是刘,总共两个字符
8.多段查询:UNION
select *
from xxx
where xxxx1
UNION
select *
from xxx
where xxxx2
9.外连接:JOIN…ON
select *
from 左表
LEFT JOIN 右表 //LEFT JOIN是左连接,左表内容全部返回;同理也有右连接
ON xxx=xxx //共同属性
10.相关子查询:
其实也就是同一张表自关联查询的时候,需要起个别名(用as)来辅助
select *
from 表一 as 表一别名
where(
select xxx
from 表一
where xxxx=表一别名.xxxx
)
11.基本聚集函数:
max() min() avg()//平均
sum()//求和 count()//计数
**使用聚集函数,且返回多条数据时,使用HAVING代替where,比如使用group by分组之后的返回结果不能用where
12.条件查询:if
select ....if(条件,为真时返回值,为假时返回值)
from xxx
where xxxx
//多条件查询是case-when-then-else-end结构
三、视图、存储过程、触发器
1.视图
1.创建:
create view 命名 as
...... //正常操作
2.删除:
drop view 名字
3.更改:
create or replace view 命名 as
...... //正常操作
//这样会覆盖原视图
**视图本质上就是一段查询的结果,是基本表的某些数据的虚拟表,使用视图意味着在这些数据的基础上进行操作
2.存储过程与函数
1.创建:
create procedure 命名(参数以及数据类型,参数以及数据类型....)
begin
...... //正常操作
end
2.更改分隔符:
delimiter 分隔符
3.调用:
call 过程名(参数)
4.删除:
drop procedure 名字
********************************************************************
函数:
**函数与存储过程基本类似。
**函数返回的是一个结果,一条记录。
**存储过程返回的是一个结果集。
创建:
create or replace function 命名(参数以及数据类型) return 返回类型
begin
...... //正常操作
end
3.触发器
1.创建:
create trigger 命名
before/after ......on 基本表名
for each row //行级,除此之外还有表级等等
begin
.....
end
2.删除:
drop trigger 名字
四、基本理论知识
1.关系代数
-
σ选择操作符
单纯的选择,例:选择a表中,b属性的值等于c的:
-
π投影
设a表为:
id1 | id2 | id3 |
---|---|---|
xxx1 | xxx2 | xxx3 |
则
结果为:
id1 | id3 |
---|---|
xxx1 | xxx3 |
-
⋈连接
a⋈b =>选择a与b共有的元组,自然连接会去重 -
÷除
设a表:
id1 | id2 |
---|---|
1 | 001 |
2 | 002 |
3 | 003 |
4 | 004 |
设b表:
id2 |
---|
001 |
002 |
则a÷b,结果为:
id1 |
---|
1 |
2 |
2.绪论
- 数据库发展的三个阶段:人工管理阶段、文件系统阶段、数据库系统阶段
- 数据模型三要素:数据结构、数据操作、数据约束
- 三级结构模式:外模式(用户模式)、模式(公共数据视图)、内模式(存储模式)
- 外模式/模式映像:逻辑独立性
- 内模式/模式映像:物理独立性
- 索引的目的是为了加快查询速度
3.数据库安全与设计概述
- 数据库安全技术:强制存取控制、数据加密存储、加密传输
- 事务是一组原子性操作,四个特征:原子性、一致性、隔离性、持久性
- 范式:
1NF
↓ //消除非主属性对码的部分函数依赖
2NF
↓ //消除非主属性对码的传递函数依赖
3NF
↓ //消除主属性对码的传递和部分函数依赖
BCNF
↓ //消除非平凡且非函数依赖的多值依赖
4NF
- E-R图转换关系模式:多对多必须转换为一个关系模式,三元及以上必须转换为一个关系模式
- 游标,是开设了一个数据缓冲区,用来协调两种不同的处理方式。
- 冲突操作是两个不同事务对同一个数据进行操作的操作,冲突可串行化是可串行化调度的充分条件,但不是必要条件
- 封锁对象的大小叫做封锁的粒度,粒度越大,并发越小,开销越小。
4.数据库恢复技术与并发控制概述
- 数据库三大故障与恢复:事务故障(反向扫描日志文件,撤销修改)、系统故障(正向扫描日志文件,将故障前提交的重做,其他的撤销)、介质故障(重装)
- 并发控制:
1.事务是并发控制的基本单位
2.并发控制是为了保证事务的隔离性和一致性
3.并发控制的三个问题:丢失修改、不可重复读、读脏数据
4.三级封锁协议:
一级 解决了丢失修改的问题
二级 解决了丢失修改和不可重复读的问题
三级 解决了丢失修改和不可重复读和读脏数据的问题
5.协议内容:
一级:a操作时,加写锁(x锁),至事务结束
二级:a操作时,加写锁(x锁),至事务结束;b也要操作时,加读锁(s锁),至自己操作结束
三级:a操作时,加写锁(x锁),至事务结束;b也要操作时,加读锁(s锁),至事务结束
- 锁
1.活锁:某事务有可能完全等待
2.死锁:某事务互相等待,永不结束 //采用超时法和等待图法来预判
总结
考试的水太深,你把握不住啊。