MySQL库的操作

文章目录

MySQL库的操作

创建数据库

创建数据库

创建数据库的SQL如下:

CREATE DATABASE [IF NOT EXISTS] db_name [[DEFAULT] CHARSET=charset_name] [[DEFAULT] COLLATE=collation_name];

说明一下:

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

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

创建数据库案例

采用默认的编码格式和校验规则创建数据库

创建数据库时不指明数据库的编码格式和校验规则即可。如下:

MySQL库的操作

注意: 如果没有对MySQL的配置文件进行过修改,则默认的编码格式是utf8,默认的校验规则是utf8_general_ci。

指定utf8编码格式创建数据库

创建数据库时通过charset指明数据库的编码格式即可。如下:

MySQL库的操作

注意: SQL中的charset=utf8,也可以写成character set=utf8或character set utf8。

指定utf8编码格式和utf8_general_ci校验规则创建数据库

创建数据库时通过charset和collate分别指明数据库的编码格式和校验规则即可。如下:

MySQL库的操作

注意: SQL中的collate=utf8_general_ci,也可以写成collate utf8_general_ci。

; 字符集和校验规则

查看系统默认字符集以及校验规则

查看系统默认的字符集

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

MySQL库的操作

注意: 如果是在指定数据库下使用该SQL,则查看的是该数据库对应的字符集。

查看系统默认的字符集校验规则

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

MySQL库的操作

注意: 如果是在指定数据库下使用该SQL,则查看的是该数据库对应的字符集校验规则。

; 查看数据库支持的字符集

查看数据库支持的字符集

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

MySQL库的操作

说明一下: 字符集主要是控制用什么语言,比如utf8就可以使用中文。

查看数据库支持的字符集校验规则

查看数据库支持的字符集校验规则

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

MySQL库的操作

; 校验规则对数据库的影响

字符集编码格式和字符集校验规则的区别

  • 字符集编码格式指的是在存储数据时各个字符的底层编码,用于指定数据的存储格式。
  • 字符集校验规则是在字符集内用于比较字符的一套规则,用于对数据进行比对。

比如我们存储数据的时候是按照utf8的格式进行存储的,那么将来在对数据做比对时也必须按照utf8的格式进行比对,因为”存数据”和”取数据”的方式必须保持一致。

注意: 在对数据库当中的数据进行增删查改时,不可避免的需要进行数据的比对,因为在对数据做增删查改之前,都需要先通过比对的方式找到目标数据。

校验规则对数据库的影响

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

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

操作数据库时采用utf8_general_ci校验规则

创建数据库时指定数据库的校验规则为utf8_general_ci,数据库的编码格式默认为utf8。如下:

MySQL库的操作

在该数据库中创建一个简单的person表,由于创建未指定表的编码格式和校验规则,因此person表将继承当前数据库的编码格式和校验规则。如下:

MySQL库的操作

这时向表中插入一些数据。如下:

MySQL库的操作

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

MySQL库的操作

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

MySQL库的操作

操作数据库时采用utf8_bin校验规则

创建数据库时指定数据库的校验规则为utf8_bin,数据库的编码格式默认为utf8。如下:

MySQL库的操作

在该数据库中同样创建和刚才一样的person表,该person表会将继承当前数据库的编码格式和校验规则。如下:

MySQL库的操作

这时向表中插入刚才相同的数据。如下:

MySQL库的操作

通过select语句可以看到表中的数据与之前相同。如下:

MySQL库的操作

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

MySQL库的操作

操纵数据库

查看数据库

查看数据库

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

MySQL库的操作

; 显示创建语句

显示创建语句

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

MySQL库的操作

说明一下:

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

修改数据库

修改数据库

修改数据库的SQL如下:

ALTER DATABASE db_name [[DEFAULT] CHARSET=character_name] [[DEFAULT] COLLATE=collation_name];

说明一下:

  • 对数据库的修改主要指的是修改数据库的字符集或校验规则。

比如将数据库的字符集改为gbk,并将数据库的校验规则改为gbk_bin。如下:

MySQL库的操作

删除数据库

删除数据库

删除数据库的SQL如下:

DROP DATABASE [IF EXISTS] db_name;

删除数据库后该数据库对应的文件夹就被删除了。比如:

MySQL库的操作

并且删除数据库后,该数据库下的所有表也都会被级联删除,因此不要随意删除数据库。

备份和恢复

数据库的备份和恢复

数据库备份

使用如下命令即可对指定数据库进行备份:

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

为了演示数据库备份,下面我们创建一个数据库,并在该数据库中创建两个表。如下:

MySQL库的操作

在student表中插入两条记录。如下:

MySQL库的操作

在teacher表中也插入两条记录。如下:

MySQL库的操作

这时在命令行中执行如下命令即可将该数据库进行备份,并指定将备份后产生的文件存放在当前目录下。如下:

MySQL库的操作

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

MySQL库的操作

数据库恢复

使用如下命令即可对指定数据库进行恢复:

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

为了演示数据库恢复,我们先将刚才创建的数据库删除。如下:

MySQL库的操作

这时让MySQL服务器执行如下命令即可对数据库进行恢复。如下:

MySQL库的操作

实际恢复数据库的时候就是按顺序执行数据库备份文件中的SQL语句,执行完毕后数据库也就恢复出来了。如下:

MySQL库的操作

同时该数据库下的两张表,以及表当中的数据也都恢复出来了。如下:

MySQL库的操作
表的备份和恢复

表备份

使用如下命令即可对指定表进行备份:

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

比如在上述数据库中除了student和teacher表之外,还有其他的表。如下:

MySQL库的操作

如果只想备份数据库中的student表和teacher表,这时就可以在命令行中执行如下命令,并指定将备份后产生的文件存放在当前目录下。如下:

MySQL库的操作

这时历史上与student和teacher表相关的SQL语句,就会被保存到备份文件当中。如下:

MySQL库的操作

表恢复

表恢复之前需要先选中一个数据库,表明需要将表恢复到哪一个数据库中,为了防止恢复出来的表与该数据库中已有的表的表名重复,一般在恢复表时会选择创建一个空的数据库,然后在该数据库中进行表的恢复。

在数据库中使用如下命令即可对指定表进行恢复:

source 表备份存储的文件路径

为了演示表恢复,我们先将刚才的数据库删除。如下:

MySQL库的操作

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

MySQL库的操作

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

MySQL库的操作

查看连接情况

查看连接情况

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

MySQL库的操作

说明一下:

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

Original: https://blog.csdn.net/chenlong_cxy/article/details/128103773
Author: 2021dragon
Title: MySQL库的操作

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/795186/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • SpringBoot系列之数据库初始化-datasource配置方式

    在我们的日常业务开发过程中,如果有db的相关操作,通常我们是直接建立好对应的库表结构,并初始化对应的数据,即更常见的情况下是我们在已有表结构基础之下,进行开发; 但是当我们是以项目…

    Python 2023年10月9日
    063
  • 【前沿技术RPA】 一文了解 UiPath 状态机 State Machine

    🐋作者简介:博主是一位.Net开发者,同时也是RPA和低代码平台的践行者。🐬个人主页:会敲键盘的肘子🐰系列专栏:UiPath🦀专栏简介: UiPath在传统的RPA(Robotic…

    Python 2023年10月9日
    061
  • Django数据表无法创建,无报错(最终办法)

    真的想强烈谴责以下django的model创建数据库,就这个问题在我学习过程中反复出现且没有固定的解决办法。 写完之后发现我用的方法是有点舍近求远了,如果就一个表的话不如直接在数据…

    Python 2023年8月4日
    085
  • Dubbo-Adaptive实现原理

    前言 前面我们已经分析Dubbo SPI相关的源码,看过的小伙伴相信已经知晓整个加载过程,我们也留下两个问题,今天我们先来处理下其中关于注解Adaptive的原理。 什么是@Ada…

    Python 2023年10月23日
    030
  • Python之Flask框架(一)

    1.安装flask框架 在自己python的环境下直接通过pip安装,不写版本会默认最新版本,安装同时安装其他的库,属于flask的依赖包。 pip install flask 2…

    Python 2023年8月12日
    044
  • 实际应用Supervisor部署Flask项目

    1. 什么是supervisor superviosr是一个Linux/Unix系统上的进程监控工具,他/她upervisor是一个Python开发的通用的进程管理程序,可以管理和…

    Python 2023年8月14日
    059
  • 一篇文章带你掌握主流办公框架——SpringBoot

    🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡 进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯…

    Python 2023年8月11日
    060
  • django-中间件

    1.django中间件的5个方法 process_request(self,request)process_view(self, request, callback, callba…

    Python 2023年6月11日
    061
  • Python读写excel文件

    1 、使用 pandas 库读取 Excel —– 最常用 pandas 可以读取各种各样格式的数据文件,一般输出dataframe 格式。 如:txt 、…

    Python 2023年8月8日
    049
  • 一起学Pandas系列基础篇—loc和iloc

    一起学Pandas系列基础篇—loc和iloc 一起学Pandas系列基础篇—loc和iloc 一起学Pandas系列基础篇—loc和iloc 本篇学习内容…

    Python 2023年8月8日
    071
  • python字典输出到csv_Python将一个字典列表写入csv

    4 个答案: 答案 0 :(得分:3) pandas提供了一种非常直观的方式来考虑迭代字典列表。因为列表中的每个元素都是dict,可以很容易地转换为pandas.DataFrame…

    Python 2023年8月20日
    042
  • python入门基础(6)–语句基础(if语句、while语句)

    一、if语句 if 语句让你能够检查程序的当前状态,并据此采取相应的措施。if语句可应用于列表,以另一种方式处理列表中的大多数元素,以及特定值的元素1、简单示例 names=[‘x…

    Python 2023年5月24日
    070
  • docker使用详解

    一、docker简介 docker 是一个开源的应用容器引擎,docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器…

    Python 2023年6月9日
    076
  • CSS 排行榜

    以下是一个使用 HTML 和 创建侧边 的示例代码: html</p> <p>样式 */ .sidebar { width: 200px; backgrou…

    Python 2023年11月8日
    038
  • pandas rolling方法_如何使用多列参数调用pandas.rolling.apply?

    定义自己的roll 我们可以创建一个接受窗口大小参数w和任何其他关键字参数的函数。我们使用它来构建一个新的DataFrame,在其中,我们将调用groupby,同时通过kwargs…

    Python 2023年8月7日
    057
  • python处理几十g的数据_Python数据处理(持续更新)

    打开txt文件 打开txt文件 with open(‘day02.txt’) as f:for line inf.readlines(): aline=li…

    Python 2023年8月7日
    055
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球