文章目录
- MySQL数据库基础操作详解
- 一、创建数据库
- 1.1 基本语法
- 1.2 创建示例
- 二、字符集与校对规则
- 2.1 查看系统默认配置
- 2.2 查看支持的字符集与校对规则
- 2.3 校对规则的实际影响
- 示例1:不区分大小写(`utf8mb4_general_ci`)
- 示例2:区分大小写(`utf8mb4_bin`)
- 排序对比
- 三、数据库的日常操作
- 3.1 查看所有数据库 / 查看当前数据库
- 3.2 显示数据库的创建语句
- 3.3 修改数据库
- 3.4 删除数据库
- 四、备份与恢复
- 4.1 备份数据库
- 4.2 恢复数据库
- 五、查看数据库连接
MySQL数据库基础操作详解
数据库是存储和管理数据的核心组件,掌握数据库的基本操作是每个开发者的必备技能。本文以MySQL为例,详细介绍数据库的创建、字符集设置、校验规则、日常维护及备份恢复等操作,帮助读者轻松上手并深入理解MySQL数据库的管理技巧。
一、创建数据库
1.1 基本语法
使用 create database
命令创建数据库,语法如下:
create database [if not exists] 数据库名 [default character set 字符集名称] [default collate 校对规则名称];
- 关键字说明:
if not exists
:可选,避免重复创建同名数据库时报错。character set
:指定数据库的字符集(如utf8mb4
、gbk
)。字符集决定数据库支持的语言和符号。collate
:指定校对规则(如utf8mb4_general_ci
)。校对规则影响字符串比较和排序的方式。
注意:MySQL关键字(如
create
、database
)不区分大小写,但建议统一风格。例如,关键字小写,数据库名按需使用大小写(Linux系统下数据库名区分大小写)。
1.2 创建示例
-
创建默认字符集的数据库:
create database db1;
- 若不指定字符集和校对规则,MySQL默认使用
utf8mb4
字符集和utf8mb4_0900_ai_ci
校对规则(具体版本可能有差异)。
- 若不指定字符集和校对规则,MySQL默认使用
-
指定字符集创建数据库:
create database db2 character set=utf8mb4;
- 推荐使用
utf8mb4
而非utf8
,因为utf8mb4
支持更多字符(如Emoji表情)。
- 推荐使用
-
同时指定字符集和校对规则:
create database db3 character set=utf8mb4 collate utf8mb4_general_ci;
二、字符集与校对规则
2.1 查看系统默认配置
- 查看默认字符集:
show variables like 'character_set_database';
- 查看默认校对规则:
show variables like 'collation_database';
2.2 查看支持的字符集与校对规则
-
查看所有支持的字符集:
show charset;
输出示例:
+----------+---------------------------------+ | Charset | Description | +----------+---------------------------------+ | utf8mb4 | UTF-8 Unicode | | latin1 | cp1252 West European | +----------+---------------------------------+
-
查看所有支持的校对规则:
show collation;
输出示例:
+----------------------+----------+-----+ | Collation | Charset | Id | +----------------------+----------+-----+ | utf8mb4_general_ci | utf8mb4 | 45 | | utf8mb4_bin | utf8mb4 | 46 | +----------------------+----------+-----+
2.3 校对规则的实际影响
示例1:不区分大小写(utf8mb4_general_ci
)
create database test1 collate utf8mb4_general_ci;
use test1;
create table person(name varchar(20));
insert into person values ('a'), ('A'), ('b'), ('B');
查询结果:
select * from person where name='a';
-- 返回 'a' 和 'A'
说明:
utf8mb4_general_ci
校对规则忽略大小写,a
和A
视为相同。
示例2:区分大小写(utf8mb4_bin
)
create database test2 collate utf8mb4_bin;
use test2;
create table person(name varchar(20));
insert into person values ('a'), ('A'), ('b'), ('B');
查询结果:
select * from person where name='a';
-- 仅返回 'a'
说明:
utf8mb4_bin
校对规则按二进制比较,区分大小写。
排序对比
- 不区分大小写排序:
select * from person order by name; -- 结果:a, A, b, B(按字母顺序,不区分大小写)
- 区分大小写排序:
select * from person order by name; -- 结果:A, B, a, b(大写字母优先)
三、数据库的日常操作
3.1 查看所有数据库 / 查看当前数据库
show databases;
输出示例:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test1 |
+--------------------+
select database();
输出示例:
+------------+
| database() |
+------------+
| helloworld |
+------------+
1 row in set (0.00 sec)
3.2 显示数据库的创建语句
show create database 数据库名;
示例:
show create database mytest;
输出:
+----------+--------------------------------------------------------+
| Database | Create Database |
+----------+--------------------------------------------------------+
| mytest | CREATE DATABASE `mytest` DEFAULT CHARSET=utf8mb4 |
+----------+--------------------------------------------------------+
注意:反引号
`
用于包裹数据库名,避免与关键字冲突(如使用database
作为库名)。
3.3 修改数据库
修改字符集或校对规则:
alter database 数据库名 character set=新字符集 collate=新校对规则;
示例:
alter database mytest character set=gbk collate gbk_chinese_ci;
注意:修改字符集不会自动转换已有数据,需手动调整表结构。
3.4 删除数据库
drop database 数据库名;
风险提示:
- 删除操作会永久删除数据库及其所有表和数据。
- 生产环境中建议先备份再执行删除!
四、备份与恢复
4.1 备份数据库
使用 mysqldump
工具进行备份:
# 备份整个数据库(包含创建语句)
mysqldump -u root -p123456 -B mytest > D:/mytest.sql# 备份单张表
mysqldump -u root -p mytest person > D:/person.sql
参数说明:
-B
:备份整个数据库(包含create database
语句)。- 未使用
-B
时,恢复需手动创建数据库。
4.2 恢复数据库
在MySQL命令行中执行:
source D:/mytest.sql;
分步恢复(无 -B
参数时):
create database mytest; -- 1. 创建空数据库
use mytest; -- 2. 切换到该数据库
source D:/mytest.sql; -- 3. 执行备份文件
五、查看数据库连接
监控当前连接状态:
show processlist;
输出示例:
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+------+---------+------+-------+------------------+
| 5 | root | localhost | test | Query | 0 | NULL | show processlist |
+----+------+-----------+------+---------+------+-------+------------------+
应用场景:
- 发现异常连接(如未知IP的登录)。
- 分析性能问题(长时间运行的查询)。