数据库的理论知识
1.数据视图与数据模型
数据抽象共有三个层次:物理层、逻辑层和视图层。在逻辑层使用的数据模型包括两类:一类是概念数据模型,主要用于数据库设计,它能被一般的用户理解,与人的思维表达方式比较接近。这样的模型有实体-联系模型(ERM);另一类是逻辑数据模型,按计算机系统的观点对数据建模,使得数据更适合用计算机加以表示。这里模型主要用于DBMS的实现,比如关系模型、面向对象模型、层次模型和网状模型。设计师构建数据库模式的方法通常是首先使用E-R模型在高层对数据建模,然后再将其转变成关系模型。在物理层使用的数据模型称为物理数据模型。
数据模型通常由数据结构、数据操作和完整性约束三部分组成。
2.数据库语言
根据功能不同,可以将数据库系统提供的语言分成三种类型:1)数据定义语言(DDL),用于定义数据库模式;2)数据操纵语言(DML),用于对数据库进行查询和更新;3)数据控制语言(DCL),用于对数据进行权限管理。
3.数据库模式
根据数据的不同抽象层次,数据库有三级模式:物理模式(内模式)在物理层描述数据库中全体存储结构和存取方法,而逻辑模式(概念模式)则在逻辑层描述数据库中全体数据的逻辑结构和特征。在视图层也可分为若干模式,称为子模式(外模式),它描述了数据库用户能够看见和使用的局部数据的逻辑结构和特征。通常一个数据库只有一个物理模式和一个逻辑模式,但是子模式有若干个。
4.E-R图
E-R图由以下元素构成:1)矩形,代表实体型;2)椭圆,代表属性;3)菱形,代表联系;4)线段,将属性和实体性相连,或将实体型和联系相连。
5.关系模型
关系模型由关系数据结构、关系操作集合和关系完整性约束三部分构成。在关系模型中,现实世界实体以及实体间的联系均用关系来表示。
关系模型中常用的关系操作包括:选择、投影、连接、除、并、交、差等查询操作和增加、删除、修改两大部分。关系操作的特点是集合操作方式,即操作的对象和结果都是集合。关系操作可以使用两种方式定义:基于代数的定义称为关系代数;基于逻辑的定义称为关系演算。由于使用变量的不同,关系演算又分为元组关系演算和域关系演算。
关系模型允许定义三类完整性约束:实体完整性、参照完整性和用户定义完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件。实体完整性规则是:关系的主码不能取空值。参照完整性规则是:外码必须是另一个表中主码的有效值,或者是“空值”。
6.连接运算
连接运算是从两个关系的乘运算结果中选取属性间满足一定条件的元组,构成新的关系。连接运算有两种:等值连接和自然连接。自然连接要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。
7.SQL
关系数据库系统支持三级模式结构,其模式(数据库)、外模式和内模式中的基本对象有表、视图和索引。因此SQL的数据定义功能包括模式定义、表定义、视图定义和索引定义。SQL通常不提供修改模式定义、修改视图定义和修改索引定义。用户如果想修改这些对象,只能先将它们删除,然后再重建。
8.基本表的操作
1)创建表
create table 基本表名
(列名类型,
……
完整性约束,
……
)
完整性约束主要有三种子句:主键子句(primary key)、外键子句(foreignkey)和检查子句(check)。
2)修改表
alter table <基本表名> add <列名> <类型>
alter table <基本表名> drop <列名> <类型> [cascade | restrict](cascade表示所有引用到该列的视图和约束也要一起自动删除;restrict表示在没有视图或约束引用该属性时,才能在本表中删除该列,否则拒绝删除。)
alter table <基本表名> modify <列名> <类型>
3)撤销表
drop table <基本表名> [cascade | restrict]
9.SQL查询
where子句中可以使用下列运算符:
l 算术运算符
l 逻辑运算符
l 字符串匹配运算符,包括like,not like
l 集合成员资格运算符,包括in,not in
l 谓词,包括exists,all,some,unique
l 聚合函数,包括avg,min,max,sum和count
l 还可以是另一个select语句
select语句完整语法:
select 目标表的列名或列表达式序列
from基本表名和(或)视图序列
[where行条件表达式]
[group by 列名序列]
[having 组条件表达式]
[order by 列名[asc | desc]]
整个语句的执行过程如下:
1)读取from子句中基本表、视图的数据,执行笛卡尔积操作;
2)选取满足where子句中给出的条件表达式的元组;
3)按group子句中指定列的值分组,同时提取满足having子句中组条件表达式的那些组;
4)按select子句中给出的列名或列表达式求值输出;
5)order子句对输出的目标表进行排序,按附加说明asc升序排列,或按desc降序排列。
10.视图
创建视图:
create view <视图名> [<列名> <列名>…]
as <子查询>
[with check option]
with checkoption表示对视图进行增删改是要保证操作的行满足视图定义中的谓词条件(即子查询中的条件表达式)。
视图最终是定义在基本表之上的,对视图的一切操作最终也要转换为对基本表的操作。视图的好处:
l 视图能够简化用户的操作
l 视图是用户能以多种角度看待同一数据
l 视图对重构数据库提供了一定程度的逻辑独立性
l 视图能够对机密数据提供安全保护
11.事务
事务是一系列的数据库操作,是数据库应用程序的基本单元,是反映现实世界需要以完整单位提交的一项工作。事务是用户定义的一个数据库操作序列。
事务的四个特征:原子性、一致性、隔离性和持久性。
事务处理包括数据库恢复和并发控制。数据库恢复有两个目的:保证事务的原子性和使数据库能恢复到正确状态。
数据恢复的原理概括为冗余,建立冗余数据最常用的技术是数据转储和登录日志文件。数据转储是由DBA定期地将整个数据库复制到磁盘或另一个磁盘上保存起来的过程。
12.触发器
一个触发器用来定义一个条件以及在该条件为真时需要执行的动作。通常,触发器的条件以断言的形式定义。动作以过程的形式定义。
13.索引
参考:http://blog.codinglabs.org/articles/theory-of-mysql-index.html
数据库的技术是日常开发中的必备技术之一,几乎所有的项目都会设计到数据库中数据的操作,mysql 也是使用最广泛的一种关系型的数据库,还有用于高并发场景的 redis 等no-sql数据库,都是需要去学习与了解的~~需要不断的去提升数据库的知识,里面的知识体系特别大,需要不断的去填充~