一、什么是数据库
数据库自行选择了合适的数据结构来组织数据,方便用户写入 (存储介质 ,如硬盘,机器断电不会丢失数据)和查询数据。在数据结构部分,我们讲到的 ArrayList、HashMap 集合类对象 也能存储数据,不同的是数据存储在内存中,机器断电就会丢失数据。
二、主流数据库
1、关系型数据库
- Oracle:甲骨文旗下,功能最强的数据库,但是收费,很多大公司用。
- MySQL:开源免费,很多中小型公司用,像阿里巴巴这种大公司使用的是根据自己的业务需求魔改后的 MySQL。一开始 SUM(也就是 Java)收购了MySQL,后面 Oracle 收购了 SUM,所以现在 MySQL 也是在甲骨文旗下的。
- SQL Sever:微软旗下,很多学校教学用。
- SQLite:轻量型数据库,常在嵌入式设备、手机APP、桌面应用等中使用。
2、非关系型数据库
- Redis:基于键值对的数据库,常用作缓存。
- MongoDB:文档型数据库。
3、什么是关系型数据库
就是采用关系模型(二维表)组织数据 ,一个关系型数据库就是由二维表之间的关系组成的数据组织。
为什么要使用多个关系模型,并建立它们之间的关系?直接用一张表存储所有数据行不好吗?比如下面有两张表:

想改名尖子1班为清北班,那么只需要更改班级表中的第一栏。
和为一张表后:

想改名尖子1班为清北班,就需要更改所有是尖子1班的学生信息。显然,这种更改效率极低。
三、数据库服务器、数据库、表之间的关系

四、客户端与服务器的通讯方式
1、C/S(客户端/服务器)
为固定用户群体提供服务,如 QQ、微信等。

2、B/S(浏览器/服务器)
为公开用户提供服务,如各大网站:

五、SQL 简介
SQL 就是结构化查询语言 的简称,用于存取、查询、更新、数据,管理数据库。
SQL 分类:
- DDL:数据定义语言,数据库级别。与开发强相关。
- DML:数据操纵语言,数据行级别。与开发强相关。
- DCL:数据控制语言,管理权限和事务。数据库管理员负责。
六、MySQL 架构

- 外部程序:不同类型的客户端程序,如命令行工具、应用程序。
- 连接层:允许不同的客户端通过协议连接 MySQL 服务器。进行身份验证,有授权的才能连接;并处理并发连接。
- 服务层:SQL 解析器,将 SQL 语句解析为指令;查询优化器选择最优查询路线,提高查询效率;管理查询缓存,常访问的数据存入缓存,提高访问效率。
- 存储引擎层:不同的存储引擎使用了不同的数据结构,具有不同的特点,适用不同的场景。MySQL 5.5 及以后版本默认 InnoDB,它支持事务。
- 文件系统层:存储数据文件。
查询服务器支持哪些存储引擎,SHOW ENGINES:
