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的登录)。
  • 分析性能问题(长时间运行的查询)。
相关推荐
冉冰学姐12 分钟前
SSM在线影评网站平台82ap4(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm框架·在线影评平台·影片分类
Exquisite.1 小时前
企业高性能web服务器(4)
运维·服务器·前端·网络·mysql
知识分享小能手1 小时前
SQL Server 2019入门学习教程,从入门到精通,SQL Server 2019数据库的操作(2)
数据库·学习·sqlserver
踩坑小念2 小时前
秒杀场景下如何处理redis扣除状态不一致问题
数据库·redis·分布式·缓存·秒杀
萧曵 丶3 小时前
MySQL 语句书写顺序与执行顺序对比速记表
数据库·mysql
Wiktok4 小时前
MySQL的常用数据类型
数据库·mysql
曹牧4 小时前
Oracle 表闪回(Flashback Table)
数据库·oracle
J_liaty4 小时前
Redis 超详细入门教程:从零基础到实战精通
数据库·redis·缓存
m0_706653234 小时前
用Python批量处理Excel和CSV文件
jvm·数据库·python
山岚的运维笔记4 小时前
SQL Server笔记 -- 第15章:INSERT INTO
java·数据库·笔记·sql·microsoft·sqlserver