【MySQL】MySQL库的操作

news2024/11/26 2:25:58

MySQL库的操作

  • 一、创建数据库
    • 创建数据库案例
    • 字符集和校验规则
    • 校验规则对数据库的影响
  • 二、操纵数据库
    • 1、查看数据库
    • 2、查看当前正在使用的数据库
    • 3、使用数据库
    • 4、显示创建语句
    • 5、数据库删除
    • 6、数据库的修改
    • 7、备份和恢复
    • 8、查看连接情况

一、创建数据库

创建数据库的语法如下:

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,create_specification] ...]

create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

解释说明:

  • SQL中大写的表示关键字,[ ]中代表的是可选项。
  • IF NOT EXISTS 表示不存在就创建。
  • CHARSET用于指定数据库所采用的编码格式。
  • COLLATE用于指定数据库所采用的校验规则。

注意: 如果创建数据库时未指明数据库的编码格式或校验规则,则默认使用MySQL配置文件中对应的编码格式或校验规则

创建数据库案例

  • 采用默认的编码格式和校验规则创建数据库
    创建数据库时将所有的可选项都去掉即可
create database db1;

在这里插入图片描述

  • 创建指定utf8编码格式创建数据库
create database db2 charset=utf8;

其中SQL中的charset=utf8,也可以写成character set=utf8character set utf8

在这里插入图片描述

  • 指定utf8编码格式和utf8_general_ci校验规则创建数据库
create database db3 charset=utf8 collate utf8_general_ci;

其中SQL中的collate utf8_general_ci,也可以写成collate=utf8_general_ci

字符集和校验规则


  • 字符集:是一套符号的编码方式的集合,例如我们常见的ASCII字符集、GBK字符集、UTF8字符集等。其中UTF8是一种全球统一的编码方式,所以我们一般采用UTF8字符集。

  • 校验规则:是在字符集内用于比较字符的一套规则,一般来说我们按照什么格式字符集存入数据,就按什么字符集对应的校验规则进行读取,这样才能保证数据的正确性。


  • 查看系统默认的字符集

可以通过查看MySQL系统变量variables中的character_set_database,可以得知系统默认的字符集。如下:

show variables like 'character_set_database';

在这里插入图片描述

  • 查看系统默认的校验规则

通过查看MySQL系统变量variables中的collation_database,可以得知系统默认的字符集校验规则。如下:

show variables like 'collation_database';

在这里插入图片描述

  • 查看数据库支持的全部字符集

使用show charset可以查看数据库支持的字符集。如下:

show charset;

在这里插入图片描述

如果你细心,且对utf8编码集了解过的话,你可能会产生下面的疑惑。

  • 为什么MySQL里面的utf8是3个字节,正常来说utf8是1~4个字节啊?
  • 答案是:MySQL 中的 utf8 并不是真正的 UTF-8 编码!utf8mb4 才是真正的UTF-8!

    如果你对这里的原因比较感兴趣可以看一看这篇文章:面试官问:为什么 MySQL 中的 utf8 并不是真正的 UTF-8 编码?
  • 查看数据库支持的全部的字符集校验规则

使用show collation可以查看数据库支持的字符集校验规则。如下:

show collation;

在这里插入图片描述

校验规则对数据库的影响

现在我们已经知道了,为了保证读取的数据和存储的数据是一致的,因此字符集编码格式和校验规则必须是对应的。但实际同一中字符集编码格式一般会有多种可选择的校验规则,比如utf8编码格式的校验规则有utf8_general_ci、utf8_bin、utf8_unicode_ci等校验规则。

使用不同的校验规则操作数据库中的数据可能会得到不同的结果,比如utf8_general_ci校验规则在比对数据时是不区分大小写的,而utf8_bin校验规则在对比数据时则是区分大小写的。

  • 不区分大小写
    在刚才我们创建的db3数据库时使用的是utf8_general_ci的校验规则,我们选择使用这个数据库use db3,在该数据库中同样创建一张person表,再不作设置的情况下该person表会将继承当前数据库的编码格式和校验规则。
use db3;
create table person(name varchar(20));

在这里插入图片描述
这时向表中插入一些数据。如下:

insert into person values ('A');
insert into person values ('a');
insert into person values ('B');
insert into person values ('b');
insert into person values ('c');
insert into person values ('D');

在这里插入图片描述

通过select语句可以查看插入表中的数据。如下:

select * from person;

在这里插入图片描述

这时指定查看表中name='A'的记录时会将Aa一并筛选出来,根本原因就是utf8_general_ci校验规则在进行数据比对时是不区分大小写的。如下:

select * from person where name='A';

在这里插入图片描述

  • 区分大小写

操作与前面类似

create database db4 charset=utf8 collate=utf8_bin;
show databases;
use db4;
create table person(name varchar(20));

在这里插入图片描述
这时向表中插入一些数据。如下:

insert into person values ('A');
insert into person values ('a');
insert into person values ('B');
insert into person values ('b');
insert into person values ('c');
insert into person values ('D');

这时指定查看表中name='A'的记录时会将Aa区分出来,根本原因就是utf8_bin校验规则在进行数据比对时是不区分大小写的。如下:

select * from person where name='A';

在这里插入图片描述

二、操纵数据库

1、查看数据库

使用show databases可以查看系统中所有的数据库。如下:

show databases;

在这里插入图片描述

2、查看当前正在使用的数据库

select database();
  • database()是一个MySQL函数

在这里插入图片描述

3、使用数据库

use 数据库名;

在这里插入图片描述

4、显示创建语句

使用show create database 数据库名可以查看对应数据库的在创建时的语句。如下:

show create database db3;

在这里插入图片描述

说明一下:

  • MySQL建议SQL中的关键字使用大写,但不是必须的。
  • 数据库的名字加上反引号,是为了防止使用的数据库名与关键字冲突。
  • /*!40100 DEFAULT CHARACTER SET utf8 */不是注释,它表示当前MySQL版本如果大于4.10,则执行后面的SQL语句。

5、数据库删除

删除数据库的SQL语法如下:

DROP DATABASE [IF EXISTS] db_name;
  • IF EXISTS,表示存在就删除

执行删除之后的结果:

  • show databases;看不到对应的数据库了。
  • 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删。

注意:不要随意删除数据库

drop database if exists db4;
show databases;

在这里插入图片描述

6、数据库的修改

修改数据库的SQL语法如下:

ALTER DATABASE db_name [[DEFAULT] CHARSET=character_name] [[DEFAULT] COLLATE=collation_name];
  • 对数据库的修改主要指的是修改数据库的「字符集」或「校验规则」。

例如我们可以进入数据库存储目录/var/lib/mysql查看db3的「字符集」和「校验规则」。

在这里插入图片描述

现在我们进行对db3一些修改,字符集改为gbk,并将数据库的校验规则改为gbk_chinese_ci

alter database db3 charset=gbk collate=gbk_chinese_ci;

在这里插入图片描述

此时,我们再去查看db3下的db.opt配置文件:

在这里插入图片描述

7、备份和恢复

在我们安装数据库mysql时,同时会给我们安装一个mysqldump的工具,通过这个工具我们可以进行数据库的备份。

  • 数据库备份

这个工具的使用语法是:

mysqldump -P 端口号 -u 用户名 -p 密码 -B 数据库名1 数据库名2 ...  > 数据库备份存储的文件路径

在这里插入图片描述

我们打开这个文件:

vim back.sql

可以看到,文件中的内容实际就是我们在该数据库中执行的各种SQL命令,包括创建数据库、创建表、插入数据等SQL语句。如下:

在这里插入图片描述

  • 数据库恢复

恢复的命令是:

source 数据库备份存储的文件路径

我们先把数据库db3给删除。

在这里插入图片描述

进行恢复:

在这里插入图片描述

我们可以看到数据库和里面的表都恢复了。

在这里插入图片描述

  • 表的备份
    使用如下命令即可对指定表进行备份:
mysqldump -P 端口号 -u 用户名 -p 密码 数据库名 表名1 表名2 ... > 表备份存储的文件路径

在这里插入图片描述

  • 表的恢复

这时我们可以创建一个空的数据库并在该数据库中执行如下命令即可对表进行恢复。

create database temp;
show databases;
use temp;

在这里插入图片描述

source /root/MySQL/back2.sql

在这里插入图片描述

当备份文件中的SQL语句执行完毕后,该数据库下就恢复出了person表,并且表当中的数据也都恢复出来了。

select database();
show tables;

在这里插入图片描述

总结:如果备份一个数据库时,没有带上-B参数(备份数据库), 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。

8、查看连接情况

使用show processlistSQL语句即可查看当前连接MySQL的用户。比如:

show processlist;

在这里插入图片描述

说明一下:

  • Id列:一个标识,可以在MySQL中通过kill id杀死指定id的线程。
  • User列:显示当前用户,如果不是root,这个命令就只显示你权限范围内的SQL语句。
  • Host列:显示这个语句是从哪个IP的哪个端口上发出的,可用来追踪出问题语句的用户。
  • db列:当前执行的命令是在哪一个数据库上,如果没有指定数据库,则该值为NULL。
  • Command列:显示当前连接执行的命令,一般就是休眠(Sleep)、查询(Query)和连接(Connect)。
  • Time列:表示该线程处于当前状态的时间,单位是秒。
  • State列:显示使用当前连接的SQL语句的状态。
  • Info列:一般记录的是线程执行的语句,默认只显示前100个字符,如果要看全部信息,需要使用show full processlist

show processlist可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登录的,那么很有可能你的数据库被人入侵了,以后如果发现自己的数据库比较慢时,可以用这个SQL来查看数据库连接情况。

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

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

相关文章

使用python绘制现有彩票记录走势图

在数据分析和可视化的领域中,彩票走势图是一个经典的例子,它可以展示彩票数字随时间的出现频率和趋势。这里使用英国使用EuroMillions彩票的历史数据作为示例,使用Python和Matplotlib库来创建一个简单的走势图。可以在以下网站搜索.csv文件。…

基于SSM的剧本杀预约系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

Promise与async/await的简单介绍

在 JavaScript 中,处理异步操作一直是开发者们面临的挑战之一。传统的回调函数方式往往导致代码难以维护、可读性差、易产生回调地狱等问题。为了解决这些问题,出现了 Promise 和 Async/Await 这两种处理异步操作的方式。 一、异步产生问题示例 当我们…

6.4 U-boot 移植

一、ST 官方 U-boot 编译测试 1. ST 官方 uboot 源码打补丁 1.1 获得 ST 官方的 uboot 源码 https://www.cnblogs.com/toutiegongzhu/p/17578847.html 这里可以看如何下载uboot源码。解压完后输入以下命令: cd stm32mp1-openstlinux-5.4-dunfell-mp1-20-06-24/s…

什么是图片懒加载(image lazy loading)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

区块链媒体宣发:揭示优势与趋势,引领信息传播新时代

在数字化潮流中,区块链技术正以惊人的速度改变着传媒行业的格局。从区块链媒体宣发中获得的种种优势和未来的趋势,不仅为企业带来了新的推广途径,也在信息传播领域掀起了一场革命。本文将深入探讨区块链媒体宣发的优势以及未来的发展趋势。 1…

一款基于ESP32的迷你四足机器人

一、软件介绍 增加自定义动作模式,可以在小程序中自定义一个最多10个步骤的动作。 附件中:带自定模式固件bin.zip esp32c3固件文件 烧录下图设置 无串口版本esp32c3开发板烧录前先按住BOOT键再插线进入烧录模式,LoadMode选择USB。 二、AP…

计算机毕业设计 SpringBoot的医院门诊在线挂号系统 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

shiro反序列化漏洞复现

shiro反序列化漏洞复现 文章目录 shiro反序列化漏洞复现版本安装环境漏洞利用流量分析 版本 550 仅需要一个url 721 需要一个账号 安装环境 先配置国内源 安装docker apt-get install docker 安装docker-compose apt-get install docker-compose 拉取镜像 docker pull …

二分查找|滑动窗口|前缀和|LeetCode209: 长度最小的子数组

长度最短的子数组 作者推荐 【动态规划】【广度优先】LeetCode2258:逃离火灾 本文涉及的基础知识点 二分查找算法合集 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 滑动窗口 题目 给定一个含有 n 个正整数的数组和一个正整数 target…

Python开发运维:Python项目发布到K8S集群

目录 一、实验 1.Python项目发布到K8S集群 一、实验 1.Python项目发布到K8S集群 (1)获取应用程序代码 #把hello-python.tar.gz压缩包上传到k8s控制节点master1的root下,手动解压 tar zxvf hello-python.tar.gz (2&#xff0…

智能外呼有什么好处?

智能外呼是一种自动化的电话营销方式,利用AI智能外呼技术和大量数据分析,帮助企业实现与客户之间的高效、精准、个性化的客户沟通,还可以在客户服务、市场营销和销售等方面带来助力。那么,智能外呼有什么好处呢? 1. 提…

elasticsearch|大数据|elasticsearch低版本集群的部署安装和安全增强---密码设置问题

一, 版本问题 elasticsearch的高低版本划分标准为6.3,该版本之前的为低版本,6.3版本之后的包括6.3为高版本,这么划分主要是在安全性方面也就是x-pack插件的使用部署方面,低版本需要手动安装该安全插件,而…

【网络协议】LACP(Link Aggregation Control Protocol,链路聚合控制协议)

文章目录 LACP名词解释LACP工作原理互发LACPDU报文确定主动端确定活动链路链路切换 LACP和PAgP有什么区别?LACP与LAG的关系LACP模式更优于手动模式LACP模式对数据传输更加稳定和可靠LACP模式对聚合链路组的故障检测更加准确和有效 推荐阅读 LACP名词解释 LACP&…

同位素二氧化碳数据记录软件

同位素二氧化碳数据记录软件用于实现同位素二氧化碳分析仪数据的获取与存档,阀箱数据的获取、记录以及阀箱的远程操作,数据的FTP上传等功能。其主操作界面如下: 软件的左侧为操作目录区域,实现显示界面的切换和连接操作及其状态指…

GPIO的使用--USART串口通信--传感器控制数据

目录 一、串口通信 1、概念 2、原理图 3、使用步骤 (1)寻找串口位置 (2)确定引脚编号 (3)编写代码 4、实验结果 实验代码 main.c usart.c usart.h 一、串口通信 1、概念 串行接口是一种可以将…

Spring 面向切面编程(AOP)

一、aop介绍 (一)前言 一般的后端开发流程是纵向开发,就是controller(控制层)->service(业务层)->mapper(数据持久层),Spring采用动态代理技术可以在…

flstudio21.3.2304高级版水果编曲音乐软件

flstudio高级版是一款适用于广泛领域的音频编辑软件。它支持多通道混音器和VST插件,包括数百种乐器和效果插件。它还为您提供了一个乐谱编辑器,需要对不同乐器的节奏进行必要的编辑。Flstudio具有许多内置电子合成声音,可提供更广泛的电子声音…

基于STM32的四位数码管计数器设计与实现

✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进, 代码获取、问题探讨及文章转载可私信。 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。 🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!…

2024年网络安全竞赛-数字取证调查attack817

​ 数字取证调查 (一)拓扑图 服务器场景:FTPServer20221010(关闭链接) 服务器场景操作系统:未知 FTP用户名:attack817密码:attack817 分析attack.pcapng数据包文件,通过分析数据包attack.pcapng找出恶意用户第一次访问HTTP服务的数据包是第几号,将该号数作为Flag值…