【MySQL】3. MySQL库的操作

目录

  • [1. 创建数据库](#1. 创建数据库)
    • [1.1 创建数据库语法指令](#1.1 创建数据库语法指令)
    • [1.2 创建数据库案例](#1.2 创建数据库案例)
  • [2. 删除数据库](#2. 删除数据库)
  • [3. 字符集和校验规则](#3. 字符集和校验规则)
    • [3.1 查看系统默认字符集以及校验规则](#3.1 查看系统默认字符集以及校验规则)
    • [3.2 查看数据库支持的字符集](#3.2 查看数据库支持的字符集)
    • [3.3 查看数据库支持的字符集校验规则](#3.3 查看数据库支持的字符集校验规则)
    • [3.4 查看某一个数据库的字符集/校验规则](#3.4 查看某一个数据库的字符集/校验规则)
    • [3.5 校验规则对数据库的影响](#3.5 校验规则对数据库的影响)
  • [4. 操纵数据库](#4. 操纵数据库)
    • [4.1 查看数据库](#4.1 查看数据库)
    • [4.2 显示创建语句(同查看数据库字符集/校验规则)](#4.2 显示创建语句(同查看数据库字符集/校验规则))
    • [4.3 修改数据库](#4.3 修改数据库)
    • [4.4 数据库删除](#4.4 数据库删除)
    • [4.5 备份和恢复(放在最后)](#4.5 备份和恢复(放在最后))
      • [4.5.1 备份](#4.5.1 备份)
      • [4.5.2 还原](#4.5.2 还原)
      • [4.5.3 进阶备份场景](#4.5.3 进阶备份场景)
      • [4.5.4 关键注意事项](#4.5.4 关键注意事项)
    • [4.6 查看连接情况](#4.6 查看连接情况)

注意:

  1. MySQL 的 SQL 关键字(如 SELECT、CREATE)不区分大小写,大小写写法均可执行;
  2. 数据库 / 表名的大小写规则受操作系统影响(Linux 区分、Windows 不区分);
  3. 字符串值完全区分大小写,列名建议保持写法一致;

1. 创建数据库

1.1 创建数据库语法指令

语法:

sql 复制代码
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]

create_specification:
    [DEFAULT] CHARACTER SET charset_name
    [DEFAULT] COLLATE collation_name
sql 复制代码
create database [if not exists] db_name [create_specification [, create_specification] ...]

create_specification:
    [default] character set charset_name
    [default] collate collation_name

说明:

  • 大写的表示关键字
  • [] 是可选项
  • CHARACTER SET:指定数据库采用的字符集
  • COLLATE:指定数据库字符集的校验规则

创建数据库的时候,有两个编码集:

  1. 数据库字符集:数据库为来存储数据的格式
  2. 数据库校验集:支持数据库,进行字段比较使用的编码,本质也是一种

数据库无论对数据做任何操作,都必须保证操作和编码必须是编码一致的


1.2 创建数据库案例

  • 创建名为 db1 的数据库

    sql 复制代码
    create database db1;

    说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_general_ci

  • 创建一个使用 utf8 字符集的 db2 数据库

    sql 复制代码
    create database db2 charset=utf8;
  • 创建一个使用 utf8 字符集,并带校对规则的 db3 数据库

    sql 复制代码
    create database db3 charset=utf8 collate utf8_general_ci;

2. 删除数据库

sql 复制代码
drop database db_name
  • 删除名为db1的数据库
sql 复制代码
drop database db1;

3. 字符集和校验规则

3.1 查看系统默认字符集以及校验规则

sql 复制代码
show variables like 'character_set_database';
show variables like 'collation_database';

3.2 查看数据库支持的字符集

sql 复制代码
show charset;

字符集主要是控制用什么语言。比如 utf8 就可以使用中文。

3.3 查看数据库支持的字符集校验规则

sql 复制代码
show collation;

3.4 查看某一个数据库的字符集/校验规则

使用 SHOW CREATE DATABASE 语句,这是官方推荐的方式,能直接看到创建数据库时的完整配置(包括你指定的字符集、校验规则)。

语法:

sql 复制代码
SHOW CREATE DATABASE 数据库名;

示例:

假设你创建了这样的数据库:

sql 复制代码
-- 创建时指定字符集utf8mb4、校验规则utf8mb4_unicode_ci
CREATE DATABASE test_db 
DEFAULT CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;

执行查看语句:

sql 复制代码
SHOW CREATE DATABASE test_db;

输出结果(示例):

Database Create Database
test_db CREATE DATABASE test_db /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */

解读

  • DEFAULT CHARACTER SET utf8mb4:你指定的字符集;
  • COLLATE utf8mb4_unicode_ci:你指定的校验规则;
  • 即使是 MySQL 8.0+(无 db.opt 文件),这个语句也能正常返回结果。

3.5 校验规则对数据库的影响

1.不区分大小写的校验规则

创建一个数据库,校验规则使用 utf8_general_ci(不区分大小写):

sql 复制代码
# 创建数据库
create database test1 collate utf8_general_ci;
# 使用数据库
use test1;	
# 建表
create table person(name varchar(20));
# 插入数据
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');

# 查看数据库中的表(要在某一个数据库里面使用)
show tables;
# 查看某一个表结构
desc table_name;
2.区分大小写的校验规则

创建一个数据库,校验规则使用 utf8_bin(区分大小写):

sql 复制代码
create database test2 collate utf8_bin;

use test2;

create table person(name varchar(20));

insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');
3.进行查询

不区分大小写的查询以及结果

sql 复制代码
mysql> use test1;
mysql> select * from person where name='a';
+------+
| name |
+------+
| a    |
| A    |
+------+
2 rows in set (0.01 sec)

区分大小写的查询以及结果

sql 复制代码
mysql> use test2;
mysql> select * from person where name='a';
+------+
| name |
+------+
| a    |
+------+
2 rows in set (0.01 sec)
4.结果排序

不区分大小写排序以及结果:

sql 复制代码
mysql> use test1;
mysql> select * from person order by name;
+------+
| name |
+------+
| a    |
| A    |
| b    |
| B    |
+------+

区分大小写排序以及结果:

sql 复制代码
mysql> use test2;
mysql> select * from person order by name;
+------+
| name |
+------+
| A    |
| B    |
| a    |
| b    |
+------+

4. 操纵数据库

4.1 查看数据库

  1. 查看所有数据库
sql 复制代码
show databases;
  1. 查看自己所在的当前数据库
sql 复制代码
show database();

4.2 显示创建语句(同查看数据库字符集/校验规则)

sql 复制代码
show create database 数据库名;

示例:

sql 复制代码
mysql> show create database mytest;
+----------+--------------------------------------------------------------+
| Database | Create Database                                              |
+----------+--------------------------------------------------------------+
| mysql    | CREATE DATABASE `mytest` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+--------------------------------------------------------------+

说明:

  • MySQL 建议关键字使用大写,但不是必须的。
  • 数据库名字的反引号 ```是为了防止使用的数据库名刚好是关键字。
  • /*!40100 default.... */ 这不是注释,表示当前 MySQL 版本大于 4.01 版本,就执行这句话。

4.3 修改数据库

语法:

sql 复制代码
ALTER DATABASE db_name [alter_specification [, alter_specification]...]

alter_specification:
    [DEFAULT] CHARACTER SET charset_name
    [DEFAULT] COLLATE collation_name

说明:

  • 对数据库的修改主要指的是修改数据库的字符集、校验规则。

实例:mytest 数据库字符集改成 gbk

sql 复制代码
mysql> alter database mytest charset=gbk;
Query OK, 1 row affected (0.00 sec)

mysql> show create database mytest;
+----------+--------------------------------------------------------------+
| Database | Create Database                                              |
+----------+--------------------------------------------------------------+
| mytest   | CREATE DATABASE `mytest` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+--------------------------------------------------------------+

4.4 数据库删除

sql 复制代码
DROP DATABASE [IF EXISTS] db_name;

执行删除之后的结果:

  • 数据库内部看不到对应的数据库。
  • 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删。

注意: 不要随意删除数据库。


4.5 备份和恢复(放在最后)

4.5.1 备份

核心说明mysqldump 是 MySQL 官方提供的备份工具,需在操作系统的命令行终端(而非 MySQL 客户端)执行,适用于所有 MySQL 版本。

基础语法

bash 复制代码
# 完整格式(推荐)
mysqldump -P 端口号 -u 用户名 -p 数据库名 > 备份文件存储路径
# 带-B参数(备份时包含CREATE DATABASE语句,恢复更便捷)
mysqldump -P 端口号 -u 用户名 -p -B 数据库名 > 备份文件存储路径

参数说明

  • -P:指定 MySQL 端口号(注意是大写 P,小写 p 是密码参数);
  • -u:指定连接的 MySQL 用户名;
  • -p:表示需要输入密码(建议不直接写密码,回车后交互式输入更安全);
  • -B:备份时包含CREATE DATABASEUSE语句,恢复时无需手动创建 / 切换数据库。

示例 :将 mytest 库备份到 D 盘根目录(安全写法)

bash 复制代码
# 执行后会提示输入密码,回车后输入123456即可
mysqldump -P3306 -u root -p -B mytest > D:/mytest.sql

备份文件内容mytest.sql 会包含创建数据库、建表、插入数据的完整 SQL 语句,本质是纯文本的 SQL 脚本。

4.5.2 还原

方式 1:MySQL 客户端内执行(推荐)

需先登录 MySQL 客户端,再通过source命令执行备份脚本:

sql 复制代码
-- 登录MySQL
mysql -u root -p
-- 执行还原(路径需写备份文件的绝对路径)
mysql> source D:/mytest.sql;

方式 2:命令行终端执行

无需登录 MySQL 客户端,直接在终端执行:

bash 复制代码
mysql -u root -p < D:/mytest.sql
# 输入密码后自动完成还原

4.5.3 进阶备份场景

  1. 备份单个 / 多张表 (无需-B参数):

    bash 复制代码
    # 备份mytest库中的user表和order表
    mysqldump -P3306 -u root -p mytest user order > D:/mytest_tables.sql
  2. 同时备份多个数据库

    bash 复制代码
    # 备份mytest、test1、test2三个数据库
    mysqldump -P3306 -u root -p -B mytest test1 test2 > D:/multi_db.sql

4.5.4 关键注意事项

  1. -B 参数的核心作用

    • -B:备份文件包含CREATE DATABASE mytestUSE mytest,恢复时直接执行source即可;

    • 不带-B:备份文件仅包含表结构和数据,恢复前需手动创建空数据库并切换:

      sql 复制代码
      -- 无-B参数时的还原步骤
      mysql> CREATE DATABASE IF NOT EXISTS mytest;
      mysql> USE mytest;
      mysql> source D:/mytest.sql;
  2. 安全规范

    • 避免在命令行直接写密码(如-p123456),防止密码泄露;
    • 备份文件建议定期归档,存储路径避免中文 / 空格(防止解析失败)。
  3. 跨版本注意

    • 低版本备份的脚本可在高版本还原,高版本备份的脚本需注意字符集(如 8.0 默认 utf8mb4)兼容问题。

4.6 查看连接情况

语法:

sql 复制代码
show processlist;

示例:

sql 复制代码
mysql> show processlist;
+----+-------+-----------+------+---------+------+-------+------------------+
| Id | User  | Host      | db   | Command | Time | State | Info             |
+----+-------+-----------+------+---------+------+-------+------------------+
| 2  | root  | localhost | test | Sleep   | 1386 |       | NULL             |
| 3  | root  | localhost | NULL | Query   | 0    | NULL  | show processlist |
+----+-------+-----------+------+---------+------+-------+------------------+

可以告诉我们当前有哪些用户连接到我们的 MySQL,如果查出某个用户不是你正常登录的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。

...过云雨-CSDN博客

相关推荐
wregjru1 小时前
【操作系统】12.Linux 多线程同步与互斥详解
数据库·mysql
小李独爱秋2 小时前
模拟面试:简述一下MySQL数据库的备份方式。
数据库·mysql·面试·职场和发展·数据备份
難釋懷2 小时前
Redis消息队列-基于Stream的消息队列-消费者组
数据库·redis·缓存
四七伵2 小时前
数据库必修课:MySQL金额字段用decimal还是bigint?
数据库·后端
diaya3 小时前
麒麟V10 x86系统安装mysql
数据库·mysql
LaughingZhu3 小时前
Product Hunt 每日热榜 | 2026-02-24
大数据·数据库·人工智能·经验分享·搜索引擎
QEasyCloud20224 小时前
WooCommerce 独立站系统集成技术方案
java·前端·数据库
数据知道4 小时前
MongoDB 数组查询专项:`$all`、`$elemMatch` 与精确匹配数组的使用场景
数据库·mongodb
柒.梧.5 小时前
Java位运算详解:原理、用法及实战场景(面试重点)
开发语言·数据库·python