MySQL库的操作方法超详细讲解(ubuntu系统)

 更新时间:2025年10月06日 09:24:38   作者:景风~  
MySQL是一个功能强大的数据库管理系统,正确管理和维护MySQL对于确保数据库的稳定性和性能至关重要,这篇文章主要介绍了ubuntu系统下MySQL库的操作方法,文中通过代码介绍的非常详细,需要的朋友可以参考下

MySQL库的操作

创建数据库

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, 
create_specification] ...]
 create_specification:
 [DEFAULT] CHARACTER SET charset_name
 [DEFAULT] COLLATE collation_name

说明:

  • 大写的表示关键字
  • [] 是可选项
  • CHARACTER SET: 指定数据库采用的字符集
  • COLLATE: 指定数据库字符集的校验规则

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

创建数据库案例

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

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

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

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

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

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

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

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

字符集和校验规则

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

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

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

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

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

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

查看数据库支持的字符集

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

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

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

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

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

校验规则对数据库的影响

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

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

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

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

校验规则对数据库的影响

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

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

我们以两个库test1和test2来比对两种校验规则

不区分大小写用utf8mb4_ general_ ci

创建一个数据库test1,校验规则使用utf8_ general_ ci[不区分大小写]如下:

区分大小写用utf8mb4_ bin

创建一个数据库,校验规则使用utf8mb4_ bin[区分大小写]如下:

进行查询

  • 不区分大小写的查询以及结果

  • 区分大小写的查询以及结果

结果排序

  • 不区分大小写排序以及结果:

  • 区分大小写排序以及结果:

注:A的ASCII码为65,a的ASCII码值为97

操纵数据库

查看数据库

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

显示创建语句

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

说明一下:

  • MySQL建议SQL中的关键字使用大写,但不是必须的。
  • 数据库的名字加上反引号,是为了防止使用的数据库名与关键字冲突。
  • 80016指的是 MySQL 版本号:8.0.16。
  • /*!80016 DEFAULT ENCRYPTION='N' */不是注释,作用是告诉 MySQL 8.0.16+,建表时默认不开启表级加密;而低版本 MySQL 不支持表级加密,所以直接忽略。

修改数据库

ALTER DATABASE db_name
 [alter_spacification [,alter_spacification]...]
 alter_spacification:
 [DEFAULT] CHARACTER SET charset_name
 [DEFAULT] COLLATE collation_name

说明: 对数据库的修改主要指的是修改数据库的字符集,校验规则

比如将 db3 数据库字符集改成 gbk

删除数据库

删除数据库的SQL如下:

DROP DATABASE [IF EXISTS] db_name;

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

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

备份和恢复

数据库备份

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

sudo mysqldump -u root -S /var/run/mysqld/mysqld.sock helloworld > ~/back/helloworld.sql
  • mysqldump MySQL 官方“逻辑备份”工具,导出表结构 + 数据为可执行的 SQL。
  • -u root指定 MySQL 用户名为 root
  • -S /var/run/mysqld/mysqld.sock指定 UNIX Socket 文件连接 MySQL(免密登录,本机直连,不走 TCP)

1.创建目录

mkdir -p ~/back

家目录下就创建了一个back目录

back的拥有者和所属组都是root,后面重定向时用户无法读写该目录所以要修改权限

sudo chown -R "$USER":"$USER" ~/back
chmod u+rwx ~/back

这两条命令的作用就是把你家目录下的 back 文件夹(以及里面的内容)改成归你自己所有、并确保你自己有读写执行权限

2.进行备份

sudo mysqldump -u root -S /var/run/mysqld/mysqld.sock helloworld > ~/back/helloworld.sql

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

数据库恢复

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

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

# 1) 建库(MySQL 8.0 可用 0900 排序规则;若是 5.7/MariaDB 用 utf8mb4_general_ci)
sudo mysql -S /var/run/mysqld/mysqld.sock -e \
"CREATE DATABASE IF NOT EXISTS helloworld CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;"

# 2) 导入备份(把路径替换成你的绝对路径更稳妥)
sudo mysql -S /var/run/mysqld/mysqld.sock helloworld < /home/lzg/back/helloworld.sql

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

当然还有省事的办法

备份

sudo mysqldump -u root -S /var/run/mysqld/mysqld.sock -B helloworld > ~/back/helloworld.sql 

恢复

sudo mysql -S /var/run/mysqld/mysqld.sock < ~/back/helloworld.sql

查看连接情况

使用show processlistSQL即可查看当前连接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来查看数据库连接情况。

总结

到此这篇关于MySQL库的操作方法的文章就介绍到这了,更多相关ubuntu MySQL库的操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL-group-replication 配置步骤(推荐)

    MySQL-group-replication 配置步骤(推荐)

    下面小编就为大家带来一篇MySQL-group-replication 配置步骤(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • MySQL备份恢复最佳实践指北

    MySQL备份恢复最佳实践指北

    这篇文章主要介绍了MySQL备份恢复最佳实践的终极指南详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • 基于ubuntu中使用mysql实现opensips用户认证的解决方法

    基于ubuntu中使用mysql实现opensips用户认证的解决方法

    本篇文章小编为大家介绍,基于ubuntu中使用mysql实现opensips用户认证的解决方法。需要的朋友参考下
    2013-04-04
  • MySQL如何查询Binlog 生成时间

    MySQL如何查询Binlog 生成时间

    这篇文章主要介绍了MySQL如何查询Binlog 生成时间,通过读取 Binlog FORMAT_DESCRIPTION_EVENT header 时间戳来实现读取 Binlog 生产时间,本文给大家详细讲解,需要的朋友可以参考下
    2023-03-03
  • MySQL参数innodb_force_recovery详解

    MySQL参数innodb_force_recovery详解

    innodb_force_recovery是InnoDB存储引擎的一个重要参数,用于在数据库崩溃恢复时控制恢复行为的级别,下面就来详细的介绍一下,具有一定的参考价值,感兴趣的可以了解一下
    2025-07-07
  • mysql数据库修改添加Date格式列的方法

    mysql数据库修改添加Date格式列的方法

    这篇文章主要介绍了关于mysql数据库如何修改添加Date格式的列 ,需要的朋友可以参考下
    2014-07-07
  • 深入解析MySQL的窗口函数

    深入解析MySQL的窗口函数

    这篇文章主要介绍了深入解析MySQL的窗口函数,窗口可以理解为记录集合,窗口函数就是在满足某种条件的记录集合上执行的特殊函数,即:应用在窗口内的函数,需要的朋友可以参考下
    2023-07-07
  • MySQL中实施排序(sorting)及分组(grouping)常用操作方法

    MySQL中实施排序(sorting)及分组(grouping)常用操作方法

    在MySQL中实施排序与分组是数据查询中的常用操作,用以对结果集进行组织和概括,本文给大家介绍MySQL中实施排序(sorting)及分组(grouping)常用操作方法,感兴趣的朋友一起看看吧
    2025-09-09
  • mysql添加索引方法详解(Navicat可视化加索引与sql语句加索引)

    mysql添加索引方法详解(Navicat可视化加索引与sql语句加索引)

    索引用来快速地寻找那些具有特定值的记录,如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录,表里面的记录数量越多,代价就越高,下面这篇文章主要给大家介绍了关于mysql添加索引的相关资料,需要的朋友可以参考下
    2022-11-11
  • mysql中数据统计的技巧备忘录

    mysql中数据统计的技巧备忘录

    mysql是常用数据库,对于数字操作相关的东西相当方便,这篇文章主要给大家介绍了关于mysql中数据统计技巧的相关资料,非常具有实用价值,需要的朋友可以参考下
    2018-05-05

最新评论