DBA MySQL库相关操作
系统内置库
MySQL
在初始化命令--initialize
执行完成之后会自动创建一些系统库,不同的系统库有不同的用途。
内置库名 | 描述 |
---|---|
information_schema | 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等 |
mysql | 授权库,主要存储系统用户的权限信息 |
performance_schema | mysql5.5后开始新增的一个数据库,主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象 |
sys | mysql5.7后开始新增的一个数据库,主要存储存储过程、视图、函数等 |
test | mysql数据库系统自动创建的测试数据库(看下载的是不是有测试套件的版本) |
由于我没有下载测试版本,所以只能看见4个库:
M > SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
创建数据库
语法介绍:
CREATE DATABASE 数据库名 CHARSET 字符集 COLLATE 校对规则;
示例演示:
M > CREATE DATABASE db1 CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
建库规范:
- 库名使用小写字符
- 库名不能以数字开头
- 不能是数据库内部的关键字
- 必须设置字符集
进入数据库
使用以下命令格式可进入某个数据库:
USE 数据库名;
示例演示:
M > USE db1;
M > SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| db1 |
+------------+
查看数据库
三个基本的命令,格式及描述信息如下:
# 查看所有数据库
SHOW DATABASES;
# 查看当前所在的数据库
SELECT DATABASE();
# 查看某一数据库的创建信息
SHOW CREATE DATABASE [数据库名];
命令演示,查看所有数据库:
M > SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db1 |
| mysql |
| performance_schema |
| sys |
+--------------------+
命令演示,查看当前所在的数据库:
M > SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| db1 |
+------------+
命令演示,查看db1
数据库的创建信息:
M > SHOW CREATE DATABASE db1;
+----------+-----------------------------------------------------------------+
| Database | Create Database |
+----------+-----------------------------------------------------------------+
| db1 | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
+----------+-----------------------------------------------------------------+
修改数据库
修改数据库一般是指修改字符集与校对规则。
格式及描述信息如下:
# 修改某一数据库的字符集
ALTER DATABASE 数据库名 CHARSET 字符集;
# 修改某一数据库的校对规则
ALTER DATABASE 数据库名 COLLATE 校对规则;
示例演示:
M > ALTER DATABASE db1 CHARSET utf8mb4;
M > ALTER DATABASE db1 COLLATE utf8mb4_general_ci;
删除数据库
删除数据库操作在生产中属于禁用操作。
格式及描述信息如下:
# 删除某个数据库,当不存在时抛出异常
DROP DATABASE 数据库名;
# 删除某个数据库,当该数据库已存在时生效
DROP DATABASE IF EXISTS 数据库名;
示例演示:
M > DROP DATABASE IF EXISTS db2;