关于我复习数据库这件事
一, 什么是数据库
数据库概述
数据库是长期储存在计算机内,有组织的,可共享的大量数据的集合,由数据,数据库,数据库管理系统,数据库系统组成。
一,数据库的功能:1,数据定义功能
2,数据的组织,存储和管理
3,数据操纵功能
4,数据库的事务管理和运行管理
5,数据库的建立和维护
二,数据库的发展阶段:人工管理阶段—>文件系统阶段—>数据库系统阶段
二,数据库的特点:独立性高,共享度高,数据结构化
数据库模型
一, 概念模型:按照用户的角度对数据和信息建模
逻辑模型和物理模型:按照计算机的角度对数据和信息建模
二,数据模型的三个组成要素:数据结构,数据操作和完整性约束。
三,典型的三种数据模型
1,层次模型:树形结构,仅通过双亲节点才能进行数据操纵
2,网状模型:网状结构,导航式的数据操纵方式
这两者都通过路径对数据进行存取,存取效率高,但是不透明
3,关系模型:不需要知道路径,保密性高,且具有良好的完整性约束:
a,实体完整性
b,参照完整性
c,用户定义的完整性
建立数据库有关的三模式
数据库分为三个模式,两个映射
一,数据库模式是对数据库逻辑结构和特征的描述
二,数据库分为三模式,从上到下依次为应用程序,外模式,模式,内模式,数据
1,外模式:一个外模式可以对应多个应用程序,决定了应用程序可以从模式中获取哪些数据,提高了数据库的保密性。
2,模式:对数据库的逻辑描述,连接外模式和内模式,一个数据库系统只能有一个模式。
3,内模式:对数据存储方式和内部表示方式的描述,一个系统只能有一个内模式。
三,外模式和模式之间存在映射,满足了数据库逻辑独立性,当模式变化时,外模式进行调整而不需要调整应用程序。
模式和内模式之间存在映射,满足了数据库物理独立性,当内模式变换时,模式进行调整而不需要调整应用程序。
什么是关系模型
关系概述是针对关系模型中的相关概念进行讲述,且不赘述关系中属性,元组,空值等基本名词
一,关系模式与关系
关系模式是对一类实体的描述,代表的是一类实体,关系是对一个实体的描述,代表队是一个实体。
二,关系模式的完整性约束
第二讲中提到,关系模型有三个完整性约束,分别是实体完整性,参照完整性和用户定义完整性。
实体完整性:关系的主码不能为空值。
参照完整性:在一组参照关系中,参照关系的取值要么是被参照关系的某个值,要么是空值。
用户定义完整性不做赘述。
三,主码,超码,候补码
超码:在关系中可以唯一标识一个元组的属性
候补码:最小的超码
主码:人为挑选的候补码
二,关系代数
这一部分主要需要理解,一时半会儿采用笔述的方式难以解释清楚,哪一点不清楚可以单独私信我。
三, 简单的SQl语句运用
ps:本文中A表示元组属性,r表示关系名,P表示条件
创建关系
create table class(
classid varchar(20) not null,
numstudents int,
majorname varchar(20),
primary key(classid),
foreign key (majorname) references major(majorname));
全段释意:创建(create)了一个叫做class的表,表内具有classid,numstudents,majorname三个属性,其中classid是表的主码,采用primary语句显示并且不允许为空,majorname借用major关系,是该class关系的外码,用foreign语句满足参照系约束。
属性的域如下:
char(n):固定长度的字符串,用户指定长度n
varchar(n):可变长度字符串,用户指定最大长度n(这个很nice,一般用这个)
int:整数类型
smallint:小整数类型
numeric(p,d):定点数,这个给数有p位数字(加上符号为),其中d位数字在小数点右边
real,double precision:浮点数和双精度浮点数,精度与机器有关
float(n):精度至少为n位的浮点数
基本查询
select (distinct/all :显示表示去重/不去重) A1,A2..。Ak
from r1,r2...rk //各个关系表通过笛卡尔积连接,若改为from r1 natural join r2 using A1 则表示r1与r2通过运用A1的自然连接连接
where p;
全段意思为:从(from)这些关系中找出满足(where)条件的属性(A1…Ak),结果以表的形式表示
字符串查询
'%'字串, '_'子串,escape 转义字符
select ...
from ...
where A1 like --- '%zhang%'识别以zhang为子串的A1属性
--- '___' 识别有三个以上字符的A1属性
___ '%zhang\%%' escape'\' 识别以zhang%为子串的A1属性
查询排序
order by
select ...
from ...
where ...
order by A1(ASC:升序/DESC:降序); 以A1升序或降序排列,默认升序
集合查询
union 并 intersection交 except差,结果自动去重
(selec ...
from ...
where ...)
union/intersection/except
(selec ...
from ...
where ...);
集函数查询
avg()平均,min()最小,max()最大,sum()求和,count()计数
select avg(A1)//求A1属性的平均值
from ...
where ...;
分组查询
group by &having
select ...
from ...
where ...
group by A1
having p;//对p条件下的A1进行分组,再对每一个分组内部进行查询
嵌套子查询
select ...
from ...
where A1 X[^1](select A1 from ...where...);
[^1]:X可以是in,not in,>some,>all等值
以in为例,全段表示找出 属性A1出现在子查询 中的所有值
存在性查询
unique 唯一,exists存在
select ...
from ...
where unique/exists(select A1 from... where...);
以unique为例,全段表示找出子查询中A1只出现一次的情况
视图
建立视图
create view NAME(A1.name,A2.name...Ak.name)as//可以利用括号内的内容重命名
(select B1,B2...Bk
from ...
where ...);
删除视图
drop view NAME (cascade级联删除,restrict限制删除);
视图的作用:
1,简化查询
2,便于数据库重组
3,可以不同角度看待同一数据
数据库操作
1,插入操作
insert into r1
values(......)/(select...from...where...);
2,更新操作
update r1
set ...
where...
3,删除操作
delete from r1
where p;//删除元组
drop table r1;//删除表
四,事务
什么是事务
事务:访问并可能操作各项数据项的一个数据库操作序列
事务满足ACID特性:
Atomicity 原子性 :操作要么一次性全部完成,要么完全不做 (利用硬件充分记录过程实现)
Consistency 一致性:通俗的来说,一致性类似于一种资源守恒,比如说A账户给B账户转移了20W,那么当事务完成的时候,A与B总和仍然不变。(采用事务管理器实现)
Isolation 隔离性:两个事务互不干扰(采用并发控制器实现)
Durability 持久性:当事务完成后,结果是永久保存的,不能说这一刻这个事务完成了,下一刻这个事务进行失败。(采用恢复管理器实现)
并发控制
为什么要并发控制呢?
当两个事务访问同一个数据项时,事务的并行结果会有与事务的串行结果不一样的情况,我们应该避免这种情况的发生。
如何并发控制?
采用lock锁
exclusive X_lock锁和share S_lock锁
尽可能满足先申请全部锁再释放锁的流程,以避免死锁。