1.什么是Mysql
MySQL 是一个数据库管理系统 ,简单说就是一个专门存数据、取数据的软件。

mysql本质是基于C(mysql)S(mysqld)模式的一种网络服务;呢么是什么服务呢?其实就是一套给我们提供数据存储的网络程序;
2. 什么是数据库
我们口语中的数据库一般指的其实是在内存或者磁盘中的特定结构组织的数据;将来在磁盘上存储的一套数据库方案;但是存储数据用文件就可以了,为什么还要弄个数据库?
① 文件保存数据有以下几个缺点:
文件的安全性问题
文件不利于数据查询和管理
文件不利于存储海量数据
文件在程序中控制不方便
简单就是文件没能提供很好的数据管理能力;
为了解决上述问题,专家们设计出更加利于管理数据的东西------数据库,它能更有效的管理数据。

② 数据库存储介质:

3.主流数据库有哪些
SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。
Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。(银行)
MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电
商,SNS,论坛。对简单的SQL处理效果好。(最主流)
PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研
究使用,可以免费使用,修改和分发。
SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的
低,在嵌入式设备中,可能只需要几百K的内存就够了。
H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中
4.如何连接服务器

bash
mysql -h 地址 -P 端口 -u 用户名 -p
注意: 如果我们不指定选项-h,就会默认为本机地址,-P 不写默认就是我们配置文件里的内容;

5.使用Mysql建立一个数据库
① 使用命令 create database + 数据库名 =创建好一个数据库

此时我们就成功的从我们的Mysql的客户端向我们的Mysql的服务端下达了一个创建数据库的请求,并成功创建;

进来之后,现在还什么都没有;所以建立数据库本质就是建立Linux下的一个目录;
②建立数据表
因为数据库是一种关系型数据,所以一般得有表结构;

③向表格插入数据、并显示

所以在数据库里面建表本质就是在Linux下创建文件;而我们的以上的命令是由Mysqld实现的;

6.数据库、表、Mysql 之间的关系

7.Mysql架构
7.1数据的逻辑存储结构
列表示属性,行表示内容;

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

第1层:客户端
就是你写SQL的地方,或者你的程序连MySQL用的接口。
第2层:连接管理
负责接收连接、验证用户名密码、管理多个用户同时访问。
第3层:SQL引擎
这一层看懂你的SQL,决定怎么查最快,缓存查过的数据。
第4层:存储引擎
负责真正存取数据,可以换不同引擎,默认用 InnoDB。
第5层:文件系统
数据最终存硬盘的地方,包括实际数据文件和各类日志。
值得注意的是,我们的Mysql的架构是在操作系统之上的,也就是说属于应用层;
一条SQL怎么走
客户端:你通过 Client Connectors 发出命令
连接管理:Connection Pool 验证你的权限
SQL引擎:SQL Interface 看懂SQL,Optimizer 决定用索引查,Caches 看有没有缓存
存储引擎:InnoDB 去硬盘找 id=1 的数据
文件系统:从磁盘 Data 文件读出数据,记入 General Log
8.sql -----Structured Query Language(结构化查询语言)分类
DDL【data definition language】
数据定义语言,用来维护存储数据的结构
代表指令: create, drop, alter
DML【data manipulation language】
数据操纵语言,用来对数据进行操作
代表指令: insert,delete,update
DML中又单独分了一个DQL,数据查询语言,代表指令: select
DCL【Data Control Language】
数据控制语言,主要负责权限管理和事务
代表指令: grant,revoke,commit
9.存储引擎
存储引擎 就是 MySQL 中真正负责存取数据的模块。
-
SQL 引擎负责"怎么查"(指路)
-
存储引擎 负责"怎么取"(走路去拿)

-
事务:事务 就是一组 SQL 语句,要么全部执行成功,要么全部不执行。
