语法格式如下:
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
说明:
大写的表示关键字
(SQL指令是大小写忽略
的,小写也没问题);
[] 是可选项;
CHARACTER SET: 指定数据库采用的字符集
;
COLLATE: 指定数据库字符集的校验规则
;
db1
;create database db1
说明:
当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集
:utf8
,校验规则是:utf8_ general_ ci
。这由MySQL的配置文件决定。
配置文件
;cat /etc/my.cnf
utf8字符集
的 db2
数据库;create database db2 charset=utf8;
utf8字符集
,并带校对规则的 db3
数据库;create database db3 charset=utf8 collate utf8_general_ci;
系统默认字符集
以及校验规则
;show variables like 'character_set_database';
show variables like 'collation_database';
数据库支持的字符集
;show charset;
数据库支持的字符集校验规则
;show collation;
我们可以从下面这个示例中看出校验规则对数据库的影响。
utf8_ general_ ci
(不区分大小写);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');
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');
use test1;
select * from person where name='a';
use test2;
select * from person where name='a';
use test1;
select * from person order by name;
数据库中的字符集(Character Set)和字符集校验规则(Collation)是用于定义和管理数据库中文本数据存储和比较的重要设置。它们的作用如下:
字符集
(Character Set):
字符集校验规则
(Collation):
这些设置对数据库的正确性、性能和多语言支持非常重要。以下是一些具体作用:
数据完整性
:字符集和字符集校验规则有助于确保数据存储的一致性和正确性。它们防止了不同字符之间的混淆,确保数据正确存储和检索。
多语言支持
:不同语言使用不同的字符集和校验规则,因此数据库必须支持多种字符集和校验规则,以适应不同语言的数据。
搜索和排序
:字符集校验规则决定了文本数据的搜索和排序方式。它们确保文本数据按照正确的规则进行比较和排序,以获得正确的查询结果。
存储空间效率
:不同字符集和编码方式可以影响数据存储的空间效率。例如,某些字符集需要更多的存储空间来表示特定字符。
数据交互
:当与其他系统或应用程序进行数据交互时,字符集和字符集校验规则的一致性非常重要,以确保数据正确传输和解释。
总之,字符集和字符集校验规则是数据库中用于管理文本数据的关键设置,它们影响了数据的正确性、性能和多语言支持,因此在创建和维护数据库时需要特别注意。
show databases;
show create database 数据库名;
说明:
关键字
;不是注释
,表示当前mysql版本大于4.01
版本,就执行这句话;语法格式如下:
ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
修改数据库的字符集,校验规则
;案例——将test1数据库字符集改成gbk
alter database test1 charset=gbk;
语法格式如下:
DROP DATABASE [IF EXISTS] db_ name;
执行删除之后的结果:
文件夹被删除,级联删除
,里面的数据表全部被删
;语法格式如下:
$ mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
案例——将test1库备份到文件
首先退出mysql;
将test1
备份到 ./test1.sql
;
$ mysqldump -P3306 -u root -p -B test1 > ./test1.sql
test1.sql
文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中;$ cat ./test1.sql
test1
;drop database test1;
show databases;
source ./test1.sql;
show databases;
一张表
,怎么做?$ mysqldump -u root -p 数据库名 表名1 表名2 > 备份文件路径
多个数据库
;$ mysqldump -u root -p -B 数据库名1 数据库名2 ... > 备份文件路径
-B
参数, 在恢复数据库时,需要先创建空数据库
,然后使用数据库,再使用source
来还原;语法:
show processlist
可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。