「前言」文章内容大致是数据库的基本操作
「归属专栏」MySQL
「主页链接」个人主页
「笔者」枫叶先生(fy)
「枫叶先生有点文青病」「句子分享」
哪里会有人喜欢孤独,不过是不喜欢失望罢了。
——村上春树《挪威的森林》
目录
- 一、创建/查看数据库
- 二、删除数据库
- 三、数据库字符集和数据库校验规则
- 四、校验规则对数据库的影响
- 五、修改数据库
- 六、数据库的备份和恢复
- 七、查看数据库连接情况
一、创建/查看数据库
创建数据库语法:
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,create_specification] ...]
create_specification
的选项:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
说明:
db_name
是创建数据库的名字- 大写的表示关键字
- [] 是可选项,可以选择不写
- CHARACTER SET: 指定数据库采用的字符集
- COLLATE: 指定数据库字符集的校验规则
查看所有的数据库:
show databases;
[IF NOT EXISTS]
的意思是,如果数据库存在就不创建,数据库不存在就创建。例如创建已经存在的 test
数据库
create database if not exists test;
或者 create database test; // 直接创建
如果不存在则创建
create database if not exists test1;
数据库被创建本质上就是在/var/lib/mysql/
下创建一个目录
二、删除数据库
语法:
DROP DATABASE [IF EXISTS] db_ name;
db_name
是创建数据库的名字- [] 是可选项,可以选择不写
执行删除之后的结果:
- 数据库内部看不到对应的数据库
- 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
- 数据库被删除本质上就是在
/var/lib/mysql/
下删除一个目录
注意:不要随意删除数据库,尽量是对不需要的数据库进行重命名备份即可
三、数据库字符集和数据库校验规则
创建名为 db1 的数据库
create database db1;
说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8
,校验规则
是:utf8_ general_ ci
,即MySQL配置文件/etc/my.cnf
里面设置的,如果我们自己指定字符集或校验规则,则不会使用系统默认的字符集和校验规则时。
我们自已也可以指定创建创建一个使用utf8
字符集的 db2 数据库
create database db2 charset=utf8;
或者 create database db2 CHARACTER SET utf8
也可以带创建一个使用utf
字符集,并带校对规则utf8_general_ci
的 db3 数据库
create database db3 charset=utf8 collate utf8_general_ci;
什么是字符集和校验规则??
- 字符集就是编码集,数据库用于表示和存储数据
- 校验规则是一种用于检测和验证数据完整性的方法,数据库在比较字段的时候需要用到的编码(读取数据、比较数据)
数据库库无论对数据做任何操作,都必须保证编码格式是一致的
查看系统默认字符集(当前数据库)(MySQL配置文件/etc/my.cnf
里面设置的)
show variables like 'character_set_database';
查看系统默认校验规则(当前数据库)
show variables like 'collation_database';
查看数据库支持的字符集,字符集主要是控制用什么语言。比如utf8就可以使用中文
show charset;
查看数据库支持的字符集校验规则
每一种校验规则都匹配一种字符集,比如utf8_general_ci
检验规则匹配的字符集是utf8
四、校验规则对数据库的影响
不区分大小写
创建一个数据库,校验规则使用utf8_ general_ ci[不区分大小写]
create database test1 charset=utf8 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');
在该数据库的目录下,db.opt
文件就是存放该库的编码规则
cat /var/lib/mysql/test1/db.opt
查看表的信息
查找字符 a
select * from person where name='a';
a
和A
都被查出来了,说明检验规则utf8_general_ci
不区分大小写
区分大小写
创建一个数据库,校验规则使用utf8_ bin[区分大小写]
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');
在该数据库的目录下,db.opt
文件就是存放该库的编码规则
查找字符 a
,只有符合条件的被查出来的,说明检验规则utf8_bin
区分大小写
五、修改数据库
显示创建数据库时的语句
show create database 数据库名;
说明:
- MySQL 建议我们关键字使用大写,但是不是必须的。
- 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
/*!40100 default.... */
这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话,如果小于就不执行
修改数据库
语法:
ALTER DATABASE db_name [alter_spacification [,alter_spacification]...]
alter_spacification
选项:
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
- 大写的表示关键字
- [] 是可选项,可以选择不写
说明:对数据库的修改主要指的是修改数据库的字符集,校验规则
例如,将test2
的字符集gbk
alter database test1 charset=gbk collate gbk_chinese_ci;
注意:现在的数据库不支持修改数据库名字,以前支持
六、数据库的备份和恢复
备份
语法
mysqldump -P3306 -u root -p -B 数据库名 > 数据库备份存储的文件路径
注:> 是输出重定向
例如,将test1
库备份到文件,需要退出mysql连接
mysqldump -P3306 -uroot -p -B test1 > /home/fy/mysql/test1.sql
vim 打开看一下,该数据的有效操作+数据全部备份了
还原
语法:
source 备份的文件(路径)
注:> 是输出重定向
把test1
删除,进行测试
进行还原test1
,在连接mysql下操作
source /home/fy/mysql/test1.sql;
查看数据库,数据已经恢复
注意事项:
如果备份的不是整个数据库,而是其中的一张表
mysqldump -uroot -p 数据库名 表名1 表名2... > 备份的文件(路径),如:/mytest.sql
同时备份多个数据库
mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据
库,再使用source来还原。
七、查看数据库连接情况
语法:
show processlist;
可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况
--------------------- END ----------------------
「 作者 」 枫叶先生
「 更新 」 2023.7.7
「 声明 」 余之才疏学浅,故所撰文疏漏难免,
或有谬误或不准确之处,敬请读者批评指正。