【mysql】1.库的操作

目录

一、创建数据库

[1. 基本创建与查看](#1. 基本创建与查看)

[2. 编码与校验集](#2. 编码与校验集)

[3. 指定字符集创建数据库](#3. 指定字符集创建数据库)

[4. 不同校验集的对比](#4. 不同校验集的对比)

二、其他数据库操作

[1. 切换与查看当前数据库](#1. 切换与查看当前数据库)

[2. 删除数据库](#2. 删除数据库)

[3. 修改数据库字符集](#3. 修改数据库字符集)

[4. 查看数据库的创建信息](#4. 查看数据库的创建信息)

[5. 查看连接状态](#5. 查看连接状态)

三、数据库备份与恢复

[1. 备份数据库](#1. 备份数据库)

[2. 恢复数据库](#2. 恢复数据库)


数据库文件默认存储在 /var/lib/mysql 目录下。可以使用 sudo ls -la 查看该目录下的文件。

一、创建数据库

1. 基本创建与查看

复制代码
-- 创建数据库
CREATE DATABASE database1;

-- 查看所有数据库
SHOW DATABASES;

避免重复创建

复制代码
CREATE DATABASE database1 IF NOT EXISTS;

如果数据库已存在,不会报错,只会显示警告。

注意 :数据库本质上就是文件系统中的目录,在 /var/lib/mysql 下可以看到对应的文件夹。虽然可以通过直接操作文件系统来创建或删除数据库,但严重不建议这样做,可能导致数据不一致。

2. 编码与校验集

数据库有两个重要的编码设置:

  • 编码集(charset):数据库存储数据时使用的编码

  • 校验集(collation):读取数据时用于比较的编码规则

重要:数据库操作时,应保证编码集和校验集相互匹配。

复制代码
-- 查看支持的编码集
SHOW CHARSET;

-- 查看支持的校验集
SHOW COLLATION;

在旧版本 MySQL 中,可以通过 ls -la /var/lib/mysql/数据库名/ 查看数据库的字符集设置(新版本可能不支持)。

3. 指定字符集创建数据库

复制代码
CREATE DATABASE d2 CHARSET=utf8 COLLATE=utf8_general_ci;

4. 不同校验集的对比

创建两个使用不同校验集的数据库:

复制代码
-- test1 使用 utf8_general_ci(不区分大小写)
CREATE DATABASE test1 COLLATE=utf8_general_ci;

-- test2 使用 utf8_bin(区分大小写)
CREATE DATABASE test2 COLLATE=utf8_bin;

在 test1 中操作

复制代码
USE test1;
CREATE TABLE person(name VARCHAR(20));
INSERT INTO person(name) VALUES('A');
INSERT INTO person(name) VALUES('a');
SELECT * FROM person WHERE name = 'a';

结果会同时查出 aA(因为 utf8_general_ci 不区分大小写)。

在 test2 中操作

复制代码
USE test2;
CREATE TABLE person(name VARCHAR(20));
INSERT INTO person(name) VALUES('A');
INSERT INTO person(name) VALUES('a');
SELECT * FROM person WHERE name = 'a';

结果只查出 a(因为 utf8_bin 区分大小写)。

结论:校验集的选择会影响查询结果的匹配规则。

二、其他数据库操作

1. 切换与查看当前数据库

复制代码
-- 切换到指定数据库
USE test2;

-- 查看当前所在的数据库
SELECT DATABASE();

2. 删除数据库

复制代码
DROP DATABASE d1;

3. 修改数据库字符集

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

4. 查看数据库的创建信息

复制代码
SHOW CREATE DATABASE test1;

输出示例:

复制代码
+----------+------------------------------------------------------------------------------------------+
| Database | Create Database                                                                          |
+----------+------------------------------------------------------------------------------------------+
| test1    | CREATE DATABASE `test1` /*!40100 DEFAULT CHARACTER SET utf8mb3 */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+------------------------------------------------------------------------------------------+

说明/*! ... */ 类似于条件编译,表示在指定版本号以上才执行其中的指令。

5. 查看连接状态

复制代码
SHOW PROCESSLIST;

三、数据库备份与恢复

1. 备份数据库

shell 命令行中执行(不是在 MySQL 客户端内):

复制代码
mysqldump -uroot -p -B test1 > /home/xc/code/mysql/2操作/back.sql
  • -B:指定要备份的数据库名

  • >:将备份内容重定向到指定文件

2. 恢复数据库

MySQL 客户端中执行:

复制代码
SOURCE /home/xc/code/mysql/2操作/back.sql;

原理 :数据库备份时存储的是历史操作指令(如 CREATE DATABASECREATE TABLEINSERT 等)。恢复时,就是将这些指令重新执行一遍。

相关推荐
袋鼠云数栈4 小时前
实时湖仓如何真正做到“数据够新”?
大数据·数据库·人工智能·数据治理
ACP广源盛139246256734 小时前
M6/M5 Pro Mac mini 端侧 AI 落地@ACP#YLB3116 中端多盘存储扩展在 AI 服务中的机会与应用场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos
ACP广源盛139246256734 小时前
M6/M5 Pro Mac mini 端侧 AI 新形态@ACP#GSV5800 Serdes 长距离视频传输在 AI 服务中的机会与落地场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos·音视频
倔强的石头_6 小时前
事务边界与批量写入:避免长事务、锁等待和日志压力
数据库
努力努力再努力wz6 小时前
【Redis入门系列】从 KEYS 到 SCAN:渐进式遍历、Cursor 与位反转原理
数据库·redis·缓存
坐吃山猪7 小时前
【多线程】Lock与Condition
大数据·数据库
Lightpwd7 小时前
Spring Boot 多数据源落地:AbstractRoutingDataSource + 注解切面(附源码)
数据库·后端
LabVIEW开发8 小时前
LabVIEW 64位安装的位深陷阱:工具包、内存与工程兼容
数据库·labview·labview知识·labview功能·labview程序
寺中人8 小时前
MySQL 8.0 Windows 完整安装教程:环境配置、密码重置与常见报错排查
数据库·windows·mysql·环境搭建·mysql 安装
这个DBA有点耶8 小时前
同样48核配置TPS差1倍?高性价比数据库一体机的“软硬协同”才是分水岭
服务器·数据库·架构