数据结构模型:层次模型、网状结构、关系模型
关系模型:
将数据组织成二维关系:row,column
数据库管理系统:DBMS
关系型数据库管理系统:Relational,RDBMS
RDBSM: MySQL:MySQL,MariaDB,Percona-Server PostgreSQL:简称为pgsql --> EnterpriseDB Oracle: MSSQL:
事务:多个操作被当做一个整体对待
web服务器只是用来写数据库的,通常只有数据库会有读写,而数据库要支持并发的话,中间就会有读写事务的产生,而且为了保证并发过程中不会出错,因此就引入了锁和事务。
任何一个数据库引擎如果是支持事务的,就必须满足ACID测试。
ACID:
A:原子性
C:一致性
I:隔离性
D:持久性
SQL:Structure Query Language,结构化查询语言
用户如何与数据库服务器进行交互?
一般来说,每一种关系型数据库会把自己作为一个服务器运行,将自己提供的各种数据管理功能,通过监听的套接字接口上运行的应用层协议来实现,这个应用层协议叫数据存储协议, 它是应用层协议,通常是C/S架构的协议,服务器端需要监听在一个套接字上,能够接收客户端发来的请求,这个请求一定是应用层协议双方能够互相交换的报文, 客户端是请求报文,那么服务器端就应该是响应报文。 对于oracle来说就是oracle协议,对于mariadb或mysql就是mysql协议,对于SQLSERVER就是mssql协议,每一款软件的设计方要自己设计协议的。
数据存储协议:应用层协议,C/S
S:server,监听于套接字,接受并处理客户端的应用请求
C:client
Client端有两种形式:
程序接口:
CLI:写sql语句
GUI:写sql语句,不过是将sql语句封装在函数调用中
应用编程接口:它是一个库
ODBC:Open DataBase Connection,开放数据库系统互连,这是一个很底层的接口,无论哪个厂商生产的关系型数据库系统都支持ODBC,可以连mysql,也可以连oracle
基础概念:
设计范式:
第一范式:字段是原子性的
第二范式:存在可用主键
第三范式:任何表都不应该有依赖于其他表的非主键的字段
约束:constraint,向数据表提供的数据要遵守的限制
约束有几种常见的类型:
主键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行:必须填入数据,即NOT NULL;
一个表只能存在一个
唯一键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行:允许为NULL;
一个表可以存在多个
外键:一个表中的某字段可填入数据取决于另一个表的主键已有的数据
检查性:可以定义一个表达式来约束字段的值,mysql目前不支持
索引:将表中的一个或多个字段中的数据复制一份另存,并且这些数据需要按特定次序排序存储;
关系运算:如何将两张表连接起来,或者一张表中抽取数据子集
关系运算主要有两种:
选择:挑选出符合条件的行(部分);
投影:挑选出需要的字段;
连接:
数据抽象
从不同角度来看,数据展现给我们的形式是不一样的,数据库中我们看到的数据是表,而表存到文件中是数据流。
三种表现形式:
物理层(物理视图):决定数据的存储格式,即RDBMS在磁盘上如何组织文件;
逻辑层:描述DB数据库中存储什么数据,以及数据间存在什么样的关系;
视图层:描述DB中的部分数据
关系模型的分类
基本关系模型
实体-关系模型
基于对象的关系模型
半结构化的关系模型:基于xml格式来解析数据
MariaDB:关系型数据库的一种开源实现。
安装MariaDB(MySQL):
源代码:编译安装
二进制格式的程序包:展开至特定路径,并经过简单配置后即可使用
程序包管理管理的程序包:
rpm:
OS Vender
项目官方
deb