MySQL库的操作(二)

创建数据库create

语法:

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

create_specification:
	[DEFAULT] CHARACTER SET charset_name
	[DEFAULT] COLLATE collation_name

说明:

  • 大写的表示关键字
  • \[\] 是可选项
  • CHARACTER SET: 指定数据库采用的字符集
  • COLLATE: 指定数据库字符集的校验规则

例子
创建数据库 db_name------本质:在/var/lib/mysql创建一个目录

c 复制代码
create database db_name;

删除数据库 db_name------本质:删除那个目录

c 复制代码
drop database db_name;

创建前进行校验,是否已经创建数据库
create database if not exists db_name;

字符集与校验规则

创建数据库的时候,有两个编码集:

  1. 数据库编码集------数据库未来存储数据用的编码。
  2. 数据库校验集------支持数据库,进行字段比较使用的编码,本质是一种读取数据库中数据采用的编码格式。

一句话来说:数据通过字符集进行存储,通过校验规则进行查找。

例子 :两个数据库,用同一个字符集进行存储,用不同的校验规则进行读取。 两个数据库各建两张表,这两张表中都存储name(char)类型的A与a,然后进行查询(读取)。

  • 校验规则使用utf8_ general_ ci(不区分大小写),仅查询a时,A,a都被查询。
  • 校验规则使用utf8_ bin(区分大小写),仅查询a时,只有A或者a被查询。

甚至当多个字母(含大小写)插入表中时,进行排序,结果也是不一样的(校验规则会影响比较)

数据库无论对数据做任何操作,都必须保证操作和编码必须是编码一致的(数据的产生、传输、存储、读取" 全链路使用统一(或可兼容映射)的字符编码规则)。

字符集(Character Set)和校验规则(Collation)本质上是强关联、一一对应的核心关系------ 字符集定义 "能存储哪些字符",校验规则则定义 "这些字符该如何比较 / 排序",一套字符集必然对应一套或多套专属的校验规则,反之一个校验规则也只属于某一个字符集。

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

c 复制代码
show variables like 'character_set_database';
show variables like 'collation_database';

注意:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ c

查看数据库支持的字符集show charset;

结果如下
查看数据库支持的字符集校验规则show collation

给数据库设置编码(这里是创建时设置)

创建一个使用utf8字符集的 db_name 数据库

c 复制代码
create database db_name charset=utf8;
create database db_name character set utf8;//两种写法

创建一个使用utf字符集,并带校对规则的 db_name 数据库。

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

操纵数据库

查看数据库show

c 复制代码
show databases;
c 复制代码
show tables

数据库删除drop

c 复制代码
DROP DATABASE [IF EXISTS] db_ name;

结果:数据库文件夹被删除,里面的数据表全部被删,所以不要随便删除数据库。

修改数据库alter

语法:

c 复制代码
ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

注意:对数据库的修改主要指的是修改数据库的字符集,校验规则

例子:将 mytest 数据库字符集改成 gbk

c 复制代码
alter database mytest charset=gbk;

备份和恢复

备份

语法:

c 复制代码
mysqldump -P3306 -u root -p密码 -B 数据库名 > 数据库备份存储的文件路径

例:将helloworld库备份到文件(注:需要退出mysql,Bash命令)

这时,可以打开看看 mytest.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。

如果备份的不是整个数据库,而是其中的一张表,怎么做?

c 复制代码
mysqldump -u root -p密码 数据库名 表名1 表名2 > 数据库存放路径

同时备份多个数据库

c 复制代码
mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径

还原

需要在连接mysql后进行还原

c 复制代码
mysql> source 数据库文件所在的路径(xxx.sql所在路径);

本质上就是在执行一次所有的语句。

如果备份一个数据库时,没有带上-B参数,在恢复数据库时,需要先创建空数据库,然后使用数据库(切换到该数据库),在使用source来还原

相关推荐
这个DBA有点耶33 分钟前
同城双活落地的三座山:网络延迟、脑裂预防、反向同步
数据库·架构·dba
青春之我_XP33 分钟前
MySQL 常用日期函数 实战指南
数据库·sql·mysql·数据分析·数据库开发·日期函数
Nturmoils33 分钟前
sys_dump 备了库,角色和权限别漏在外面
数据库
接着奏乐接着舞。1 小时前
【2026】73道Redis 常见面试题与参考答案
数据库·redis·后端·缓存
其实防守也摸鱼2 小时前
权限提升与横向移动:从内网渗透到域控的完整技术图谱
运维·服务器·数据库·安全·github·copilot·渗透
人生百态,人生如梦2 小时前
每日论文解读(9.1)——ReToolSQL:面向鲁棒Text-to-SQL的Agentic强化学习与工具增强两阶段训练框架
数据库·sql
Irene19912 小时前
格式化掩码 FM999999999999999999999.00 是 Oracle 数据库中 TO_CHAR 函数的数字格式模型
oracle·数字格式
DevOpenClub2 小时前
网页采集如何稳定输出结构化数据:JSON、链接与快照三阶段流水线
数据库·json·api
其实防守也摸鱼3 小时前
免杀与持久化入门:从载荷免杀到隐蔽通道的完整指南
运维·服务器·数据库·安全·github·copilot·渗透
SelectDB3 小时前
统一全文检索与 SQL 分析:Apache Doris 日志分析实践
运维·数据库·掘金技术征文