目录
- 1 MySQL基础
- 一种存储解决方案
- SQL分类
- 查看MySQL存储引擎
- 2 MySQL 库的操作
- 数据库基本增删
- 认识系统编码
- 校验规则对数据库的影响
- 数据库的查看与删除
- 修改数据库
- 数据库的备份与恢复
- 查看连接情况
1 MySQL基础
一种存储解决方案
mysql本质是一种网络服务
mysql – 数据库服务的客户端
mysqld – 数据库服务的服务器端
mysql本质:基于C(mysql)S(mysqld)模式的一种网络服务
- mysql是一套给我们提供数据存取的服务的网络程序
- 数据库一般指的是,在磁盘或者内存中存储的特定结构组织的数据 – 将来在磁盘上存储的一套数据库方案
- 数据库服务 – mysqld
为什么不直接用文件?
一般的文件确实提供了数据的存储能力,但并没有提供很好的数据管理能力(用户(程序员)角度)
因此:数据库本质->对数据内容存储的一套解决方案,用户给数据库字段或者要求,数据库直接给结果就行
- 建立数据库,本质就是Linux下的一个目录
- 在数据库内建立表,本质就是在Linux下创建对应的文件即可!
- 在表中插入数据并查询
以上工作,本质是mysqld做的。
数据本质也是文件,只不过这些文件并不由程序员直接操作,而是由数据库服务帮我们进行操作。
MySQL Server由以下三层构成:
- 连接池(Connection Pool):负责处理客户端与服务器之间的连接。它接收来自客户端的请求,并将其传递给下一层进行处理。
- 查询层(Query Layer):负责解析和执行SQL查询。它将查询发送到存储引擎,并将结果返回给连接层。
- 存储引擎层(Storage Engine Layer):负责数据的存储和检索。它处理存储和读取数据的底层操作,可以根据需要选择不同的存储引擎,如InnoDB、MyISAM等。存储引擎层将数据存储在磁盘上,并提供对数据的访问和修改功能。
SQL分类
- DDL 数据定义语言,用来维护存储数据的结构,代表指令:create,drop,alter
- DML 数据操纵语言,用来对数据进行操作,代表指令:insert,delete,update
- DML中又单独分了一个DQL,数据查询语言,代表指令:select
- DCL 数据控制语言,主要负责权限管理和事务,代表指令:grant,revoke,commit
查看MySQL存储引擎
存储引擎:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询等技术的实现方法
MySQL的核心就是插件式存储引擎,支持多种存储引擎。
通过show engines查看存储引擎:
mysql最常用的两个存储引擎:
- InnoDB
- MyISAM
2 MySQL 库的操作
数据库基本增删
-
创建数据库:
create database [if not exists] db_name;
-
删除数据库:
drop database db_name;
创建数据库时的编码问题
创建数据库时,有两个编码集:
- 数据库编码集 – 数据库未来存储数据采用的编码
- 数据库校验集 – 对数据库内数据进行查找匹配是的校验规则,支持数据库进程字段比较使用的编码,本质也是一种读取数据库中数据的采用的编码格式
存数据和取数据时,编码集必须是统一的。
数据库无论对数据做任何操作,都必须保证操作和编码必须是编码一致的。
认识系统编码
查看系统编码集和校验集
- 查看系统默认支持的字符集(编码集)
-
查看系统默认的校验集
-
查看数据库支持的所有字符集,字符集主要是控制用什么语言,比如utf8就可以使用英文
-
查看数据库支持的字符集校验规则
-
创建一个使用utf-8字符集,校对规则为utf8_general_ci的db2数据库
校验规则对数据库的影响
- 创建一个数据库,校验规则使用utf8_ general_ ci[不区分大小写]
- 创建一个数据库,校验规则使用utf8_ bin[区分大小写]
数据库的查看与删除
修改数据库
修改数据库字符集以及校验集: alter
显示创建语句:show create database 数据库名
对数据库的修改主要是修改数据库的字符集,校验规则
数据库的备份与恢复
-
备份
-
查看备份文件(本质是把从创建该数据到备份时的命令进行备份)
-
删除后恢复
另外:
-
如果备份的不是整个数据库,而是其中一张表
# mysqldump -u root -p 数据库名 表名1 表名2 > db.sql
-
同时备份多个数据库
# mysqldump -u root -p -B 数据库名1 数据库名2 > db.sql
-
如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。
查看连接情况
show processlist
可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。