文章目录
1. 创建数据库
1.1 创建数据库的格式
create database [if not exists] db_name [create_specification [, create_specification]...]
create_specification:
[default] character set charset_name
[default] collate collation_name
说明:
- []内是可选项
- character set:指定数据库采用的字符集(以下两个内容稍后解释)
- collate:指定数据库字符集的校验规则
1.2 创建数据库的例子
-
创建一个数据库,命名为db1
create database db1;
观察上述内容,可以发现如果使用mysql创建一个数据库,在对应的数据存储位置(这里是
/var/lib/mysql
)中,就会多一个以数据库名命名的目录,这里可以发现在mysql中创建数据库对应的底层操作就是创建一个文件夹,当然,反之也是可以的所以可以得出结论:创建数据库的本质就是在指定目录下创建一个目录
但是,一定不要直接操作这个文件夹,而是要通过MySQL客户端来操作
-
创建一个使用utf8字符集的db2数据库
create database db2 charset=utf8;
-
创建一个使用utf8字符集,并带校验规则的db3数据库
create database db3 charset=utf8 collate utf8_general_ci;
2. 字符集和校验规则
1. 什么是字符集和校验规则
- 字符集:数据库里将来会存放非常多的种类的数据,这些数据会以很多种形式存放,并且之后也会被取用,那么在我们存放和取用数据的时候,是需要对这些数据进行编码和解码的,这里编码方式就是由字符集确定的
- 校验规则:在数据库中,需要取用数据的时候可能会给要取用的数据加上条件,比如“取用满足xx条件的数据”,此时数据库软件就要内部对数据进行比对,这个比对就需要依赖校验规则
2. 查看默认的字符集和校验规则
show variables like 'character_set_database';
show variables like 'collation_database';
3. 查看支持的字符集和校验规则
show charset;
show collation;
4. 校验规则对数据库的影响
创建两个数据库,分别使用utf8_general_ci
(不区分大小写)和utf8_bin
(区分大小写)校验规则
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');
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');
- 分别进行查询看结果
use test1;
select * from person where name='a';
use test2;
select * from person where name='a';
- 分别进行排序看结果
use test1;
select * from person order by name;
use test2;
select * from person order by name;
3. 操作数据库
3.1 查看数据库
show databses; -- 查看当前机器上的存在的数据库
3.2 显示创建语句
show create database [db_name];
说明:
- MySQL建议我们关键字大写,但是不是必须的;
- 数据库名字的反引号是为了防止使用的数据库名和关键字冲突
/*40100 DEFAULT ...*/
不是注释,是表示当前MySQL版本大于4.01就执行这句话
3.3 修改数据库
alter database db_name
[alter_spacification [, alter_spacification]...]
alter_spacification:
[default] character set charset_name
[default] collate collation_name
说明:
- 一般来说,对数据库的修改主要是修改数据库的字符集和校验规则
3.4 删除数据库
drop database [if exists] db_name;
执行删除后的结果:
- 数据库客户端内部看不到对应的数据库
- 对应的数据库目录被删除(包括该目录下的所有表)
强烈建议,不要随意删除数据库
3.5 数据库备份和恢复
1. 备份
mysqldump -P[port] -u[username] -p[password] -B [db_name] > 备份的文件名
例如:
可以看到已经成功备份,接下来我们查看以下这个文件中的内容是什么
可以看到,去掉注释之后就是整个创建数据库、创建表、插入数据的过程,虽然和我们构建的sql语句不太一样,但是能够得到相同的数据库结果
2. 还原
source [数据库备份文件]
3. 注意事项
- 如果备份的不是整个数据库,而是备份其中的一张表
mysqldump -uroot -p 数据库名 表名1 表名2 > 备份文件
- 同时备份多个数据库
mysqldump -uroot -p -B 数据库1 数据库2 ... > 备份文件
- 如果在备份数据库时,没有带上
-B
参数,那么在恢复的时候就需要先创建空的数据库,再使用数据库,再用source
还原
3.6 查看数据库的连接情况
show processlist
可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况
本节完…
先创建空的数据库,再使用数据库,再用source
还原
3.6 查看数据库的连接情况
show processlist
可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况
本节完…