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

在这里插入图片描述

🏠关于专栏:半夜学习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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/612132.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis20种使用场景

Redis20种使用场景 1缓存2抽奖3Set实现点赞/收藏功能4排行榜5PV统计(incr自增计数)6UV统计(HeyperLogLog)7去重(BloomFiler)8用户签到(BitMap)9GEO搜附近10简单限流11全局ID12简单分…

苹果新品发布会速览:iPad革新遇市场挑战 | 百能云芯

北京时间5月7日晚,苹果以“放飞吧”为主题,举办了一场不到40分钟的线上新品发布会。在这场发布会上,iPad产品线成为了焦点,M4芯片和OLED技术的融入更是引起了广泛关注。 iPad新篇章:技术革新与市场竞争 时隔18个月&…

初识C语言——第十七天

选择语句:switch switch语句(整型表达式) { 语句项: } 而语句项是什么呢? //是一些case语句: //如下 case 整形常量表达式;常量可以,字符也可以(因为字符存储的时…

应该在哪里找海外ip代理?

出于学习工作,或者游戏娱乐的需求,许多人需要使用海外代理ip。那么我们该如何寻找到合适的、正规的、安全的海外代理ip呢? 首先,我们需要明白使用海外IP代理可能带来的风险,包括隐私泄露、网络速度变慢、安全风险以及可…

大势所趋!企业网站HTTPS升级全面普及化

JoySSL官网 注册码230918 HTTPS加密协议的应用无疑是维护网络信息安全的重要一环。随着技术的不断进步与用户隐私意识的增强,HTTPS加密已不再仅仅是大型企业的专属,而是逐渐成为所有企业网站的标准配置,其普及化趋势显而易见,堪称…

基于FPGA的数字信号处理(11)--定点数的舍入模式(2)向最临近值取整nearest

前言 在之前的文章介绍了定点数为什么需要舍入和几种常见的舍入模式。今天我们再来看看另外一种舍入模式:向最临近值取整nearest。 10进制数的nearest nearest: 向最临近值方向取整。它的舍入方式和四舍五入非常类似,都是舍入到最近的整数…

Jenkins流水线部署Maven项目

使用Jenkins的流水线功能,构建部署Java Maven项目,步骤很简单但是不少细节需要注意。 一、安装 Jenkins的安装步骤和流程就不具体描述,这里主要介绍一下安装时要注意的几个问题。 1、Jenkins尽量安装最新的几个版本,否则安装完成…

数据库调优-连接池优化

先贴下连接池的相关配置: 连接池参数配置: 字段含义Max Number of Connections最大连接数;做性能测试时,可以填 0 。在开发的项目中按实际代码填写,默认是 20 。Max Wait(ms)在连接池中取回连接最大等待时间&#xf…

在51单片机里面学习C语言

在开始前我有一些资料,是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 说出来你们可能都…

程序的环境和预处理#define #ifdefine

文章目录 预编译 预处理做的事情把#include<>里面的内容执行了注释删除&#xff0c;使用空格替换注释define 把符号统统替换为值 编译阶段做的事情链接做的事情运行环境预处理(预处理)详解预定义符号__FILE____LINE____DATE__ __TIME__写日志文件__FUNCTION__ #define预处…

克服 Prometheus 单值数据模型的局限性:GreptimeDB 的新路径

引言 Prometheus 已经成为监控和报警生态系统的基石&#xff0c;在高效、直接地处理实时指标&#xff08;Metric&#xff09;方面有着强大的表现。Prometheus 的核心是一个包含单个值和一系列标签的数据模型。这种设计在提升简单性和适应性的同时&#xff0c;也带来了一些挑战…

Ftp笑脸漏洞(VSFTPD 2.3.4)复现(后门漏洞)

Ftp笑脸漏洞&#xff08;VSFTPD 2.3.4&#xff09;复现&#xff08;后门漏洞&#xff09; 一、原理二、复现准备三、漏洞复现四、Metasploit利用脚本复现 一、原理 vsftpd 是“ very secure FTP daemon ”的缩写&#xff0c;安全性是它的一个最大的特点。 vsftpd是一个 UNIX 类…

Python专题:八、列表(3)

列表的场景应用 统计和肺考试成绩 >不支持字符串和整数之间的比较 sort()函数从小到大排列 reverse&#xff08;&#xff09;函数从大到小排列 列表推导式 字符串列表的转化&#xff0c;join&#xff08;&#xff09;函数列表生成字符串 split&#xff08;&#xff09;函…

Android system property运作流程源码分析

一.序 前文分析了build.prop这个系统属性文件的生成&#xff0c;每个属性都有一个名称和值&#xff0c;他们都是字符串格式。属性被大量使用在Android系统中&#xff0c;用来记录系统设置或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以get/set属性&#x…

Kafka应用Demo:生产者自定义消息分区方法

背景 没有设置消息键时Kafka默认的分区算法是轮循&#xff0c;设置了消息键将按消息键的hashcode计算分区值。这种方法可以保证未设置消息键时各分区负载均衡。也可以保证设置消息键后的消息放到同一个分区发送&#xff0c;以保证消息按顺序消费。 但在某些业务场景下&#xff…

python_5

# 制作一个注册登录模块 # 注册&#xff1a;将用户填入的账户和密码保存到一个文件(users.bin) # 登陆&#xff1a;将用户填入账户密码和users.bin中保存的账户密码进行比对,如果账户和密码完全相同 那么登录成功&#xff0c;否则登录失败 import hashlib import json import o…

Vue3知识总结-1

前面学习一段时间的前端&#xff0c;但是没有进行过太多的练习&#xff0c;并且对于里面一些重要的知识点也没有去着重的记忆&#xff0c;所以打算在学习Vue3的时候&#xff0c;做一些笔记&#xff0c;方便后面翻看。这个笔记会对于学习一些做一些&#xff0c;而不是一个整体的…

Maven打包异常javac <options> <source files>

今天发现Maven打包时候出现的异常&#xff0c;异常信息如下 一开始以为是什么代码问题呢&#xff0c;但是奇怪的是项目是可以正常运行的。也就说代码没问题。 那为什么Maven 打包编译就报错&#xff1f; 首先查看Maven 配置&#xff0c;配置好像也没有什么异常的地方。 再看…

Spring Boot | Spring Boot 整合“ 邮件任务“ 实现

目录: Spring Boot 整合" 邮件任务" 实现 :一、发送 "纯文本邮件" :(1) 添加 "邮件服务" 依赖启动器(2) 添加 "邮件服务" 配置信息(3) 定制 "邮件发送服务"(4) "纯文本" 邮件发送 测试效果 二、发送 带 "附件…

DSOX4054A 示波器:500 MHz,4 个模拟通道

DSOX4054A 示波器 500 MHz 4 个模拟通道 100 万波形/秒捕获率 4000 X 系列拥有一系列引以为傲的配置&#xff0c;包括采用了电容触摸屏技术的 12.1 英寸显示屏、InfiniiScan 区域触摸触发、100 万波形/秒捕获率、MegaZoom IV 智能存储器技术和标配分段存储器。 主要特点 —…