MySQL | 库操作

文章目录

MySQL数据库基础操作详解

数据库是存储和管理数据的核心组件,掌握数据库的基本操作是每个开发者的必备技能。本文以MySQL为例,详细介绍数据库的创建、字符集设置、校验规则、日常维护及备份恢复等操作,帮助读者轻松上手并深入理解MySQL数据库的管理技巧。


一、创建数据库

1.1 基本语法

使用 create database 命令创建数据库,语法如下:

sql 复制代码
create database [if not exists] 数据库名 
    [default character set 字符集名称] 
    [default collate 校对规则名称];
  • 关键字说明
    • if not exists:可选,避免重复创建同名数据库时报错。
    • character set:指定数据库的字符集(如 utf8mb4gbk)。字符集决定数据库支持的语言和符号。
    • collate:指定校对规则(如 utf8mb4_general_ci)。校对规则影响字符串比较和排序的方式。

注意 :MySQL关键字(如 createdatabase)不区分大小写,但建议统一风格。例如,关键字小写,数据库名按需使用大小写(Linux系统下数据库名区分大小写)。

1.2 创建示例

  1. 创建默认字符集的数据库

    sql 复制代码
    create database db1;
    • 若不指定字符集和校对规则,MySQL默认使用 utf8mb4 字符集和 utf8mb4_0900_ai_ci 校对规则(具体版本可能有差异)。
  2. 指定字符集创建数据库

    sql 复制代码
    create database db2 character set=utf8mb4;
    • 推荐使用 utf8mb4 而非 utf8,因为 utf8mb4 支持更多字符(如Emoji表情)。
  3. 同时指定字符集和校对规则

    sql 复制代码
    create database db3 
        character set=utf8mb4 
        collate utf8mb4_general_ci;

二、字符集与校对规则

2.1 查看系统默认配置

  • 查看默认字符集

    sql 复制代码
    show variables like 'character_set_database';
  • 查看默认校对规则

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

2.2 查看支持的字符集与校对规则

  • 查看所有支持的字符集

    sql 复制代码
    show charset;

    输出示例:

    复制代码
    +----------+---------------------------------+
    | Charset  | Description                     |
    +----------+---------------------------------+
    | utf8mb4  | UTF-8 Unicode                   |
    | latin1   | cp1252 West European            |
    +----------+---------------------------------+
  • 查看所有支持的校对规则

    sql 复制代码
    show collation;

    输出示例:

    复制代码
    +----------------------+----------+-----+
    | Collation            | Charset  | Id  |
    +----------------------+----------+-----+
    | utf8mb4_general_ci   | utf8mb4  | 45  |
    | utf8mb4_bin          | utf8mb4  | 46  |
    +----------------------+----------+-----+

2.3 校对规则的实际影响

示例1:不区分大小写(utf8mb4_general_ci
sql 复制代码
create database test1 collate utf8mb4_general_ci;
use test1;
create table person(name varchar(20));
insert into person values ('a'), ('A'), ('b'), ('B');

查询结果

sql 复制代码
select * from person where name='a';
-- 返回 'a' 和 'A'

说明utf8mb4_general_ci 校对规则忽略大小写,aA 视为相同。

示例2:区分大小写(utf8mb4_bin
sql 复制代码
create database test2 collate utf8mb4_bin;
use test2;
create table person(name varchar(20));
insert into person values ('a'), ('A'), ('b'), ('B');

查询结果

sql 复制代码
select * from person where name='a';
-- 仅返回 'a'

说明utf8mb4_bin 校对规则按二进制比较,区分大小写。

排序对比
  • 不区分大小写排序

    sql 复制代码
    select * from person order by name;
    -- 结果:a, A, b, B(按字母顺序,不区分大小写)
  • 区分大小写排序

    sql 复制代码
    select * from person order by name;
    -- 结果:A, B, a, b(大写字母优先)

三、数据库的日常操作

3.1 查看所有数据库 / 查看当前数据库

sql 复制代码
show databases;

输出示例:

复制代码
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test1              |
+--------------------+
mysql 复制代码
select database();

输出示例:

复制代码
+------------+
| database() |
+------------+
| helloworld |
+------------+
1 row in set (0.00 sec)

3.2 显示数据库的创建语句

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

示例:

sql 复制代码
show create database mytest;

输出:

复制代码
+----------+--------------------------------------------------------+
| Database | Create Database                                        |
+----------+--------------------------------------------------------+
| mytest   | CREATE DATABASE `mytest` DEFAULT CHARSET=utf8mb4       |
+----------+--------------------------------------------------------+

注意 :反引号 ````` 用于包裹数据库名,避免与关键字冲突(如使用 database 作为库名)。

3.3 修改数据库

修改字符集或校对规则:

sql 复制代码
alter database 数据库名 
    character set=新字符集 
    collate=新校对规则;

示例:

sql 复制代码
alter database mytest character set=gbk collate gbk_chinese_ci;

注意:修改字符集不会自动转换已有数据,需手动调整表结构。

3.4 删除数据库

sql 复制代码
drop database  数据库名;

风险提示

  • 删除操作会永久删除数据库及其所有表和数据。
  • 生产环境中建议先备份再执行删除!

四、备份与恢复

4.1 备份数据库

使用 mysqldump 工具进行备份:

bash 复制代码
# 备份整个数据库(包含创建语句)
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命令行中执行:

sql 复制代码
source D:/mytest.sql;

分步恢复(无 -B 参数时)

sql 复制代码
create database mytest;  -- 1. 创建空数据库
use mytest;              -- 2. 切换到该数据库
source D:/mytest.sql;    -- 3. 执行备份文件

五、查看数据库连接

监控当前连接状态:

sql 复制代码
show processlist;

输出示例:

复制代码
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host      | db   | Command | Time | State | Info             |
+----+------+-----------+------+---------+------+-------+------------------+
| 5  | root | localhost | test | Query   | 0    | NULL  | show processlist |
+----+------+-----------+------+---------+------+-------+------------------+

应用场景

  • 发现异常连接(如未知IP的登录)。
  • 分析性能问题(长时间运行的查询)。
相关推荐
程序员阿鹏26 分钟前
如何实现MySQL分库分表?
数据结构·数据库·sql·mysql·缓存
风哥2号44 分钟前
数据库教程FGMT33‑MySQL主从复制项目实施与维护06(MySQL8.4/9.7 MGR组复制)
数据库·mysql
liangsheng_g1 小时前
Spring事务传播行为分派与挂起恢复源码实战
数据库·sql·spring
蓝速科技1 小时前
信创终端 POC 测试实战与选型避坑指南丨蓝速科技
运维·数据库·人工智能·科技·自然语言处理
风哥2号1 小时前
数据库教程FGMT29‑Linux平台MySQL5.7安装配置与管理入门
数据库
杨云龙UP2 小时前
MySQL Host is blocked because of many connection errors 导致 JDBC 连接失败排查与解决
linux·运维·网络·数据库·sql·mysql·登录失败
这个DBA有点耶3 小时前
数据库数据同步解决方案怎么选?6款主流工具横向对比与信创选型指南
数据库·架构·dba
刃神太酷啦4 小时前
Redis 核心进阶:哨兵、集群、缓存问题与分布式锁详解----《Hello Redis!》(6)
linux·c语言·数据库·c++·redis·分布式·缓存
小雷信息医学4 小时前
不会写复杂代码也能发 SCI?手把手教你用 InSpireR 交互系统一键提取、合并与导出临床科研宽表【第三章】
数据库
程序员梅雨4 小时前
MySQL底层探索(一):什么是脏页?什么是冷热分离?
mysql·面试