MYSQL【库操作】

一、创建数据库

创建数据库是使用 MySQL 的第一步,合理的创建语句能规范数据库的字符集、校验规则,避免后续使用出现乱码、查询匹配异常等问题

复制代码
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...];

其中可选的create_specification用于指定数据库属性,核心配置为:

  • [DEFAULT] CHARACTER SET charset_name:指定数据库采用的字符集
  • [DEFAULT] COLLATE collation_name:指定数据库字符集的校验规则

语法说明

  • 大写部分为 MySQL 关键字,实际使用中关键字大小写 不 敏感,推荐大写以提升可读性;
  • []内为可选项IF NOT EXISTS可避免创建已存在的数据库时报错;
  • 可同时指定字符集和校验规则,多个配置用逗号分隔。

本质上 , 就是在 /var/lib/mysql 下创建一个目录

案例:

1. 常见名为db1 的数据库

复制代码
create database db1;

说明:当我们创建数据库没有指定字符集和校验规则时候 ,系统使用默认字符集utf8 , 校验规则是 : utf8_general_ci

2 . 创建一个使用utf8字符集的db2数据库

复制代码
create database db2 charset=utf8;

3. 创建一个使用utf字符集 , 并带对校验规则的db3数据库

复制代码
create database db3 charset=utf8 collate utf8_general_ci;

二、字符集和校验集

字符集和校验规则是数据库的重要属性,字符集决定了数据库能存储的语言字符(如中文、英文、日文),校验规则则影响数据的查询匹配、排序等行为,二者需配合使用。

数据库无论对数据做任何操作 , 都必须保证操作 和 编码 保持一致 。

1. 查看系统默认字符集以及校验规则

复制代码
-- 查看默认字符集
show variables like 'character_set_database';
-- 查看默认校验规则
show variables like 'collation_database';

2. 查看数据库支持的字符集

复制代码
show charset;

关键说明:utf8字符集是日常开发的主流选择,支持多语言字符,也是 MySQL 的默认字符集,能满足中文、英文等绝大多数开发场景。字符集主要是控制用什么语言 , 比如utf8就可以使用中文。

3. 查看数据库支持的字符级校验规则

复制代码
show collation;

校验规则命名有规律 , 通常以对应字符集开头 。 如utf8相关的校验规则有 utf8_general_ci , utf8_bin等。

4. 校验规则的实际影响

校验规则的核心差异体现在是否区分大小写 。 以下用过对比 utf8_general_ci (不分大小写 )和utf8_bin(区分大小写)的区别 。

  • 不分大小写

创建一个数据库 , 校验规则使用 utf8_general_ci (不区分大小写)

复制代码
-- 数据库1:校验规则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');
  • 区分大小写

    -- 数据库2:校验规则utf8_bin(区分大小写)
    create database test2 collate utf8_bin;
    use test2;
    create table person(name varchar(20));
    insert into person values('a'),('A'),('b'),('B');

  • 进行查询

不区分大小写的查询以及结果

区分大小写的查询以及结果

  • 结果排序

不区分大小写的排序以及结果

区分大小写的排序以及结果

三、数据库的操作

1. 查看数据库

(1)查看 MySQL 中所有的数据库

复制代码
show databases;

执行后会列出 MySQL 中所有已创建的数据库,包括系统默认数据库(如mysqlinformation_schema)和自定义数据库。

(2)查看数据库的创建语句

通过该语句可查看指定数据库的详细创建配置,包括字符集、校验规则等,便于确认数据库属性。

复制代码
show create database 数据库名;
  • 数据库名的反引号`````:防止数据库名与 MySQL 关键字冲突,是推荐的命名写法;
  • /*!40100 DEFAULT CHARACTER SET utf8 */:非注释语句,含义为当 MySQL 版本大于 4.01 时,执行该配置语句,保证不同版本的兼容性

2. 修改数据库

MySQL 中对数据库的修改仅支持修改字符集和校验规则不支持修改数据库名(若需修改库名,建议新建数据库后迁移数据)。

复制代码
-- 修改字符集
alter database test1 charset=gbk;
-- 验证修改结果
show create database test1;

执行后可看到mytest的默认字符集已变为gbk

3. 删除数据库

删除数据库是高危操作,执行后数据库对应的文件夹会被彻底删除,库内的所有表和数据也会级联删除,无法恢复,需谨慎操作。

复制代码
DROP DATABASE [IF EXISTS] db_name;
  • IF EXISTS:可选,避免删除不存在的数据库时报错;
  • 无任何恢复机制,生产环境中禁止直接执行删除语句,需先备份。

执行结果

  • MySQL 客户端中无法再看到该数据库;
  • 服务器上对应的数据库物理文件夹被删除
  • 库内所有数据表、数据全部丢失

4. 查看数据库连接情况

通过**show processlist可查看当前连接到 MySQL 的所有用户信息**,包括连接用户、连接地址、操作的数据库、连接状态等,是数据库运维和安全监控的常用语句。

复制代码
show processlist;
  • Id:连接标识,可用于终止异常连接;
  • User:连接 MySQL 的用户名;
  • Host:连接的客户端地址,localhost为本地连接,若出现陌生 IP 需警惕数据库被入侵;
  • db:当前操作的数据库,NULL表示未选择数据库;
  • Command:连接状态,Sleep为空闲连接,Query为正在执行查询;
  • Info:当前执行的 SQL 语句。

应用场景:当数据库运行缓慢时,可通过该语句查看是否有慢查询、异常连接;若发现非授权用户的连接,可及时排查数据库安全问题。如果查出某个用户不是你正常登录的,很有可能你的数据库被人入侵了 。

四、数据库的备份与恢复

数据是数据库的核心,日常备份是防止数据丢失的关键手段,MySQL 提供了mysqldump工具实现数据库备份,配合source语句完成数据恢复,支持单库、单表、多库等多种备份场景。

1. 备份

复制代码
# 基础语法:备份单个数据库
mysqldump -P端口号 -u用户名 -p密码 -B 数据库名 > 备份文件存储路径/备份文件名.sql
  • -P:指定 MySQL 端口号,默认 3306 可省略;
  • -u:指定连接的 MySQL 用户名;
  • -p:指定连接的 MySQL 密码,密码与 - p 之间无空格
  • -B:必选,用于指定备份数据库,保留数据库的创建语句;
  • >:重定向符号,将备份内容写入指定的 sql 文件。

备份文件说明 :生成的**.sql文件是文本文件**,包含了数据库的创建语句、表的创建语句、数据的插入语句,可直接打开查看。

2.恢复

数据恢复需在MySQL 客户端内部 执行,通过source语句读取备份的.sql文件,执行其中的 SQL 语句,完成数据库、表、数据的恢复。

source 备份文件的绝对路径;

执行后,MySQL 会自动执行备份文件中的所有 SQL 语句,恢复对应的数据库和数据。

3.注意事项

(1)备份单个 / 多个表

若无需备份整个数据库,仅需备份其中的部分表,语法如下:

复制代码
# 备份单个数据库中的多个表
mysqldump -u root -p 数据库名 表名1 表名2 > 备份文件路径.sql

示例 :备份mytest数据库中的personstudent

复制代码
mysqldump -u root -p123456 mytest person student > D:/mytest_table.sql

(2)同时备份多个数据库

-B参数指定多个数据库名,实现多库批量备份

复制代码
mysqldump -u root -p -B 数据库名1 数据库名2 数据库名3 > 备份文件路径.sql

(3)无 - B 参数的备份与恢复

若备份时省略-B参数,备份文件中不会包含数据库的创建语句恢复时需先手动创建空数据库,再选择该数据库,最后执行source恢复:

复制代码
# 无-B参数备份
mysqldump -u root -p123456 mytest > D:/mytest_nob.sql

-- 无-B参数的恢复步骤
1. 创建空数据库:create database mytest;
2. 选择数据库:use mytest;
3. 执行恢复:source D:/mytest_nob.sql;
相关推荐
皮皮哎哟2 小时前
嵌入式数据库从入门到精通
linux·数据库·sqlite3·sqlite3_open
爱吃羊的老虎3 小时前
【后端】MySQL 主从复制原理深度解析
数据库·mysql
blues92573 小时前
MySQL 篇 - Java 连接 MySQL 数据库并实现数据交互
java·数据库·mysql
曹牧3 小时前
C#:控制函数执行时间
数据库·c#
ApacheSeaTunnel3 小时前
(三)ODS/明细层落地设计要点:把数据接入层打造成“稳定可运维”的基础设施
数据库·数据仓库·数据湖·白鲸开源
猹叉叉(学习版)3 小时前
【ASP.NET CORE】 6. 中间件
数据库·笔记·后端·中间件·c#·asp.net·.netcore
高铭杰3 小时前
Postgresql源码(152)Transaction Redo (RM_XACT_ID = 1)
数据库·postgresql·xact
Zzzzmo_3 小时前
【MySQL】视图
数据库·mysql
就不掉头发3 小时前
Linux与数据库
linux·运维·数据库