【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来恢复。

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

相关推荐
UpUpUp……1 小时前
HTML简单语法标签(后续实操:云备份项目)
笔记·html
apcipot_rain1 小时前
【应用密码学】实验五 公钥密码2——ECC
前端·数据库·python
小彭律师1 小时前
门禁人脸识别系统详细技术文档
笔记·python
是孑然呀3 小时前
【小记】word批量生成准考证
笔记·学习·excel
辛一一4 小时前
neo4j图数据库基本概念和向量使用
数据库·neo4j
巨龙之路5 小时前
什么是时序数据库?
数据库·时序数据库
蔡蓝5 小时前
binlog日志以及MySQL的数据同步
数据库·mysql
teacher伟大光荣且正确6 小时前
Qt Creator 配置 Android 编译环境
android·开发语言·qt
是店小二呀6 小时前
【金仓数据库征文】金融行业中的国产化数据库替代应用实践
数据库·金融·数据库平替用金仓·金仓数据库2025征文
炒空心菜菜6 小时前
SparkSQL 连接 MySQL 并添加新数据:实战指南
大数据·开发语言·数据库·后端·mysql·spark