【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 等)。恢复时,就是将这些指令重新执行一遍。

相关推荐
一 乐10 小时前
电影院|基于springboot + vue电影院购票管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·电影院购票管理管理系统
1.14(java)10 小时前
Spring核心:IoC与DI详解
数据库
运维 小白10 小时前
PostgreSQL高可用(Patroni + etcd + Keepalived)
数据库·postgresql·etcd
2301_8135995511 小时前
HTML图片怎么用UnoCSS对齐_UnoCSS原子化CSS图片对齐实战
jvm·数据库·python
m0_3776182311 小时前
c++怎么在不加载整个大文件的情况下获取其SHA256校验值【进阶】
jvm·数据库·python
檬柠wan11 小时前
MySQL-数据库增删改查学习
数据库·学习·mysql
qq_1898070311 小时前
CSS如何实现纯CSS树状目录结构_利用-checked与递归思维构建交互节点
jvm·数据库·python
2301_7775993711 小时前
Go语言如何做HTTP连接池_Go语言HTTP连接池教程【最新】
jvm·数据库·python
Wy_编程11 小时前
Redis数据类型和常用命令
数据库·redis·缓存
Polar__Star12 小时前
Redis如何利用位图快速判断数据存在性
jvm·数据库·python