MySQL中对数据库的操作

文章目录

查看数据库列表

SQL 复制代码
show databases;

增删数据库

创建数据库

sql 复制代码
create database XXX;
create database if not exists XXX; // 不存在则创建,存在则报错
create database XXX charset=XXX; // 创建使用XXX字符集的数据库,不指明则根据配置文件默认
create database XXX charset=XXX collate XXX; // 创建XXX字符集并带校验规则的数据库

本质是在mysql中创建一个目录

删除数据库

sql 复制代码
drop database XXX;
drop database if exists XXX; // 存在则删除,不存在报错

本质是删除mysql中的一个目录

不能随意删除数据库,删完该库中的所有数据都没有了

认识系统编码

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

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

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

sql 复制代码
show variables like 'character_set_database'; // 查看系统默认字符集
show variables like 'collation_database'; // 查看系统默认校验规则
show charset; // 查看数据库支持的所有字符集
show collation; // 查看数据库支持的所有的校验规则

校验规则对数据库的影响

拿两个规则来进行比较:

utf8_general_ci //不区分大小写

utf8_bin // 区分大小写

首先创建一个规则为:utf8_general_ci 的数据库,在数据库里创建表并插入一些数据,接着指定查询某个数据看看会有什么情况。因为配置文件默认的规则为 utf8_general_ci 因此不需要指明创建

sql 复制代码
create database d1;

use d1; // 进入d1数据库

create table letter(name varchar(20)); // 创建一个名为letter的表,表中的字段只有name

insert into letter values('a'); // 往表中插入数据
insert into letter values('A');
insert into letter values('b');

select * from letter; // 查看表中数据
select * from letter where name='a'; // 在表中查询name字段为a的数据

可以看到单独查询a的话,A也会跟着出来,这就是不区分大小写的规则所产生的效果

下面再来看看区分大小写规则的效果,由于配置文件默认规则为 utf8_general_ci ,因此要指明 utf8_bin 才可以

sql 复制代码
create database d2 charset=utf8 collate utf8_bin; // 创建校验规则为utf8_bin的数据库

use b2; // 进入b2数据库

create table letter(name varchar(20)); // 创建表

insert into letter values('a'); // 往表中插入数据
insert into letter values('A');
insert into letter values('b');

select * from letter; // 查看表中数据
select * from letter where name='a'; // 在表中查询name字段为a的数据

可以看到这种规则下,只会出现a的数据。

综上可以看出,不同的校验规则有着不同的效果,根据需求选择规则去创建数据库即可

其他库的操作

查看当前所在数据库

sql 复制代码
select database();

修改数据库

主要是修改编码和校验规则

sql 复制代码
alter database XXX charset=XXX collate XXX;

查看数据库创建的细节

sql 复制代码
show create database XXX;

可以看到数据库的编码

备份和恢复

shell 复制代码
mysqldump -P端口号 -u用户名 -p密码 -B 数据库名 > 备份的路径
//注意是在系统中执行的指令

备份的本质就是将数据库的所有历史操作和数据全部重定向到系统中的文件

sql 复制代码
source 备份文件的路径;
//在mysql中执行

恢复的本质就是将备份在系统中的文件中锁存储的所有数据库操作在mysql中执行一遍

可以看到在系统中就存在了一个文件,该文件就存储着d1这个数据库的所有操作和数据。

那么恢复的话,直接在mysql中执行命令即可

执行了文件中记录的所有操作后,d1这个数据库就会被创建好。

注意事项

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

shell 复制代码
mysqldump -P端口号 -u用户名 -p 数据库名 表名1 表名2 > 路径 

同时备份多个数据库

shell 复制代码
mysqldump -P端口号 -u用户名 -p 数据库名1 数据库名2 > 路径

如果备份数据库不带-B选项,那么在恢复数据库时就要先创建空的数据库,然后使用数据库再恢复。

-B选项本质就是在备份文件中加入创建数据库的指令

查看连接情况

sql 复制代码
show processlist;

这个指令可以查看当前mysql有多少个用户在登陆

相关推荐
Ivanqhz1 分钟前
KV Cache
服务器·数据库·人工智能·深度学习·算法
Omics Pro10 分钟前
~30,000+引用!理论2005,R包2008,多组学集成AI增强
开发语言·数据库·人工智能·算法·机器学习·自然语言处理·r语言
呆萌很34 分钟前
数据库逻辑结构设计
数据库
howdoyoudo20260642 分钟前
当新案例冲击旧框架:分类系统的宿命与修正路径
大数据·网络·数据库·人工智能·安全·ai·分类
自己的九又四分之三站台1 小时前
GeoPackage 到底适合什么场景:从 SQLite 容器到空间数据格式选型
数据库·oracle·sqlite
东方护航数据恢复(深圳)1 小时前
勒索病毒加密数据库怎么办?深圳 0 赎金解密恢复实录【东方护航数据恢复深圳店】
数据库·数据恢复·服务器数据恢复·勒索病毒·数据镜像
倔强的石头_1 小时前
应用账号最小权限实践:读写账号、报表账号、运维账号分层
数据库
苦瓜打怪兽1 小时前
PostgreSQL 报错“字段 datlastsysoid 不存在”排查与解决
数据库·postgresql
XLYcmy1 小时前
PDF 论文处理器 — 技术报告文档
数据库·python·网络安全·pdf·embedding·dify·rag
FYKJ_20102 小时前
springboot心理健康管理系统86254-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·mysql·django·课程设计