【半夜学习MySQL】库的操作(含库的创建、删除、修改、备份操作/查看mysql连接情况/字符集和校验规则详谈)

devtools/2024/9/24 1:14:58/

在这里插入图片描述

🏠关于专栏:半夜学习MySQL专栏用于记录MySQL数据相关内容。
🎯每天努力一点点,技术变化看得见

文章目录

  • 创建数据库
  • 字符集和校验规则
    • 查看字符集合校验规则
    • 校验规则对数据库的影响
  • 操纵数据库
  • 数据备份和恢复
  • 查看连接情况


创建数据库

语法格式如下:

create database [if not exists] db_name [create_specification...]create_specification:[default] character set charset_name[default] collate collation_name 

格式说明:
●上述显式为蓝色、黄色的单词表示关键字
●中括号内为可选项
●character set:指定数据库采用的字符集
●collate:指定数据库字符集的校验规则

创建数据库示例1:
创建名为db1的数据库

create database db1;

在这里插入图片描述
★ps:show create database [数据库名称] \G可以查看数据库创建信息

创建数据库示例2:
创建一个使用utd8字符集的db2数据库

create database db2 charset=gbk;

在这里插入图片描述

创建数据库示例3:
创建一个使用utf字符集,并带校验规则的db3数据库

create database db3 charset=gbk collate=gbk_chinese_ci;

在这里插入图片描述

★ps:当我们创建数据库没有指定字符集和校验规则(且用户没有在/etc/my.cnf配置默认字符集和校验规则)时,系统多数情况下默认使用utf8字符集、utf8_general_ci校验规则。

★ps:为了方便数据库、表的创建,可以在/etc/my.cnf直接配置默认的字符集和校验集合(配置完毕后,需要重启mysqld才能够生效)↓↓↓
在这里插入图片描述

字符集和校验规则

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

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

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

★ps:进入某个数据库目录中后,该数据库一定会有一个存储该数据库字符集和校验规则的db.opt文件↓↓↓
在这里插入图片描述

查看字符集合校验规则

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

show variables like 'character_set_database';
show variables line 'collation_database';

在这里插入图片描述
查看数据库支持的字符集

show charset;

在这里插入图片描述

查看数据库支持的校验规则

show collation;

在这里插入图片描述

校验规则对数据库的影响

这里对utf8_general_ciutf8_bin做比较,说明校验规则对数库的影响。其中,utf8_general_ci不区分大小,而utf8_bin区分大小写↓↓↓

●不区分大小写
>创建一个数据库,使用utf8_general_ci校验规则:

create database test1 collate=utf8_genaral_ci;

在这里插入图片描述
>使用test1数据库,并在它的内部创建一个letters表:

use test1;
create table letters(lett varchar(6));

在这里插入图片描述
★ps:其中select database();可以查看当前处于哪个数据库中,show tables可以查看当前数据库中的表

>在letters表中存入’a’、‘A’、‘b’、‘B’、‘c’、‘C’,这6个字符:

insert into letters values('a');
insert into letters values('A');
insert into letters values('b');
insert into letters values('B');
insert into letters values('c');
insert into letters values('C');

在这里插入图片描述
>使用查询语句,查询表格中的’a’字符:

select * from letters where lett='a';

在这里插入图片描述
★ps:我们查询的明明是小写字母a,但它却查询出了大A和小a,就说明了utf8_general_ci是不区分大小写的。

●区分大小写
>创建一个名为test2,使用utf8_bin校验集的数据库,重复上述操作:

create database test2 collate=utf8_bin;
use test2;
create table letters(lett varchar(6));
insert into letters values('a');
insert into letters values('A');
insert into letters values('b');
insert into letters values('B');
insert into letters values('c');
insert into letters values('C');

在这里插入图片描述
>使用查询语句,查询表格中的’a’字符:

select * from letters where lett='a';

在这里插入图片描述
★ps:我们查询的是小写字母a,但它查询的也是小a,就说明了utf8_bin是区分大小写的。

>我们也可以对上述两个数据库中的letters的数据做排序,验证utf8_general_ciutf8_bin的区别,两个表格排序结果如下所示:

select * from test1.letters order by lett;
select * from test2.letters order by lett;

在这里插入图片描述
★ps:由于test2是区分大小写的,所以它按字符的ASCII码进行排序。这也说明test2对应的校验规则utf8_bin是区分大小的。

操纵数据库

查看数据库

show databases;

在这里插入图片描述

显示创建语句

show create database [数据库];

在这里插入图片描述
★ps:当show create database [数据库名];显示较为杂乱时,我们可以使用show create database [数据库名] \G来格式化显示

★ps:一些注意事项
> MySQL建议我们关键字使用大写,但是不是必须的。
> 上方显示的数据库创建语句中,数据库名称的反引号``是为了防止使用的数据库名刚好是关键字。
> /\*!40100 default...\*/这个不是注释,表示当前mysql版本大于4.01版本时,就执行这句话。

修改数据库

alter database db_name [alter_spacification...]alter_spacification:
[default] character set chatset_name
[default] collate collation_name

★ps:对数据库的修改主要指的是修改数据库的字符集、校验集

下面的示例,对上述test1的数据库的字符集从utf8更改为gbk

alter database test1 charset=gbk;

在这里插入图片描述
★ps:mysql数据库不支持对数据库名称做重命名。同时,在数据库创建后,通常不会轻易对数据库做任何修改,修改后可能影响上层已经实现的相关C++/Java等代码。

数据库删除

drop database [if exists] db_name;

执行删除之后的结果:
数据库内部看不到对应的数据库
●对应的数据库文件夹被删除,级联删除,里面的数据表全部被删除

下面对上述test1和test2数据库进行删除,在删除前,我们先看以下/var/lib/mysql目录。该目录下,目前有名为test1和test2的目录:
在这里插入图片描述
下面执行test1、test2数据库删除操作:

drop database test1;
drop database test2;

在这里插入图片描述
此时再查看/var/lib/mysql目录,名为test1和test2的目录被自动删除了:
在这里插入图片描述
★ps:数据库一旦创建,不要随意删除

★ps:我们可不可以通过删除/var/lib/mysql对应数据库的目录,来删除数据库呢?先试验以下:
在这里插入图片描述
在这里插入图片描述
虽然删除对应数据库目录,可以删除数据库,但不建议使用这种操作。

数据备份和恢复

备份
命令如下:

mysqldump -p3306 -uroot -p密码 -B数据库> 数据库备份存储的文件路径

下面演示对jammingpro数据库进行备份,该数据库存在一张personInfo表:
在这里插入图片描述
执行备份命令:

mysqldump -p3306 -uroot -p -B jammingpro > /home/baymax

在这里插入图片描述
这时,可以打开看看 jam.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中↓↓↓
在这里插入图片描述
还原
语法如下:

source 备份数据库文件目录

下面演示将上述jammingpro数据库还原的操作,首先,我们先将当前mysql中的jammingpro数据库删除↓↓↓
在这里插入图片描述
再执行还原指令:

source /home/baymax/jam.sql

在这里插入图片描述
此时再查看、使用jammingpro数据库,并查询原personInfo表,结果如下:
在这里插入图片描述
注意事项1
如果备份的不是整个数据库,而是某个数据库的某张表,该怎么做呢?

mysqldump -u root -p 数据库名 表名1 表名2 > 目录名

下面操作,将jammingpro数据库下的personInfo表进行备份,并还原到db2数据库中(该数据库原来没有personInfo表):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意事项2:
同时备份多个数据库

mysqldump -p3306 -uroot -p -B 数据库名1 数据库名2 > 目录名

该操作的备份与还原,与单个数据库备份还原相似,这里不再做出演示
注意事项3:
如果备份数据库时,没有使用-B选项指名数据库名称,需要先创建一个空的数据库,才能对数据库进行还原。

查看连接情况

语法:

show processlist;

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

🎈欢迎进入半夜学习MySQL专栏,查看更多文章。
如果上述内容有任何问题,欢迎在下方留言区指正b( ̄▽ ̄)d


http://www.ppmy.cn/devtools/39499.html

相关文章

【Vue】Vue的核心

目录 计算属性-computed插值语法实现methods实现计算属性实现使用使用总结: 监视属性-watch监视的两种写法:深度监视备注: computed和watch之间的区别 绑定样式class样式绑定字符串写法数组写法对象写法 style样式绑定对象式1对象式2数组式 条…

求一个B站屏蔽竖屏视频的脚本

求一个B站屏蔽竖屏视频的脚本 现在B站竖屏竖屏越来越多了,手机还好点给我一个按钮,选择不喜欢,但是我一般都用网页版看视屏,网页版不给我选择不喜欢的按钮,目测大概1/4到1/3的视频都是竖屏视频。 目前网页版唯一的进…

【Verilog】big_small_cnt

通用大小计数器 timescale 1ns / 1ps // // Company: // Engineer: wengf // Create Date: // Design Name: // Module Name: big_small_cnt // Project Name: // Target Devices: // Tool Versions: // Description: // Dependencies: // Revision: // Revision 0…

融知财经:期权期货及其他衍生产品

期权、期货及其他衍生产品是金融市场中用于管理风险和进行投机的金融工具。这些衍生产品的价值依赖于一个或多个基础资产,如股票、商品、利率、汇率等。以下是关于这些衍生产品的一些基本介绍: 1、期货(Futures):期货是…

DHCP原理

什么是DHCP DHCP (Dynamic Host Configuration Protocol,动态主机配置协议)是由Internet工作任务小组设计开发的,专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议,是一个应用层协议,使用UDP的67和68端口。 DHCP的前身是B…

语言基础 /CC++ 可变参函数设计与实践,va_ 系列实战详解(强制参数和变参数的参数类型陷阱)

文章目录 概述va_ 系列定义va_list 类型va_start 宏从变参函数的强制参数谈起宏 va_start 对 char 和 short 类型编译告警宏 va_start 源码分析猜测 __va_start 函数实现 va_arg 宏宏 va_arg 无法接受 char 和 short为啥va_arg可解析int却不能解析float类型?宏 va_a…

奥特曼“剧透“OpenAI发布会:不是GPT-5,也不是搜索引擎 媒体爆料:是语音助手 | 最新快讯

【图注】 萨姆奥特曼:不是 GPT-5,也不是搜索引擎,但我们一直在努力开发一些我们认为人们会喜欢的新东西!对我来说,感觉就像魔法一样。 太平洋时间周一上午 10 点(注:北京时间周二凌晨 1 点&…

AJAX概述和基本使用

01 【AJAX概述和基本使用】 1.AJAX简介 AJAX 全称为Asynchronous JavaScript And XML,就是异步的JS 和XML 通过AJAX 可以在浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据 AJAX 不是新的编程语言,而是一种将现有的标准…