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

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

相关推荐
GoodStudyAndDayDayUp2 分钟前
初入 python Django 框架总结
数据库·python·django
早日退休!!!18 分钟前
性能优化笔记
笔记·性能优化
用户20187928316720 分钟前
简单了解android.permission.MEDIA_CONTENT_CONTROL权限
android
_一条咸鱼_26 分钟前
Android Runtime类卸载条件与资源回收策略(29)
android·面试·android jetpack
顾林海27 分钟前
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
android·面试·性能优化
砖厂小工29 分钟前
Now In Android 精讲 8 - Gradle build-logic 现代构建逻辑组织方式
android
玲小珑38 分钟前
Auto.js 入门指南(八)高级控件与 UI 自动化
android·前端
harry235day1 小时前
Compose 带动画的待办清单列表页
android·android jetpack
vocal1 小时前
我的安卓第一课:四大组件之一Activity及其组件RecyclerView
android
@大嘴巴子1 小时前
MySQL知识回顾总结----数据库基础
数据库·mysql