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

news2024/11/17 23:28:53

在这里插入图片描述

🏠关于专栏:半夜学习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.coloradmin.cn/o/1662578.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SDXL-ControlNet模型MistoLine:引领高精度图像生成的革新高质量图像模型

在数字艺术的浩瀚星空中,MistoLine犹如一颗璀璨的新星,以其对SDXL-ControlNet技术的深度整合,展示了对多种线稿类型的非凡适应能力,并在高精度图像生成领域树立了新的标杆。 GitHub:https://github.com/TheMistoAI/Mi…

Spring Framework-简介

Spring Framework Java Spring是一个开源的Java应用框架,它的主要目的是简化企业级应用开发的复杂性。Spring框架为开发者提供了许多基础功能,使得开发者能够更专注于业务逻辑的实现,而不是底层的细节。 主要特点和功能: 控制反…

Redis-新数据类型-Hyperloglog

新数据类型-Hyperloglog 简介 在我们做站点流量统计的时候一般会统计页面UV(独立访客:unique visitor)和PV(即页面浏览量:page view)。 什么是基数? 数据集{1,2,5,7,5,7&#xff…

Spring框架学习-详细

文章目录 1. Spring简介1.1 面向接口编程1.2 Spring简介1.3 Spring体系结构 2 Spring IoC - 基于XML2.1 Sping框架部署(IoC)2.2 Spring IoC使用2.3 IoC和DI2.4 DI依赖注入Spring容器通过反射方法实现属性注入有三种方式1. set方法注入2. 构造器注入 2.5 …

禁止打开浏览器时弹出 internet explorer 11 停用的通知

计算机管理(我的电脑图标上右键) - 管理模板 - windows 组件 - internet explorer 启用隐藏 internet explorer 11 停用通知,如下图所示

使用Valgrind工具套件中的Massif监测C++程序堆内存使用

Valgrind是一款用于内存调试、内存泄漏检测以及线程问题分析的套件。它由一系列的工具组成,适用于Linux、macOS等操作系统。下面简要介绍几个主要的Valgrind工具: Memcheck 这是Valgrind最常用的工具,用于检测程序中的内存错误,包括非法内存读写、使用未初始化的内存等。Cache…

【动态规划】子数组、子串系列II|等差数列划分|最长湍流子数组|单词拆分|环绕字符串中唯一的子字符串

一、等差数列划分 413. 等差数列划分 算法原理 💡细节: 1.如果当前nums数组中i位置的数和前面两个数可以构成等差数列,那么当前位置所有子数组构成的等差数列个数dp[i]就等于前一个位置有子数组构成的等差数列个数1(这个1代表增加…

基于MWORKS 2024a的MIMO-OFDM 无线通信系统设计

一、引言 在终端设备和数据流量爆发式增长的今天,如何提升通信系统容量、能量效率和频谱利用率成为5G通信的关键问题之一。大规模天线阵列作为5G及B5G无线通信关键技术通过把原有发送端天线数量提升一个或多个数量级,实现波束聚集、控制波束转向&#x…

钒回收树脂五氧化二钒净化回收工艺

钒是一种重要的工业金属,广泛应用于钢铁合金、化工、航空和电池材料等领域。随着资源的日益紧张和环保要求的提高,回收利用钒成为了一个重要的研究方向。树脂吸附技术是一种常用的从废水或废料中回收钒的方法,具有操作简便、效率高、成本相对…

OpenCV中的模块:点云配准

点云配准是点云相关的经典应用之一。配准的目的是估计两个点云之间位姿关系从而完成两者对应点之间的对齐/对应,因而在英文中又叫“align”、“correspondence”。笔者曾经是基于OpenCV进行三维重建的,并且从事过基于深度学习的6DoF位置估计等工作。在这些工作中,除了重建点…

Ansible的安装与配置

Ansible的安装与配置 1. 安装ansible # ansible是epel源提供的,所以必须安装epel: [rootRocky9 ~]# yum -y install epel-release Last metadata expiration check: 0:01:53 ago on Tue 26 Dec 2023 10:05:34 PM CST. Dependencies resolved. Package …

如何在 CentOS 上安装并配置 Redis

如何在 CentOS 上安装并配置 Redis 但是太阳,他每时每刻都是夕阳也都是旭日。当他熄灭着走下山去收尽苍凉残照之际,正是他在另一面燃烧着爬上山巅散烈烈朝晖之时。 ——史铁生 环境准备 本教程将在 CentOS 7 或 CentOS 8 上进行。确保你的系统已更新到最…

Java入门基础学习笔记7——Intellij IDEA开发工具概述、安装

之前的开发工具存在一些问题: 文本编辑工具:记事本、NotePad、EditPlus、Sublime...编写代码的时候没有错误提醒、没有智能代码提示、需要自己进行编译、执行、功能不够强大。 集成开发环境(IDE:Integrated Development Environm…

Python 3 中zip()函数的用法

1 创作灵感 我们在阅读代码的时候,经常会看到zip函数,有的时候还和循环在一起用,今天举几个例子测试一下该函数的用法 2.应用举例 (1)定义了两个列表一个是num,一个是letter (2)使用zip可以把num列表和letter列表中…

k8s遇到的常见问题及解决

1. error: open /var/lib/kubelet/config.yaml: no such file or directory 解决:关键文件缺失,多发生于没有做 kubeadm init就运行了systemctl start kubelet。 要先成功运行kubeadm init 2. 执行初始化kubeadm init ------的时候报错 The HTTP call…

视频批量剪辑高效掌握,轻松驾驭视频制作,播放速度与帧数尽在掌控

在追求速度与激情的视频制作世界里,你是否曾渴望拥有一款能够轻松调整播放速度和秒数的神器?现在,这款神器已经来到了你的身边,让你在视频制作的道路上更加得心应手,效率倍增! 首先,我们要进入媒…

机器学习-L1正则/L2正则

机器学习-L1正则/L2正则 目录 1.L1正则 2.L2正则 3.结合 1.L1正则 L1正则是一种用来约束模型参数的技术,常用于机器学习和统计建模中,特别是在处理特征选择问题时非常有用。 想象一下,你在装备行囊准备去旅行,但你的行囊有一…

如何用python的Turtle绘画?

目录 一、画一个圆和正方形 二、简单的方式来画一个美女 三、Turtle是一个用于绘制图形的标准库 一、画一个圆和正方形 import turtle# 创建一个图形窗口 window turtle.Screen() window.bgcolor("white")# 创建一个海龟画笔 pen turtle.Turtle() pen.shape(&q…

Maven 插件使用

1.spring-boot-maven-plugin 我们直接使用 maven package (maven自带的package打包功能),打包Jar包的时候,不会将该项目所依赖的Jar包一起打进去,在使用java -jar命令启动项目时会报错,项目无法正常启动。…

使用Flask-Admin创建强大的后台管理系统

文章目录 安装Flask-Admin创建Flask应用添加Flask-Admin添加模型扩展延伸自定义视图权限管理文件上传 结语 在Web应用开发中,后台管理系统是至关重要的组成部分,它能够让管理员轻松管理应用的各种数据和配置。Flask-Admin是一个功能强大的Flask扩展&…