- 创建一个库名为db1的数据库
create database db1;
当我们创建数据库没有指定字符集和校验规则时,系统使⽤默认字符集:utf8,校验规则是:utf8_ general_ ci
如果想要明确指定字符集和校验规则,可以使用 charset和collate来指定。
例1:创建一个使用utf8字符集的db2数据库
create database db2 charset=utf8;
例2:创建⼀个使⽤utf字符集,并带校对规则的 db3 数据库
create database db3 charset=utf8 collate utf8_general_ci
上边已经说了系统默认的字符集和校对规则,但毕竟眼见为实,所以我们可以查看系统默认的字符集和校对规则。
- 查看系统默认字符集和校对规则:
show variables like 'character_set_database';
show variables like 'collation_database';
数据库支持的字符集和校对规则当然不止这么点,具体有哪些,我们可以通过命令查看。
- 查看数据库支持的字符集:
show charset;
字符集有什么作用呢?
它可以控制用什么语言,比如utf8用的是中文,cp866用的是俄语。
- 查看数据库支持的字符集校验规则
show collation;
那校验规则对数据库又有什么影响呢?
我们可以观察下边的例子:
- 创建一个数据库,校验规则使用utf8_ general_ ci[不区分大小写]
create database t1 collate utf8_general_ci;
在t1数据库中创建一个person表:
use t1;
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');
- 创建一个数据库,校验规则使用utf8_bin[区分大小写]
create database t2 collate utf8_bin;
在t2数据库中创建一个person表:
use t2;
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');
- 现在对这两个数据库中的数据进行查询,这时就会体现出不同的校验规则有什么区别了(同样的查询条件,不同的查询结果)。
不区分大小写的查询:
mysql> use t1;
Database changed
mysql> select * from person where name = 'a';
区分大小写的查询:
mysql> use t2;
Database changed
mysql> select * from person where name = 'a';
- 对表中数据进行排序
不区分大小写进行排序
use t1;
select * from person order by name;
区分大小写进行排序:
use t2;
select * from person order by name;
- 查看都有哪些数据库:
show databases;
- 显示创建语句:
show create database db_name;
例:
修改数据库(alter)
对数据库的修改主要指的是修改数据库的字符集、校验规则。
- 将t1数据库字符集改为gbk
alter database t1 charset = gbk;
- 删除数据库
drop database t1;
删除数据库之后,在数据库内部看不到相应的数据库了,对应的数据库文件夹会被删除,里边的数据表也会全部被删。
- 查看数据库的连接情况
show processlist;
查看这个又有什么作用呢?
查看这个可以知道当前有哪些用户连接到我们的MySQL,如果查到有哪个用户不是你自己正常登陆的,很有可能就是你的数据库被人入侵了。