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