【MySQL】库的基础操作

🌎库的操作

文章目录:

库的操作

    创建删除数据库

    数据库编码集和校验集

    数据库的增删查改

      数据库查找

      数据库修改

    备份和恢复

    查看数据库连接情况

    总结


前言 :

  数据库操作是软件开发中不可或缺的一部分,掌握数据库基本操作也是每个程序员必备的技能。


🚀创建删除数据库

 创建数据库语法:

sql 复制代码
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,create_specification] ...]

create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
  •  IF NOT EXITS 选项:表示如果你的系统里没有同名的数据库则创建之。
  •  CHARACTER SET 选项: 指定数据库采用的字符集
  •  COLLATE 选项: 指定数据库字符集的校验规则

  '\[\]' 的内容表示可选项,可以选择也可以不选择。而 数据库本质上是目录文件。

  一个数据库不想要了,那么就需要删除它,我们使用以下SQL语句删除数据库:

sql 复制代码
DROP DATABASE [IF EXISTS] db_ name;
  •  IF EXITS 选项:如果库里存在该指定的数据库则删除之,否则不执行。

  执行删除之后的结果将会是:数据库内部看不到对应的数据库,对应的文件夹全部删除,级联删除,数据表也全部删除。

  以上创建的数据库没有使用指定的 字符集 以及 校验规则 ,现今,我想创建一个数据库,并且数据库的 编码集指定为utf-8,那么我就该这么创建:

sql 复制代码
CREATE DATABASE db_name CHARSET=utf8; --指定创建的数据库字符集为utf-8字符集--

  这里我们创建的数据库就带上了utf8的字符集,现在我想创建一个新的库文件,该库不仅带有字符集,并且还需要带有 校验集,我们可以使用如下SQL语句创建:

sql 复制代码
CREATE DATABASE db_name CHARSET=utf8 collate utf8_general_ci; --指定创建的数据库字符集为utf-8字符集--

🚀数据库编码集和校验集

  在创建数据库的时候,我们最后在创建的时候带上了字符集和编码集,那么什么是字符集什么又是编码集呢?

  •  数据库编码集 :数据库未来存储数据所采用的编码集。
  •  数据库校验集 :支持数据库进行字段比较,使用的编码,本质也是一种读取数据库数据所采用的编码格式。

  而它们俩之间的关系:数据库无论对数据做任何操作,都必须保证操作和编码是编码一致的!

查看数据库默认字符集:

sql 复制代码
SHOW variables LIKE 'character_set_database';

查看数据默认校验规则:

sql 复制代码
SHOW variables LIKE 'collation_database';

查看全部字符集:

sql 复制代码
SHOW CHARSET;

查看全部校验集:

sql 复制代码
SHOW collation;

  而数据库为什么需要统一校验集编码集呢?其实不同的编码集和校验集对数据库的各种操作所影响的 结果 也就会不同,比如不同的校验集就可能导致数据在排序的时候得到的结果不同。


🚀数据库的增删查改

✈️数据库查找

  数据库的删除和添加我们在最开始已经说过了,而想要显示自己创建的数据库需要使用如下SQL指令:

sql 复制代码
SHOW CREATE DATABASE db_name;

注意:

  •  MySQL 建议我们关键字使用大写,但是不是必须的。
  •  数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
  •  /*!40100 default... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话

  我们创建数据库是为了将来能在数据库内部存储各种表结构的,但是这么多数据库我们如何对其中某一个数据库进行增加表的操作呢?我们使用如下SQL命令:

sql 复制代码
USE db_name; --切换数据库--

  其实切换数据库的操作在Linux当中就是cd 也就是进入到目录当中,因为只有进入到目录当中创建的文件才会在该目录下,数据库也是如此,必须先use切换到指定数据库,才能在库下创建各种表结构。

  有时候操作久了可能会忘记当前在那个数据库,我们可以使用如下面SQL指令来 查看正在使用哪个数据库:

sql 复制代码
SELECT DATABASE(); --查看当前所属哪个库--

✈️数据库修改

  数据库的增删查改现在只剩下修改数据库了,对数据库的修改我们可以使用如下SQL指令:

sql 复制代码
ALTER DATABASE db_name[alter_spacification [,alter_spacification]...]

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

  我们常说的对数据库的修改通常是指修改数据库的字符集、校验集。


🚀备份和恢复

  数据库存储着大量数据,而现代社会最重要的是什么?信息,所以为了保障信息安全,避免一些意外事件发生,有必要对数据库进行备份,而备份数据库到本地其实也很简单。在Linux系统下如果需要备份某个数据库可以使用如下指令:

bash 复制代码
mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径#将数据库重定向到某个路径下的文件

  这个备份文件里面长什么样子呢?不妨使用vim打开看看:

  而我们发现,.sql文件里面的内容其实是把我们对整个数据库的 创建数据库、建表以及导入数据的 语句 都装载在这个文件中了。

  我们把test1库重定向到Linux中,那么我就可以把这个文件发给有需要的人,有需要的人接收到文件之后,想要访问这个数据库那么该如何恢复数据库呢?我们可以使用如下SQL语句对 数据库文件进行恢复:

sql 复制代码
source /pathname/file.sql;

  最开始数据库里是没有test1库的经过恢复即可把sql文件加载进数据库。

  •  如果你需要备份的不是一个库,而是一张表,我们可以使用如下指令:
sql 复制代码
mysqldump -u root -p 数据库名 表名1 表名2 > /pathname/xxx.sql
  •  同时备份多个数据库:
sql 复制代码
mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
  •  如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。

🚀查看数据库连接情况

  如果你感觉你的数据库操作起来非常卡顿,你怀疑有别人连接了你的数据库,那么我们可以使用以下SQL语句来 查看数据库连接情况:

sql 复制代码
show processlist;

  这个SQL语句就可以告诉我们哪些用户连接了我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。


📒✏️总结

  •  本文简单说明了 数据库的增删查改 基本SQL语句及其选项。
  •  数据库 编码集 和 校验集 要一一对应,不同的编码集对一些特定的文字或符号有不同的识别方式,不同的校验集对一些数据操作的结果可能不同。
  •  为了保证数据安全问题,保证容灾性,所以有必要对重要的 数据库进行备份,备份与恢复的语句也在本文介绍。
  •  数据库安全是要放在首位 的,保证数据安全就要定期检测数据库连接的情况。

  本文到此结束,如果本文能帮到您的话还望三连支持啊~~

相关推荐
SelectDB9 小时前
让变更流出 Doris:Apache Doris 5.0 基于增量计算的 CDC 技术解析
数据库
这个DBA有点耶9 小时前
MCP隔离层+行级语义审计+输出校验:AI访问数据库的安全边界拆解
数据库·人工智能·ai编程
这个DBA有点耶10 小时前
从反向扫描O(n)到正向扫描O(1):降序索引的物理机制与混合排序匹配规则
数据库
2501_9339232511 小时前
解读Redis:单线程模型
数据库·redis·缓存
Tapdata13 小时前
被忽略的第三类上下文:Agent 进入真实业务后,还缺什么?
数据库·人工智能·架构
小科先生14 小时前
Java springboot调用数据库的基本流程
java·数据库·spring boot
星恒随风14 小时前
MySQL 从零入门(四):表的增删改查与基础查询详解
linux·服务器·数据库·笔记·mysql
Pniubi16 小时前
MySQL靠什么实现事务的?事务隔离级别有哪些?
java·数据库·mysql
数据库小学妹16 小时前
pgbouncer 事务池:prepared statement、临时表与会话状态
数据库·后端·postgresql
aiks_yuan16 小时前
MySQL 死锁怎么排查:看懂 INNODB STATUS 死锁日志,先查后插为什么必死锁(MySQL 8.2 实测)
mysql