MySQL——库的操作

库的操作

创建、删除数据库

语法

说明:

大写的表示关键字

\[\] 是可选项

CHARACTER SET: 指定数据库采用的字符集

COLLATE: 指定数据库字符集的校验规则

创建名为 database1 的数据库

create database db1;

不要了就可以删掉

创建数据库 :create database db_name;

删除数据库:drop database db_name;

创建数据库的时候,有两个编码集:

数据库编码集------数据库未来存储数据

数据库校验集------支持数据库,进行字段比较使用的编码,本质上也是一种读取数据库中数据的采用的编码格式

数据库无论对数据做任何操作,都必须保证操作和编码必须是编码一致的!

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

查看系统默认字符集

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

查看默认校验集

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

大部分的校验场景,采用的都是utf8的

查看数据库支持的字符集

sql 复制代码
show charset;

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

sql 复制代码
show collation;

创建一个使用utf8字符集的 db2 数据库

sql 复制代码
create database db2 charset=utf8;

创建一个使用utf字符集,并带校对规则的 db3 数据库。

sql 复制代码
create database db3 charset=utf8 collate utf8_general_ci;

校验规则对数据库的影响

创建一个数据库,校验规则使用utf8_ general_ ci不区分大小写

sql 复制代码
create database test1 collate utf8_general_ci;
use test1;
create table person(name varchar(20));
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');

查看一下数据库表

sql 复制代码
select * from person where name='a';

创建一个数据库,校验规则使用utf8_ bin区分大小写

sql 复制代码
create database test2 collate utf8_bin;
use test2;
create table person(name varchar(20));
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');

select * from person where name='a';

区分大小写的查询结果

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

sql 复制代码
use test1;
select * from person order by name;

区分大小写的排序结果:

数据库的删除

sql 复制代码
DROP DATABASE [IF EXISTS] db_ name;

执行删除之后的结果: 数据库内部看不到对应的数据库

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

不要随便删除数据库,一定要删的话最好做一下备份。

查看数据库

sql 复制代码
show databases;

我们查到了这个数据库,那么我们能不能直接使用这个数据库里边的内容呢?不能

要想使用这个数据库必须先

sql 复制代码
use db_name;

有的时候忘记自己现在在哪个数据库里边了,可以用database()函数

sql 复制代码
select database();

这个命令可以查看创建数据库时使用的命令

sql 复制代码
show create database test1;

修改数据库

sql 复制代码
ALTER DATABASE db_name

比如

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

改完就变成gbk了

库的备份与恢复

备份

语法

mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

bash 复制代码
mysqldump -P3306 -u root -p -B test1 > test1.sql

这时,可以打开看看 mytest.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。

然后我们把数据库中的test1删除

恢复

source 文件路径;

把我们曾经执行过的命令再执行一次

注意事项

如果备份的不是整个数据库,而是其中的一张表,怎么做?

mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql

同时备份多个数据库

mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径

如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据 库,再使用source来还原。

查看连接情况

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

sql 复制代码
show processlist;
相关推荐
风哥2号13 分钟前
数据库教程FGMT33‑MySQL主从复制项目实施与维护06(MySQL8.4/9.7 MGR组复制)
数据库·mysql
liangsheng_g25 分钟前
Spring事务传播行为分派与挂起恢复源码实战
数据库·sql·spring
蓝速科技39 分钟前
信创终端 POC 测试实战与选型避坑指南丨蓝速科技
运维·数据库·人工智能·科技·自然语言处理
风哥2号1 小时前
数据库教程FGMT29‑Linux平台MySQL5.7安装配置与管理入门
数据库
杨云龙UP1 小时前
MySQL Host is blocked because of many connection errors 导致 JDBC 连接失败排查与解决
linux·运维·网络·数据库·sql·mysql·登录失败
这个DBA有点耶3 小时前
数据库数据同步解决方案怎么选?6款主流工具横向对比与信创选型指南
数据库·架构·dba
刃神太酷啦3 小时前
Redis 核心进阶:哨兵、集群、缓存问题与分布式锁详解----《Hello Redis!》(6)
linux·c语言·数据库·c++·redis·分布式·缓存
小雷信息医学3 小时前
不会写复杂代码也能发 SCI?手把手教你用 InSpireR 交互系统一键提取、合并与导出临床科研宽表【第三章】
数据库
程序员梅雨3 小时前
MySQL底层探索(一):什么是脏页?什么是冷热分离?
mysql·面试
旺仔不是程序员4 小时前
复合索引最左前缀原则:PostgreSQL 的 WHERE 为什么必须命中第一列
数据库·后端·sql