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

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

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

相关文章

计网 - TCP扫盲

文章目录 知识点TCP头格式TCP有限状态机(FSM)为何需要TCP协议TCP的定义TCP连接的概念如何唯一确定一个TCP连接TCP vs UDPTCP拥塞控制TCP流量控制 导图 知识点 TCP头格式 TCP头部包含多个字段,其中一些是必需的,而另一些是可选的…

MySQL笔记-第18章_MySQL8其它新特性

视频链接:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 文章目录 第18章_MySQL8其它新特性1. MySQL8新特性概述1.1 MySQL8.0 新增特性1.2 MySQL8.0移除的旧特性 2. 新特性1:窗口函数2.1 使用窗口…

数据结构实验任务八:排序算法的实现与分析

问题描述 统计成绩:给出 n 个学生的考试成绩表,每条信息由姓名和分数组成,试设 计一个算法: 1.按分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同 一名次; 2.按名次列出每个学生…

性能优化 vue2/vue3 通过CDN 减少项目启动时间

其实更多可以通过压缩图片等文件大小 也会让项目运行快一些 以及尽量使用异步或者懒加载 使用CDN可以避免在项目中使用npm导入Vue的依赖项&#xff0c;从而减少项目启动时的加载时间 使用方法如下 <!-- Vue 2 --> <script src"https://cdn.jsdelivr.net/npm/vue…

解码大语言模型奥秘:《大规模语言模型:从理论到实践》震撼上市!

2022年11月&#xff0c;ChatGPT的问世展示了大模型的强大潜能&#xff0c;对人工智能领域有重大意义&#xff0c;并对自然语言处理研究产生了深远影响&#xff0c;引发了大模型研究的热潮。 距ChatGPT问世不到一年&#xff0c;截至2023年10月&#xff0c;国产大模型玩家就有近2…

(1)(1.7) HOTT telemetry

文章目录 前言 1 布线和设置 2 参数说明 前言 Plane-4.0.0&#xff08;及更高版本&#xff09;、Copter-4.0.4&#xff08;及更高版本&#xff09;和 Rover-4.1.0&#xff08;及更高版本&#xff09;支持 Graupner HOTT 遥测技术。 1 布线和设置 与自动驾驶仪的连接可通过…

小间距LED显示屏的芯片扮演的关键角色

LED屏幕由数万颗灯珠封装而成&#xff0c;包含驱动芯片、PCB板、电阻、电容、模组套件和箱体等&#xff0c;形成一块高清LED显示屏。芯片的质量直接影响整个屏幕的品质、稳定性和性能。那么&#xff0c;什么是细间距LED显示屏&#xff1f;小间距LED显示屏芯片具体有何作用呢&am…

react-router-dom v6中优雅处理404重定向问题

在基于React的单页面应用&#xff08;SPA&#xff09;中&#xff0c;使用 react-router-dom 库来管理路由是一项关键任务。当用户访问一个不存在的页面时&#xff0c;我们通常希望能够以优雅的方式处理404情况&#xff0c;从而提升用户体验。本文将探讨如何在React应用中使用re…

OpenAI 承认 ChatGPT 最近确实变懒,承诺修复问题

文章目录 一. ChatGPT 指令遵循能力下降引发用户投诉1.1 用户抱怨回应速度慢、敷衍回答、拒绝回答和中断会话 二. OpenAI 官方确认 ChatGPT 存在问题&#xff0c;展开调查三. OpenAI 解释模型行为差异&#xff0c;回应用户质疑四. GPT-4 模型变更受人事动荡和延期影响 一. Chat…

【小沐学Python】Python实现语音识别(Whisper)

文章目录 1、简介1.1 whisper简介1.2 whisper模型 2、安装2.1 whisper2.2 pytorch2.3 ffmpeg 3、测试3.1 命令测试3.2 代码测试&#xff1a;识别声音文件3.3 代码测试&#xff1a;实时录音识别 4、工具4.1 WhisperDesktop4.2 Buzz4.3 Whisper-WebUI 结语 1、简介 https://gith…

Python 自动化之修理excel文件(二)

批量合成excel文档Pro版 文章目录 批量合成excel文档Pro版前言一、做成什么样子二、基本架构三、库输入模块四、用户输入模块五、数据处理模块1.获取当前目录的文件信息2.创建Workbook实例对象3.遍历entries列表4.获取Excel文件的工作表信息5.命名和写入数据 六、数据输出模块1…

IEEE期刊论文模板

一、模板下载 1、登陆IEEE作者中心Author Center 地址&#xff1a;Publish with IEEE Journals - IEEE Author Center Journals 2、点击“Download a template” 3、在弹出的模板下载页面点击IEEE模板选择器“IEEE Template Selector” 4、在弹出的模板选择器页面点击“Tran…

分支预测失败的处理

由于现代的超标量处理器采用了很多预测的方法来执行指令,并不是流水线中所有的指令都可以退休(retire),例如当流水线中的某条分支指令发生了预测错误,或者某条指令发生了异常&#xff0c;那么在这条指令之后进入流水线的所有指令就不允许退休了&#xff1b; 此时需要将这些指令…

翻译: LLM大语言模型图像生成原理Image generation

文本生成是许多用户正在使用的&#xff0c;也是所有生成式人工智能工具中影响最大的。但生成式人工智能的一部分兴奋点也在于图像生成。目前也开始出现一些可以生成文本或图像的模型&#xff0c;这些有时被称为多模态模型&#xff0c;因为它们可以在多种模式中操作&#xff0c;…

代码随想录算法训练营第四十二天|背包问题理论基础、01背包理论基础(滚动数组)、416. 分割等和子集

代码随想录算法训练营第四十二天|背包问题理论基础、01背包理论基础&#xff08;滚动数组&#xff09;、416. 分割等和子集 背包问题理论基础 背包问题理论基础 文章讲解&#xff1a;https://programmercarl.com/%E8%83%8C%E5%8C%85%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%8001%E…

谈谈常用的分布式ID的设计方案?

典型回答 首先&#xff0c;我们需要明确通常的分布式ID定义&#xff0c;基本的要求包括&#xff1a; 全局唯一&#xff0c;区别于单点系统的唯一&#xff0c;全局是要求分布式系统内唯一。 有序性&#xff0c;通常都需要保证生成的ID是有序递增的。例如&#xff0c;在数据库存…

iframe 与主应用页面之间如何互相通信传递数据

背景 当我们的Web页面需要复用现有网站的页面时&#xff0c;我们通常会考虑代码层面的抽离引用&#xff0c;但是对于一些过于复杂的页面&#xff0c;通过 iframe 嵌套现有的网站页面也是一种不错的方式&#xff0c;。目前我就职的项目组就有多个业务利用 iframe 完成业务的复用…

QT 基础篇

目录 QPushButton QT帮助文档 QT 对象树 QPushButton QPushButton是Qt图形界面控件中的一种&#xff0c;看英文的意思&#xff0c;他就是按钮&#xff0c;是最基本的图形控件之一。在我们的最基本的项目中&#xff0c;运行: 是一个空白的窗体&#xff0c;里面什么也没有&am…

在Node.js中使用MongoDB连接数据库、创建集合

本文主要介绍在Node.js中使用MongoDB连接数据库、创建集合的方法。 目录 连接数据库使用原生驱动程序连接MongoDB数据库使用Mongoose连接MongoDB数据库 创建集合使用mongodb驱动程序 连接数据库 在Node.js中使用MongoDB连接数据库有两种方式&#xff1a;使用原生驱动程序和使用…

静态HTTP应用的性能优化技巧

在Web开发中&#xff0c;静态HTTP应用以其简单、快速和安全的特点受到了广泛欢迎。然而&#xff0c;随着Web应用的规模不断扩大&#xff0c;性能问题也日益突出。本文将为你介绍一些静态HTTP应用的性能优化技巧&#xff0c;让你的应用飞得更快、更稳定。 一、压缩文件 文件压…