【MySQL】MySQL库的操作

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来查看数据库连接情况。

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

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

相关文章

HarmonyOS第一课ArkTS开发语言(TypeScript快速入门)

编程语言介绍 ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript(简称TS)的基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发跨端应用。要了解什么是ArkTS&…

C语言:高精度乘法

P1303 A*B Problem - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 第一次画图&#xff0c;略显简陋。 由图可以看出c的小标与x,y下标的关系为x的下标加上y的下标再减一。 由此得到&#xff1a; c [ i j - 1 ] x [ i ] * y [ j ]x #include<stdio.h> #include<st…

(第67天)RMAN Duplicate 克隆 PDB

介绍 在之前 NONCDB 版本我们经常使用 RMAN Duplicate 方式来在线搭建 DataGuard,非常方便快捷。从 12C 开始 Oracle 推出了 CDB 架构后,自然也就支持使用 Duplicate 的方式来复制 CDB,但是 12C 时还没有那么智能。 从 18C 开始进行了升级,可以支持使用 RMAN Duplicate 方…

react-webApp--响应式布局

rem响应式布局 移动端响应式布局 1.自己实现&#xff0c;需要设计好初始换算比&#xff0c;设为100px方便计算 <meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum-scale1.0, minimum-scale1.0, user-scalableno"/> <…

爬虫学习日记第九篇(爬取seebug)

目标&#xff1a;https://www.seebug.org/vuldb/vulnerabilities 需求&#xff1a;爬取cve_id及影响组件 单线程 cookie是有时效的(过一段时间就不行了&#xff0c;大概半小时左右)&#xff0c;但是并不需要登录(直接抓包拿到的请求头) import base64 import json import ur…

持续集成交付CICD:通过API方式上传Nexus制品

目录 一、实验 1.通过API方式上传Nexus制品 二、问题 1.如何通过API方式上传PNG图片 2.如何通过API方式上传tar.gz 与 ZIP文件 3.如何通过API方式上传Jar file文件 4.如何通过API方式上传制品&#xff08;maven类型的制品&#xff09;文件 5.如何下载制品 一、实验 1.通…

flink找不到隐式项

增加 import org.apache.flink.streaming.api.scala._ 即可

C语言 联合体验证 主机字节序 +枚举

联合体应用&#xff1a;验证当前主机的大小端&#xff08;字节序&#xff09; //验证当前主机的大小端 #include <stdio.h>union MyData {unsigned int data;struct{unsigned char byte0;unsigned char byte1;unsigned char byte2;unsigned char byte3;}byte; };int main…

在Vue2中使用MarkDown编辑器输入(mavonEditor)

在开发一些需求如博客系统时&#xff0c;原始的文本框不满足我们的需求&#xff0c;展示word文档的格式又太麻烦吗&#xff0c;不难想到使用markdown的格式来输入和展示内容。本文介绍了在Vue2中怎么使用markdown格式的输入框和展示框。 先看一下实现的效果 官方文档 我们使用…

投资3-5万元的小本生意有什么?

现在想做点生意&#xff0c;真的好难。随便开个小店&#xff0c;房租、水电、装修这些加起来&#xff0c;就投资10w往上了。 我这还没开始赚钱呢&#xff0c;就已经投进去这么多钱了&#xff0c;万一生意不好亏本了&#xff0c;可该怎么办&#xff1f; 其实这是很多人面临的问…

PP材料粘接ABS材料使用UV胶的好处?

跟随着现阶段材料的不断发展更迭&#xff0c;PP材料应用越来越广&#xff0c;生产效率要求越来越高&#xff0c;为了加快生产&#xff0c;提高效率&#xff0c;PP材料的粘接上使用UV胶粘接PP&#xff08;聚丙烯&#xff09;和ABS&#xff08;丙烯腈-丁二烯-苯乙烯共聚物&#x…

STM32-TIM定时器中断

目录 一、TIM&#xff08;Timer&#xff09;定时器简介 二、定时器类型 2.1基本定时器结构 2.2通用定时器结构 2.3高级定时器结构 三、定时中断基本结构 四、时序图分析 4.1 预分频器时序 4.2 计数器时序 4.3 计数器无预装时序&#xff08;无影子寄存器&#xff09; …

静态HTTP应用的未来趋势与展望

随着互联网的快速发展&#xff0c;静态HTTP应用作为一种简单、快速和安全的Web应用形式&#xff0c;已经得到了广泛的应用。然而&#xff0c;随着技术的不断进步和创新&#xff0c;静态HTTP应用也在不断发展和变化。下面&#xff0c;我们就来谈谈静态HTTP应用的未来趋势和展望。…

腾讯云 - 日志服务(CLS)Bug 体验官

问题描述 最近在学习日志服务&#xff0c;发现了腾讯云上面一款CLS产品&#xff0c;致力于解决日志采集分析&#xff0c;刚开始用的时候感觉还不错&#xff0c;但是发现当创建第二个日志主题的时候发现不对劲了&#xff0c;前一个竟然失效了&#xff0c;排查了老半天也没发现啥…

dockerfile创建镜像lnmp

dockerfile创建镜像 LNMPwordpress nginx 172.111.0.10 docker-nginx mysql 172.111.0.20 docker-mysql php 172.111.0.30 docker-php systemctl stop firewalld setenforce 0 cd /opt mkdir nginx mysql php cd nginx/ 拖进去 nginx wordpress vim Dockerfile #声明基…

电动工具调速控制电路芯片GS016 GS069的芯片描述

GS016 直流有刷电机调速电路。输出端内置14V钳位结构&#xff0c;通过桥接内部电阻网络&#xff0c;可以改变PWM占空比输出&#xff0c;达到控制电机转速作用。采用SOP14封装形式 GS069 直流有刷电机调速电路。通过外接电阻网络&#xff0c;改变与之相接的VMOS管的输出&#x…

外发加工ERP软件功能有哪些?外发加工ERP系统哪家好

不同的外发加工业务有不同的业务流程和管理策略与方式&#xff0c;在当前这个激烈竞争的时代&#xff0c;如何降低经营成本&#xff0c;打通各种信息流&#xff0c;优化资源配置和降低成本&#xff0c;提升生产过程联动效率&#xff0c;加强企业核心竞争力管理等&#xff0c;是…

【Database】什么是数据库?常见的数据库类型有哪些?

什么是数据库&#xff1f;常见的数据库类型有哪些&#xff1f; 首先&#xff0c;什么是数据库&#xff1f;把它想象成一个数字游乐场&#xff0c;我们以结构化的方式组织和存储大量信息。现在&#xff0c;让我们来谈谈数据库的主要类型。 关系型数据库&#xff1a; 想象一下…

已经写完的论文怎么降低查重率 papergpt

大家好&#xff0c;今天来聊聊已经写完的论文怎么降低查重率&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff1a; 已经写完的论文怎么降低查重率 背景介绍 在学术界&#xff0c;论文的查重率是评价论文质量的…

静态路由原理与配置

文章目录 静态路由原理与配置一、路由器的工作原理1、路由概述2、路由器的工作原理 二、路由表的形成1、路由表2、路由表的形成 三、静态路由和默认路由1、静态路由的缺点2、默认路由&#xff08;是特殊的静态路由&#xff09;3、查看路由表 四、路由器转发数据包的封装过程五、…