数据库中对库的操作


MySQL入门指南:数据库的创建、管理与字符集详解

在MySQL的学习中,对数据库(Database)本身的操作是第一步,也是最基础且关键的一步。本文将系统性地介绍如何创建、查看、修改、删除数据库,并深入讲解字符集与校验规则的影响。

一、创建数据库

创建数据库的基础语法如下:

复制代码
CREATE DATABASE [IF NOT EXISTS] db_name [character_options];

关键字说明:

  • CREATE DATABASE: 核心命令。

  • IF NOT EXISTS: 可选项。如果指定,当数据库已存在时不会报错,只会产生一个警告。这是一个良好的习惯,可以避免脚本因重复创建而中断。

  • character_options: 用于指定数据库的字符集和校验规则。

创建实例:

  1. 创建最简单的数据库

    系统会使用默认的字符集(通常为utf8)和校验规则(通常为utf8_general_ci)。

    复制代码
    CREATE DATABASE db1;
  2. 创建指定字符集的数据库

    复制代码
    CREATE DATABASE db2 CHARACTER SET utf8;
    -- 或简写为
    CREATE DATABASE db2 CHARSET=utf8;
  3. 创建指定字符集和校验规则的数据库

    复制代码
    CREATE DATABASE db3 CHARSET=utf8 COLLATE utf8_general_ci;
二、字符集与校验规则:为什么它们很重要?

字符集(Character Set)决定了数据库能存储哪些字符(如中文、英文);校验规则(Collation)则决定了字符比较和排序的规则,其核心影响在于是否区分大小写

1. 查看相关设置

  • 查看系统默认字符集和校验规则:

    复制代码
    SHOW VARIABLES LIKE 'character_set_database';
    SHOW VARIABLES LIKE 'collation_database';
  • 查看MySQL支持的所有字符集:

    复制代码
    SHOW CHARSET;
  • 查看MySQL支持的所有校验规则:

    复制代码
    SHOW COLLATION;

2. 校验规则的实际影响

让我们通过一个实验来直观感受校验规则的重要性。

  • 场景一:不区分大小写(utf8_general_ci)

    复制代码
    -- 创建数据库和表
    CREATE DATABASE test1 COLLATE utf8_general_ci;
    USE test1;
    CREATE TABLE person (name VARCHAR(20));
    
    -- 插入数据
    INSERT INTO person VALUES ('a'), ('A'), ('b'), ('B');
    
    -- 查询 name='a'
    SELECT * FROM person WHERE name='a';

    查询结果 :会返回两条记录 aA。因为 utf8_general_ci规则认为 aA是等价的。

  • 场景二:区分大小写(utf8_bin)

    复制代码
    -- 创建数据库和表
    CREATE DATABASE test2 COLLATE utf8_bin;
    USE test2;
    CREATE TABLE person (name VARCHAR(20));
    
    -- 插入相同数据
    INSERT INTO person VALUES ('a'), ('A'), ('b'), ('B');
    
    -- 查询 name='a'
    SELECT * FROM person WHERE name='a';

    查询结果 :只会返回一条记录 a。因为 utf8_bin规则通过二进制值来比较,严格区分大小写。

  • 对排序的影响

    分别在不同的数据库中对 name字段进行排序:

    复制代码
    -- 在 test1 (不区分大小写) 中排序
    USE test1;
    SELECT * FROM person ORDER BY name;
    -- 结果可能为:a, A, b, B (同类字母大小写顺序可能不稳定)
    
    -- 在 test2 (区分大小写) 中排序
    USE test2;
    SELECT * FROM person ORDER BY name;
    -- 结果会严格按照ASCII码排序:A, B, a, b

结论 :在创建数据库时,根据业务需求选择合适的字符集和校验规则至关重要。例如,如果要求用户名唯一且不区分大小写(如 'Alice' 和 'alice' 被视为同一用户),就应使用 ci(Case Insensitive) 规则的校验规则。

三、数据库的日常管理操作

1. 查看数据库

列出当前MySQL服务器中的所有数据库。

复制代码
SHOW DATABASES;

2. 显示数据库的创建语句

用于查看创建某个数据库时的完整SQL语句,非常实用。

复制代码
SHOW CREATE DATABASE mytest;

3. 修改数据库

修改操作主要是针对数据库的字符集和校验规则。

复制代码
ALTER DATABASE mytest CHARSET=gbk COLLATE gbk_chinese_ci;

4. 删除数据库(谨慎操作!)

删除数据库会同时删除数据库内的所有表和数据,且不可恢复,请务必谨慎!

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

强烈建议始终使用 IF EXISTS,以防止删除不存在的数据库时出现错误。

四、数据库的备份与恢复

1. 备份(Backup)

使用 mysqldump工具在命令行(非MySQL客户端)进行备份。-B选项表示备份整个数据库。

复制代码
# 语法
mysqldump -P端口 -u用户名 -p密码 -B 数据库名 > 备份文件路径.sql

# 示例:将mytest数据库备份到D盘
mysqldump -P3306 -uroot -p123456 -B mytest > D:/mytest.sql
  • 备份单张表mysqldump -u root -p 数据库名 表名1 表名2 > 路径.sql

  • 备份多个数据库mysqldump -u root -p -B 数据库名1 数据库名2 > 路径.sql

2. 恢复(Restore)

在MySQL客户端中,使用 source命令执行备份的SQL文件。

复制代码
-- 首先需要连接到MySQL
mysql -uroot -p

-- 然后执行恢复(如果备份时用了-B,会自动创建数据库)
SOURCE D:/mytest.sql;
五、查看连接情况

当发现数据库响应缓慢时,可以查看当前有哪些用户或程序连接到了数据库。

复制代码
SHOW PROCESSLIST;

这个命令可以帮助你排查异常连接,是数据库安全性和性能调优的一个基础工具。

总结

掌握对数据库本身的操作是管理MySQL的基石。从创建时考虑字符集,到日常的维护、备份,每一步都关系到数据的完整性和安全性。理解校验规则对查询和排序的深层影响,更能让你在开发中避免很多隐蔽的坑。

相关推荐
2603_965148115 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
ltl5 小时前
RocksDB 经典故障排查:L0、compaction 与 write stall
数据库
xfhuangfu6 小时前
Oracle中建立到CDB和PDB的连接
数据库·oracle·rpc
小小龙学IT6 小时前
DuckDB 深度实战:用 C++ 在进程内跑一个「分析型数据库」
数据库·c++
NineData7 小时前
DTCC 2026 预告|NineData CEO& 创始人叶正盛:面向 AI Agent 的数据库 DevOps 与数据复制实践
数据库·人工智能·数据库开发·devops·ninedata·数据库技术·dtcc
J_bean7 小时前
MySQL 事务是否必须手动开启?
数据库·mysql·数据库事务·自动提交·手动提交
J_bean7 小时前
MySQL InnoDB 如何检测死锁、判定死锁、处理死锁
数据库·mysql·死锁·死锁检测·处理死锁·死锁判定
浪子明X8 小时前
从 MongoDB 文档到关系模型:构建可重跑、可对账的数据迁移流水线
数据库·mongodb·oracle
杜子不疼.8 小时前
国产数据库撑起固井软件自主化:金仓 × 中海油服「海恒 Cemsol」落地解析
数据库
隔窗听雨眠8 小时前
GBase 8s并发控制深度解析:封锁机制、隔离级别与死锁处理全攻略
服务器·数据库·oracle