二.MySQL库的操作

一.创建数据库create database 名称;

字符集和校验规则

一、字符集(Character Set)

  • 表示数据库中可以使用哪些字符。

  • 例如:utf8 可以存储包括中文在内的多种语言字符,gbk 更适合中文字符环境。

功能 举例
控制支持哪些语言字符 utf8 支持中文、英文、阿拉伯语;latin1 只支持西欧语言
控制存储空间 不同字符集一个字符占用字节不同,utf8 最多占 3 字节,utf8mb4 最多 4 字节,能支持 Emoji 表情
决定客户端/服务器之间的编码转换 保证数据传输时不乱码(客户端字符集要和服务器字符集兼容)

二、校验规则(Collation)

  • 表示如何对字符进行比较和排序。

  • 不同的校验规则可能决定是否区分大小写排序方式

    • utf8mb4_general_ci:ci 表示 case-insensitive不区分大小写。

    • utf8mb4_bin:bin 表示使用 二进制方式比较区分大小写

功能 示例 说明
是否区分大小写 utf8mb4_general_ci不区分,utf8mb4_bin区分 'a' = 'A' 是 true 还是 false
排序方式 utf8mb4_general_ci排序为 a, A, b, B,utf8mb4_bin排序为 A, B, a, b 根据不同规则,排序结果会不一样
性能优化 简单的校验规则(如 utf8mb4_general_ci)比复杂规则(如 utf8_unicode_ci)快 一般查询多的话用 general_ci;需要严格字符排序用 unicode_ci

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

复制代码
//查看默认字符集
show variables like 'character_set_database';
//查看默认校验规则
show variables like 'collation_database';

create database 名称; 像这样直接创建数据库就会用上默认的配置。

当前值 说明
utf8mb4 表示数据库使用了 UTF-8 的完整版本,支持 Emoji 等 4 字节字符
utf8mb4_general_ci 不区分大小写的通用校验规则,排序速度较快

2.查看数据库支持的字符集show charset;

3. 查看数据库支持的字符集校验规则show collation;

4.指定character set字符集和collate校验规则

create database 数据库名称 character set 字符集 collate 校验规则;

复制代码
//1.bin 区分大小写
create database b_bin character set utf8mb4 collate utf8mb4_bin;
//2.ci 不区分大小写
create database b_ci character set utf8mb4 collate utf8mb4_general_ci;

1.utf8mb4_bin bin 区分大小写的

2.utf8mb4_general_ci ci 不区分大小写

二.操纵数据库

1.查看数据库show databases;

查看现在创建的数据库有哪些

2.显示创建语句show create database 数据库名;

可以看出数据库的字符集和校验规则

CHARACTER SET utf8mb4 COLLATE utf8mb4_bin

3.修改数据库字符串集校验规则alter database (后面加指定的数据库及配置)

alter database b_bincharacter set gbk collategbk_chinese_ci;

4.删除数据库 drop database 数据库名称;

drop database b_bin;

执行删除之后的结果:

数据库内部看不到对应的数据库

对应的数据库文件夹被删除,级联删除,里面的数据表全部被删

三.数据库备份与修复

1.备份数据库 mysqldump -B

mysqldump -u 用户名 -p -B 数据库名(可以备份多个) > 备份文件路径.sql

1.mysqldump -u 用户名 -p 进入mysql客户端

2.-B选项:包含建库语句

.sql 文件 = 建库(-B) + 建表 + 插入数据 + 一些环境设置 + 注释

部分 内容说明
建库语句 CREATE DATABASE b_ci
建表语句 CREATE TABLE person
表字符集 utf8mb4, utf8mb4_general_ci
表数据 若你表有数据,备份时一定会包含 INSERT 语句
环境设置 SET NAMES utf8mb4, SET @OLD_...

2.还原数据库source .sql文件路径

source /var/lib/mysql/b_ci.sql

还原数据库,其实就是再执行一遍 .sql 文件里保存的 SQL 语句。

再理解-B选项:带了-B就会有创建数据库的指令 没带就需要先创建空数据库再source

如果是只是备份数据库中的部分表 一般不带-B

.sql 文件 ≈ SQL 脚本,source 命令 ≈ 执行脚本

复制代码
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| b1                 |
| helloworld         |
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
7 rows in set (0.00 sec)

mysql> source /var/lib/mysql/b_ci.sql
Query OK, 0 rows affected (0.00 sec)
....
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| b1                 |
| b_ci               |
| helloworld         |
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
8 rows in set (0.01 sec)

mysql> 

四.查看连接情况show processlist

show processlist;

相关推荐
看天走路吃雪糕12 分钟前
墨者:SQL注入漏洞测试(布尔盲注)
数据库·sql·sqlmap·墨者学院·布尔盲注
*愿风载尘*12 分钟前
ksql连接数据库免输入密码交互
数据库·后端
追风少年浪子彦14 分钟前
mybatis-plus实体类主键生成策略
java·数据库·spring·mybatis·mybatis-plus
溟洵18 分钟前
Qt 窗口 工具栏QToolBar、状态栏StatusBar
开发语言·前端·数据库·c++·后端·qt
problc42 分钟前
大模型API和秘钥获取地址
数据库·redis·缓存
Antonio91543 分钟前
【Redis】Linux 配置Redis
linux·数据库·redis
qq_463944862 小时前
如何把Excel文件导入Navicat?
数据库·excel
不太厉害的程序员2 小时前
Excel 将数据导入到SQLServer数据库
数据库·sqlserver·excel
betazhou3 小时前
MySQL ROUTER安装部署
android·数据库·mysql·adb·mgr·mysql router
埃泽漫笔4 小时前
MySQL - 索引(B+树)
mysql·b+树