【MySQL】库的操作

🏠个人主页:Yui_

🍑操作环境:Centos7

🚀所属专栏:MySQL

文章目录

  • [1. 创建一个数据库](#1. 创建一个数据库)
    • [1.1 创建一个数据库(演示](#1.1 创建一个数据库(演示)
  • [2. 字符集和校验规则](#2. 字符集和校验规则)
    • [2.1 字符集](#2.1 字符集)
    • [2.2 校验规则](#2.2 校验规则)
    • [2.3 知识补充:)](#2.3 知识补充:))
  • [3. 操作数据库](#3. 操作数据库)
    • [3.1 基础指令](#3.1 基础指令)
    • [3.2 使用数据库](#3.2 使用数据库)
    • [3.3 修改数据库](#3.3 修改数据库)
      • [3.3.1 知识补充:)](#3.3.1 知识补充:))
    • [3.4 数据库删除](#3.4 数据库删除)
  • [4. 数据的备份与恢复](#4. 数据的备份与恢复)
    • [4.1 错误的备份方法:(](#4.1 错误的备份方法:()
  • 5.总结

1. 创建一个数据库

MySQL是一个数据库管理系统,在其中我们可以创建许多的数据库,数据库中中又可以存储许多的表。

如下图所示:

用户通过MySQL来创建数据库,下面是创建数据的语法:

SQL 复制代码
CREATE database [IF NOT EXISTS] 数据库名字 [create_specification [,create_specification]...]

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

注意:

  1. 大写的字符都是MySQL中的关键字(在创建的时候,可以不大写,这里不区分大小写,个人喜欢小写,主要大写不好认(bushi))
  2. \]内的内容都是可以省略的,所以最简单的写法就是这样:

create database 数据库名字

复制代码
3. CHARACTER SET:指定数据库采用的字符集(本文下面讲\~)
4. COLLATE:指定数据库字符集的校验规则(本文下面讲\~)

### 1.1 创建一个数据库(演示

```sql
create database if not exists SpringThings;

创建成功,if not exists的作用是什么呢>

如果创建的数据库已经存在就不会创建,并发出警告,当我们不加if not exists就会报错,当然数据也不会创建。也就是说if not exists是一种比较温和的检查方式。

继续看演示:

2. 字符集和校验规则

2.1 字符集

字符集大家都知道吧,想gbkutf-8都是字符集,其底层也就是用一个唯一的二进制数来代表一个字符,不同的字符集可能对应的二进制数代表的字符不同。最早的字符集是ASCII码表,其大小只有一个字节,只能表示256个字符。

MySQL默认的字符集是什么呢?这个就要去看配置文件了,在Linux下文件应该是存储在/etc/my.cnf里面的,来看看里面的配置吧。

我的MySQL里面配置的是utf8

还有一种方法就是在MySQL的命令行中输入:

sql 复制代码
show variables like 'character_set_database';

既然有默认的字符集,那么也就表示字符集是可以选择,MySQL中支持哪些字符集呢?

想要知道这个答案,只需要执行,下面这个命令即可:

sql 复制代码
show charset;

2.2 校验规则

这里的校验规则主要是针对字符的大小写,且是和字符集有关系的。

查看数据库支持的校验规则:

sql 复制代码
show collation;

由于支持的校验规则太多,就不截图了:(

在数据库中,一种字符集可以有多种校验规则。

比如现在我查看MySQL的默认校验规则

sql 复制代码
show variables like 'collation_database';

它还要这些校验规则:

关于校验规则对大小写的约束,我们来看下面的例子:

我们会用到的字符集是utf8,校验规则为utf8_bin(区分大小写)和utf8_general_ci(不区分大小写)

我在数据库中创建了一个表并插入了一些数据,目前读者不需要了解~

还记得我们的校验规则吗,不区分大小写那个~

居然都搜索出来吗...你这家伙。符合预期。

再创建一个数据库指定另一个校验规则:

sql 复制代码
create database if not exists collate utf8_bin;

这样就区分大小写了~

2.3 知识补充:)

在上面的数据库创建,就是这个:

sql 复制代码
create database if not exists collate utf8_bin;

我只是指定了校验规则,并没有指定字符集,MySQL能知道我的字符集吗?

答案是可以的,虽然我们MySQL设置的默认字符集就是utf8但是即使我们设置其他默认字符集,MySQL依然可以自动推导出来,同理当你只指定了字符集MySQL也可以自动推测出校验规则~

不过要注意,你给的字符集和校验规则一定要是MySQL支持的,可不能自己随便写一个的。

3. 操作数据库

3.1 基础指令

  1. 查看MySQL下的所有数据库(记得+'s')
sql 复制代码
show databases;
  1. 显示创建语句
sql 复制代码
show create database 数据库名字;

说明:

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

3.2 使用数据库

在我们对一个数据库进行操作前,要先指定使用这个数据库。

sql 复制代码
use 数据库名

3.3 修改数据库

语法:

sql 复制代码
ALTER DATABASE 数据库名
[alter_spacification [,alter_spacification]...]

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

其实我们对数据库的修改就是修改数据库的字符集和校验规则。

sql 复制代码
alter database SpringThings charset=gbk;

3.3.1 知识补充:)

其实我们啊还可以在文件里面来查看数据库的字符集,进入/var/lib/mysql

然后我们进入你想要查看的数据库,cat db.opt

3.4 数据库删除

语法:

sql 复制代码
DROP DATABASE [IF EXISTS] 数据库名字

我们可以先创建一个临时的数据库,然后演示删除:

注意:

不要轻易删除库,一旦数据库被删除,里面的所有数据啊,表啊就全部消失了。

也是变成了传说中的删库跑路

4. 数据的备份与恢复

库被删了难道就没有办法了吗?其实还是有救的,前提是你备份了的话:)

备份的语法:

sh 复制代码
mysqldump -u 用户 -p -P 端口 -B 待备份的数据库 > 目标路径(含目标文件)

这里我们就先把SpringThings备份了

注意:如果该数据库正在被使用,需要先断开连接。

sh 复制代码
nysqldump -u root -p -P 8000 -B SpringThings > /root/MySQL/SpringThings.sql


注意:此处博主没有加-B选项,后续需要先创建数据库,然后再恢复!最好的方法就是加-B

然后我们删除该库

下面开始恢复。

恢复的语法:

sql 复制代码
SOURCE 路径

在恢复前,我们再看看路径文件里备份文件的内容吧。

还真是朴实无华啊,就是以前执行过的sql语句

注意:前面博主没有加-B选项,后续需要先创建数据库,然后再恢复!最好的方法就是加-B,所以这里其实是恢复失败了

恢复的语法就是如此,大家快去试试吧~

4.1 错误的备份方法:(

主播主播,这个备份操作还是太难写了,有没有更简单的方法。

有的有的,直接复制你需要备份的数据库然后打包,等以后需要的时候解压即可------吗?

这种方法严重不推荐 ,原因是恢复时可能会出现问题,假设恢复至版本更低的 MySQL 中,会出现各种奇怪的问题,毕竟老版本没有新特性,还有就是这种做法太暴力了

5.总结

在数据库中,创建数据库是最开始的一步,本文向读者介绍了库的创建,然后通过数据库的创建语法引导出数据库的字符集和校验规则,然后就是对数据库进行操作比如查看、修改等操作,最后就是数据的备份与恢复。


往期文章:
【MySQL】数据库基础-CSDN博客

相关推荐
光电大美美-见合八方中国芯15 分钟前
【平面波导外腔激光器专题系列】1064nm单纵模平面波导外腔激光器‌
网络·数据库·人工智能·算法·平面·性能优化
泷羽Sec-pp26 分钟前
DC-9靶机通关笔记
linux·运维·网络·笔记·docker·容器
鬼才血脉34 分钟前
Ubuntu上安装MySQL 8并配置Navicat远程连接
mysql·ubuntu·adb
时序数据说41 分钟前
通过Linux系统服务管理IoTDB集群的高效方法
大数据·linux·运维·数据库·开源·时序数据库·iotdb
CopyLower1 小时前
解决 Redis 缓存与数据库一致性问题的技术指南
数据库·redis·缓存
多多*1 小时前
分布式ID设计 数据库主键自增
数据库·sql·算法·http·leetcode·oracle
我爱夜来香A1 小时前
SQL进阶:如何把字段中的键值对转为JSON格式?
数据库·sql·json
micromicrofat1 小时前
mongodb升级、改单节点模式
数据库·mongodb
SamHou02 小时前
从 UEFI 启动到双系统——记一次双系统 Linux 分区迁移
linux·windows·grub
阳光男孩啊2 小时前
五、Linux系统之vim编辑器
linux·运维·编辑器·vim