1 概述
本文主要介绍了数据库的发展史和数据库的相关概念介绍
2 数据库的发展史
2.1 萌芽阶段-----文件系统
使用磁盘文件来存储数据
不利于大型数据进行管理,只能用户简单的数据管理
2.2 初级阶段-----第一代数据库
出现了网状模型、层次模型的数据库
这里只能算是数据库的管理系统,用户不需要直接打开文件,通过软件来打开对应的文件
2.3 中级阶段-----第二代数据库
关系型数据库和结构化查询语言
层次性结构
网状型结构
关系型数据库
2.4 高级阶段------新一代数据库
“关系-对象”型数据库
3 数据库管理系统
3.1 数据库管理系统
.数据库是数据的汇集,它以一定的组织形式存于存储介质上
.DBMS是管理数据库的系统软件,它实现数据库系统的各种功能。是数据库系统的核心
DBMS是一套解决方案,是软件,管理数据库里的数据,如mysql,oracle,不同的数据库管理系统支持的文件格式不一样
.DBA:负责数据库的规划、设计、协调、维护和管理等工作
.应用程序指以数据库为基础的应用程序
3.2 数据库管理系统的优点
.相互关联的数据的集合
.较少的数据冗余
.程序与数据相互独立
.保证数据的安全、可靠
.最大限度地保证数据的正确性
.数据可以并发使用并能同时保证一致性
文件管理系统有如下的缺点
.编写应用程序不方便
.数据冗余不可避免
.应用程序依赖性
.不支持对文件的并发访问
.数据间联系弱
.难以按用户视图表示数据
.无安全控制功能
3.3 数据库管理系统的基本功能
.数据定义
在数据库里把数据定义出来,如存储的属性有哪些,如一个学生的姓名,身份证等
.数据处理
数据处理,如增删改查
.数据安全
如创建账号,分配权限
.数据备份
有专门的数据库备份工具,数据可能放在内存中或者文件中,不单单是在文件中,备份工具能把内存中的数据也拷贝出来
4 数据库系统的架构
.单机架构
excel就是单机架构
.大型主机/终端架构
早期的环境,如一个主机让多个终端接入
.主从式架构(C/S)
主从架构是目前主流的架构,如安装server,客户端通过客户端软件基于网络连接到服务器访问数据
.分布式架构
大型企业会将数据分布在多个地方进行存储,难度增大,但是更加灵活
5 关系型数据库
.关系:关系就是二维表。并满足如下性质:
.行row:表中的每一行,又称为一条记录
.列column:表中的每一列,称为属性,字段
.主键(Primary key):用于唯一确定一个记录的字段
主键:作用于某个字段上,那么该字段的所有值都是唯一的,确保表中没有完全一样的数据,主键不能为空值,一个表只能有一个主键
复合主键:把多列的数据组合为一个主键,多个字段组成的复合主键算是一个主键
.域domain:属性的取值范围,如,性别只能是‘男’和‘女’两个值
.唯一键:一张表中可以有多个唯一键,允许为空值。
5.1 关系数据库:RDBMS
.RDBMS:
MySQL: MySQL, MariaDB, PerconaServer
mysql是开源产品
MariaDB是mysql的分支,
PostgreSQL:简称为pgsql,EnterpriseDB,
PostgreSQL:号称性能最好的开源数据库,但是用户量少
Oracle:
MSSQL:
DB2:
5.2 关系型数据库的常见组件
.数据库:database
.表:table
行:row
列:column
.索引:index,就像是书的目录,可以快速提高查询速度
.视图:view,是一个虚拟表,取物理表中特定的字段或特定的列或行
.用户:user
.权限:privilege
.存储过程:procedure,过程无返回值,这是数据库里专有,有函数和过程,如下的function,这个是内置的的,用户也可以手动创建
.存储函数:function,过程有返回值
.触发器:trigger。用触发器来监控表的的某个字段是否发生变化,一旦发生变化,触发另一种表做相应的变更
.事件调度器:event
scheduler,任务计划,相当于cron计划任务
5.3 事务
事务transaction:多个操作被当作一个整体对待
ACID,是指在可靠数据库管理系统(DBMS)中,事务(transaction)所应该具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability).这是可靠数据库所应具备的几个特性.下面针对这几个特性进行逐个讲解.
A:原子性
指事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生。
针对事务来说的
mysql和sqserver执行命令后,默认是commit
oracle如果执行命令后,还没commit后,就代表还没完成事物
C:一致性
数据在进行操作的时候,必须是从一个一致性的状态切换到另一个一致性的状态
数据库设计的是读的状态,而不是结束时的状态,读的时候会将数据放到一个地方,保证了一致性
I:隔离性
多个事务同时进行时系统会进行隔离
D:持久性
一旦执行了commit,数据就不能修改
中间状态的数据(即没有提交的数据)叫dirty data.
undo和redo的区别
undo就是撤销的操作
redo就是重新做操作
操作完,一般先把记录写在日志里
做修改后,一般是先在内存中修改,将修改写入日志中,已经执行了cmd1,正在执行cmd2,但是突然出现异常后,cmd2还么完成就被或被执行undo,而在日志中的cmd1,则会被提交到数据库中,这个动作叫做redo