【MySQL】 库的操作

欢迎拜访雾里看山-CSDN博客
本篇主题 :【MySQL】 库的操作
发布时间 :2025.1.23
隶属专栏MySQL

目录

库的创建

语法

sql 复制代码
create database  database1;
sql 复制代码
create database if not exists database1;

if not exists 在创建数据库的时候,可以加也可以不加。

他的目的是如果已经存在相应的数据库,则不会继续创建。

创建数据库的本质 :在/var/lib/mysql目录下创建的一个目录。

使用

在第二次创建的时候,报出的警告内容就是,已经存在相应的数据库,不在创建新的数据库

编码规则

认识编码集

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

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

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

查看数据库默认的编码集和校验集

查看默认编码集的命令:

sql 复制代码
show variables like 'character_set_database';

查看默认校验集的命令

sql 复制代码
show variables like 'collation_database';

查看数据库支持的编码集和校验集

查看支持编码集的命令:

sql 复制代码
show charset;

查看支持校验集的命令

sql 复制代码
show collation;

指定编码创建数据库

在库相应目录下有一个db.opt文件,存放的内容就是我们的编码集校验集

指定编码集创建文件:

sql 复制代码
create database db1 charset=utf8;

或者

sql 复制代码
create database db2 character set utf8;


同时指定编码集和校验规则

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

验证不同校验编码的影响

创建一个不区分大小写的数据库 (编码规则采用utf8_general_ci

  1. 创建库
sql 复制代码
create database test1 collate utf8_general_ci;
  1. 进入库
sql 复制代码
use test1;
  1. 创建表
sql 复制代码
create table person(name varchar(20));
  1. 插入数据
sql 复制代码
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');

创建一个区分大小写的数据库 (编码规则采用utf8_bin

  1. 创建库
sql 复制代码
create database test2 collate utf8_bin;
  1. 进入库
sql 复制代码
use test2;
  1. 创建表
sql 复制代码
create table person(name varchar(20));
  1. 插入数据
sql 复制代码
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');

查询时的不同

命令:

sql 复制代码
select * from person where name='a';

不区分大小写的查询结果:

区分大小写的查询结果:

排序时的不同

命令:

sql 复制代码
select * from person order by name;

不区分大小写的排序结果:

区分大小写的排序结果:

库的操作

查看数据库

sql 复制代码
show databases;

进入数据库

sql 复制代码
use test1;

查看我当前在哪个数据库

sql 复制代码
show databases;

显示创建语句

sql 复制代码
show create database test1;
  1. MySQL建议我们关键字使用大写,但不是必须的。
  2. 数据库名字的反引号``,是防止使用的数据库名字是关键字。
  3. /*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话

修改数据库

sql 复制代码
alter database test1 charset=gbk collate gbk_chinese_ci;

数据库的删除

sql 复制代码
drop database test1;

或者

sql 复制代码
drop database if exists test1;

特别注意,一旦删除数据库,数据库里的表等内容会全部删除,这在实际应用中是一个很危险的事情,所以尽可能的不要删除数据库,非要删的话,做好备份以后再删除。

查看连接情况

sql 复制代码
show processlist;

可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。

库的备份和恢复

备份

在Linux下进行,命令:

bash 复制代码
mysqldump -P3306 -uroot -p -B test2 > test2.sql

vim编辑器查看test2.sql文件内容如下:

可见MySQL的备份不仅仅是把数据备份了,而且备份了关于数据库的所有操作。

恢复

在MySQL中进行

命令:source 备份文件的路径

sql 复制代码
source /home/ubuntu/mysql/test2.sql;

数据库会将你之前的所有操作再做一次。

注意

  1. 如果只备份一张表
    在Linux下进行,命令:
bash 复制代码
mysqldump -uroot -p  数据库名 表名1 表名2 ... > 存放路径
  1. 同时备份多个数据库
    在Linux下进行,命令:
bash 复制代码
mysqldump  -uroot -p -B 数据库名1 数据库名2 ... > 存放路径
  1. 如果备份数据库的时候,没有带上 -B 参数,在恢复数据时,需要先创建空数据库,然后使用数据库,再使用source来恢复。

⚠️ 写在最后:以上内容是我在学习以后得一些总结和概括,如有错误或者需要补充的地方欢迎各位大佬评论或者私信我交流!!!

相关推荐
顾林海29 分钟前
Android编译插桩黑科技:ReDex带你给App"瘦个身,提个速"
android·面试·性能优化
烧冻鸡翅QAQ29 分钟前
考研408笔记
笔记·考研
StarPrayers.32 分钟前
卷积层(Convolutional Layer)学习笔记
人工智能·笔记·深度学习·学习·机器学习
Li zlun1 小时前
MySQL 性能监控与安全管理完全指南
数据库·mysql·安全
能不能别报错1 小时前
K8s学习笔记(十五) pause容器与init容器
笔记·学习·kubernetes
maki0771 小时前
VR大空间资料 04 —— VRAF使用体验和源码分析
android·vr·虚幻·源码分析
无言以对,沉默不语,随你随你。1 小时前
【解决办法】GitBash不能在任意文件夹打开
经验分享·笔记·git
养生技术人2 小时前
Oracle OCP认证考试题目详解082系列第48题
运维·数据库·sql·oracle·database·开闭原则·ocp
海阳宜家电脑2 小时前
Lazarus使用TSQLQuery更新的一点技巧
数据库·lazarus·tsqlquery
牛马大师兄2 小时前
STM32独立看门狗IWDG与窗口看门狗WWDG知识梳理笔记
笔记·stm32·单片机·嵌入式硬件·嵌入式·看门狗