目录
概念理解
mysql
狭义
广义
CS模式
mysqld
守护进程 (daemon)
数据库服务
数据库
一般
广义上
数据库
为什么要有数据库
主流数据库
mysql架构
第一层 -- 链接池
第二层 -- 翻译
第三层 -- 存储引擎
存储引擎介绍
总结
sql语句分类
DDL(data definition language)
DML(data manipulation language)
DQL(data query language)
DCL(Data Control Language)
查看存储引擎
show engines
\G
常用的存储引擎
概念理解
mysql
狭义
数据库服务的客户端
广义
基于CS模式的一种网络服务,用于给用户提供数据存取服务
CS模式
C是指Client,S是指Server
CS模式就是指客户端/服务器模式
mysqld
- 数据库服务的服务器端,也就是它会作为数据库网络服务的后台
- "d"用于指明它是守护进程
守护进程 (daemon)
- 是一种在后台执行,而不由用户直接交互控制的电脑程序
- 守护进程程序的名称通常以字母d结尾,以指明这个进程实际是守护进程,并与普通的电脑程序区分开来
数据库服务
指的是mysqld
数据库
一般
- 在磁盘 / 内存中存储的特定结构组织的数据
- 也就是 -- 在磁盘上存储的一套数据库方案(也就是数据库文件)
广义上
指的是下面这一整套服务:
- mysql客户端接收到指令后,发送给mysqld后台,后台经过分析,去访问磁盘上的结构
- 从磁盘拿到数据,返回给后台,mysqld后台又经过处理,返回给mysql客户端
数据库
为什么要有数据库
- 数据库是用来存放数据的,但是,文件不是也可以吗,为什么还要设计出数据库呢?
- 那自然是因为数据库能实现文件不具有的功能
- 文件只提供了基础管理功能 -- 虽然我们可以查找到文件属性和内容,但是,对于内容的管理必须由程序员自己做
- 比如,在一堆数据中查找到自己需要的内容,数据量越大,查找的过程就越困难
- 以下是文件的一些缺点:
- 所以,数据库就是对这块功能打的补丁,它是对数据内容存储的一套解决方案,可以提供对内容的管理能力
主流数据库
- SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目
- Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL
- MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务,主要用在电 商,SNS,论坛。对简单的SQL处理效果好
- PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发
- SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了
- H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中
不同的数据库,适用于不同的使用场景,其中,mysql的使用最为广泛
mysql架构
第一层 -- 链接池
完成链接管理,认证权限,安全处理等工作
第二层 -- 翻译
- 将收到的mysql语句进行词法/语法分析
- 对某些语句进行优化
- 然后根据协议,将语句传达给下一层
- (和编译期间所做的工作类似)
第三层 -- 存储引擎
- 它将收到的sql语句进行解释,然后去访问实际的结构/文件系统
- (实际干事的,类似于计算机中的驱动)
存储引擎介绍
是数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法 注意看这里的插头: 指的是存储引擎支持插件式使用 -- MySQL 的核心就是插件式存储引擎,支持多种存储引擎 不同的存储引擎,适用于不同类型的数据/不同的场景
总结
- 所以,总结来看,数据库其实是个文件系统,它可以对数据进行管理
- 只不过,它是一个[在系统层面之上]的用户级文件系统
sql语句分类
DDL(data definition language)
- 数据定义语言,用来维护存储数据的结构
- 代表指令: create, drop, alter
DML(data manipulation language)
- 数据操纵语言,用来对数据进行操作
- 代表指令: insert,delete,update
DQL(data query language)
- 数据查询语言
- 代表指令: select
DCL(Data Control Language)
- 数据控制语言,主要负责权限管理和事务
- 代表指令: grant,revoke,commit
查看存储引擎
show engines
\G
加上\G选项后,可以格式化显示
(注意,这里的结尾不需要加;)
常用的存储引擎
经过各种功能是否支持的对比,下面两种存储引擎是最常用的:
- innodb
- myisam