1. 数据库基础
1.1 什么是数据库 ⭐
mysql 本质是一种网络服务, 是基于 C(mysql) S(mysqld)的 网络服务.
存储数据用文件就可以了,为什么还要弄个数据库?文件保存数据存在以下缺点:
- 文件的安全性问题。
- 文件不利于数据查询和管理。
- 文件不利于存储海量数据。
- 文件在程序中控制不方便。
数据库存储介质有 磁盘和 内存。
为解决上述问题,专家们设计出数据库,它能更有效地管理数据,数据库的掌握水平是衡量程序员水平的重要指标。
1.2 主流数据库
- SQL Sever:微软的产品,深受.Net程序员喜爱,适用于中大型项目。
- Oracle:甲骨文产品,适合大型项目和复杂业务逻辑,但并发性能一般不如MySQL。
- MySQL:世界上最受欢迎的数据库,属于甲骨文。其并发性好,不太适合复杂业务,主要用于电商、SNS、论坛等场景,对简单SQL处理效果良好。
- PostgreSQL:由加州大学伯克利分校计算机系开发的关系型数据库,可免费用于私用、商用和学术研究,能自由修改和分发。
- SQLite:一款轻型的关系型数据库管理系统,遵守ACID,包含在一个相对小的C库中。设计目标是嵌入式,在很多嵌入式产品中广泛使用,占用资源极低,在嵌入式设备中可能仅需几百K内存。
- H2:用Java开发的嵌入式数据库,本身是一个类库,可直接嵌入应用项目。
1.3.1 MySQL安装
- Centos 6.5下编译安装MySQL 5.6.14。
- CentOS 7通过yum安装MariaDB。
- Windows下安装MySQL5.7。
1.3.2 连接服务器
输入: mysql -h 127.0.0.1 -P 3306 -u root -p
输出:
Enter password: **** Commands end with;or \g. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.21-log MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
注意:
- 如果未写-h 127.0.0.1,默认连接本地。
- 如果未写-P 3306,默认连接3306端口号(在.conf 默认配置里)。
1.3.3 服务器管理
执行 win + r,输入 services.msc打开服务管理器,通过服务管理器左侧的停止、暂停、重启动按钮进行服务管理。
1.3.4 服务器、数据库、表关系 ⭐
安装数据库服务器,实际上是在机器上安装了一个数据库管理系统程序,该程序可管理多个数据库。一般开发人员会 针对每个应用创建一个数据库。为保存应用中实体的数据,通常会在数据库中创建多个表。数据库服务器、数据库和表的关系为: 数据库服务器管理多个数据库,每个数据库包含多个表 。

1.4 MySQL架构 ⭐
MySQL是一个 可移植 的数据库,几乎能在当前所有的操作系统上运行,如Unix/Linux、Windows、Mac和Solaris。虽然各种系统在底层实现方面有所不同,但 MySQL基本能保证在各个平台上的物理体系结构的一致性。

MySQL架构主要分为以下几层:
- 连接层:负责管理客户端连接,支持多种连接协议。进行用户身份验证和权限管理,决定用户能对数据库进行哪些操作。还管理连接池,提高连接复用,减少资源消耗,以应对高并发请求。
- 服务层:对SQL语句进行解析,检查语法和语义是否正确。优化SQL执行计划,选择最优执行方式,提高查询效率。执行SQL语句,调用存储引擎接口来操作数据。同时,还提供查询缓存功能,缓存查询结果,减少重复查询的开销。
- 存储引擎层:负责数据的存储和读取。MySQL有多种存储引擎,如InnoDB、MyISAM等,各有特点和适用场景,用户可根据需求选择,不同存储引擎通过统一接口与服务层交互。
- 文件系统层:包含日志文件,用于记录数据库运行中的错误、慢查询等信息,方便排查问题和优化性能。还包含数据文件,用于存储数据库的实际数据。
这么多存储引擎? 适应各种类型的数据/文件. MyISAM: 大文本读取InnoDB: 索引支持...系统视角: 上层是用户层, 而下面是OS kernel 系统网络视角: 上层是应用层, 下面是内核层
1.5 SQL分类 ⭐
- DDL(Data Definition Language)数据定义语言(结构):用来维护存储数据的结构,代表指令有create、drop、alter。
- DML(Data Manipulation Language)数据操纵语言(内容):用来对数据进行操作,代表指令有insert、delete、update。DML中又单独分出一个DQL(数据查询语言),代表指令是select。
- DCL(Data Control Language)数据控制语言(权限):主要负责权限管理和事务,代表指令有grant、revoke、commit。
1.6 存储引擎
1.6.1 存储引擎
存储引擎是数据库管理系统存储数据、为存储的数据建立索引以及更新、查询数据等技术的实现方法。
MySQL的核心是 插件式存储引擎,支持多种存储引擎。
1.6.2 查看存储引擎
show engines;

1.6.3 存储引擎对比(拓展)
