目录
创建数据库
创建数据库案例
字符集和校验规则
查看系统默认字符集以及校验规则
查看数据库支持的字符集
查看数据库支持的字符集校验规则
校验规则对数据库的影响
操纵数据库
查看数据库
显示创建语句
修改数据库
数据库删除
备份和恢复
备份
还原
注意事项
查看连接情况
创建数据库
在 MYSQL 中,可以使用 CREATE DATABASE 语句创建数据库,语法格式如下:
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: 指定数据库字符集的校验规则
创建数据库案例
- 创建名为 db1 的数据库;在 MySQL 命令行客户端输入 SQL 语句
CREATE DATABASE db1;
即可创建一个数据库,输入的 SQL 语句与执行结果如下。
create database db1;
“Query OK, 1 row affected (0.12 sec);”提示中,“Query OK”表示上面的命令执行成功,“1 row affected”表示操作只影响了数据库中一行的记录,“0.12 sec”则记录了操作执行的时间。
说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_general_ ci
注意:若再次输入CREATE DATABASE db1;
语句,则系统会给出错误提示信息,提示不能创建“test_db”数据库,数据库已存在。MySQL 不允许在同一系统下创建两个相同名称的数据库。可以加上IF NOT EXISTS
从句,就可以避免类似错误
- 创建一个使用utf8字符集的 db2 数据库
create database db2 charset=utf8;
- 创建一个使用utf字符集,并带校对规则的 db3 数据库。
create database db3 charset=utf8 collate utf8_general_ci;
字符集和校验规则
首先来了解一下什么是字符集和校规则,字符集是一套符合和编码,校验规则(collation)是在字符集内用于比较字符的一套规则,即字符集的排序规则。MySQL可以使用对种字符集和检验规则来组织字符。
MySQL服务器可以支持多种字符集,在同一台服务器,同一个数据库,甚至同一个表的不同字段都可以指定使用不同的字符集,相比oracle等其他数据库管理系统,在同一个数据库只能使用相同的字符集,MySQL明显存在更大的灵活性。
每种字符集都可能有多种校对规则,并且都有一个默认的校对规则,并且每个校对规则只是针对某个字符集,和其他的字符集么有关系。
Unicode(Universal Code)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。Unicode存在不同的编码方案,包括Utf-8,Utf-16和Utf-32。Utf表示Unicode Transformation Format。
使用建议
- 为了方便数据迁移、以及多种终端展示,最好是utf8
- 非常肯定只有中文终端用户时,可选择gbk / gb2312
- 字符无需区分大小写时,采用默认的xx_ci校验集可以,否则选择xx_bin校验集
- 默认字符集是latin1,该字符集存放汉字是分开存放,以至于检索结果时不够精确,好处就是节省空间,不推荐使用
查看系统默认字符集以及校验规则
输入:
show variables like 'character_set_database';
show variables like 'collation_database';
输出:
查看数据库支持的字符集
输入:
show charset;
输出:
字符集主要控制用什么语言。比如utf8就可以使用中文。
查看数据库支持的字符集校验规则
输入:
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');
- 进行查询
use test1;
select* from person where name='a';
结果排序
use test1;
select* from person order by name;
运行结果:
区分大小写
创建一个数据库,校验规则使用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 test2;
select* from person order by name;
操纵数据库
查看数据库
数据库可以看作是一个专门存储数据对象的容器,每一个数据库都有唯一的名称,并且数据库的名称都是有实际意义的,这样就可以清晰的看出每个数据库用来存放什么数据。在 MySQL 数据库中存在系统数据库和自定义数据库,系统数据库是在安装 MySQL 后系统自带的数据库,自定义数据库是由用户定义创建的数据库。
在 MySQL 中,可使用 SHOW DATABASES 语句来查看或显示当前用户权限范围以内的数据库。查看数据库的语法格式为:
show databases[LIKE ’数据库名'];
- 数据库名由单引号
' '
包围。 - LIKE 从句是可选项,用于匹配指定的数据库名称。LIKE 从句可以部分匹配,也可以完全匹配。
输出:
可以发现,在上面的列表中有 7个数据库,它们有的是安装 MySQL 时系统自动创建的,其各自功能如下:
- information_schema:主要存储了系统中的一些数据库对象信息,比如用户表信息、列信息、权限信息、字符集信息和分区信息等。
- mysql:MySQL 的核心数据库,类似于 SQL Server 中的 master 表,主要负责存储数据库用户、用户访问权限等 MySQL 自己需要使用的控制和管理信息。常用的比如在 mysql 数据库的 user 表中修改 root 用户密码。
- performance_schema:主要用于收集数据库服务器性能参数。
- sys:MySQL 5.7 安装完成后会多一个 sys 数据库。sys 数据库主要提供了一些视图,数据都来自于 performation_schema,主要是让开发者和使用者更方便地查看性能问题。
使用LIKE语句
1) 使用 LIKE 从句,查看与 test_db 完全匹配的数据库:
2) 使用 LIKE 从句,查看名字中包含 test 的数据库:
mysql> SHOW DATABASES LIKE '%test%';
3) 使用 LIKE 从句,查看名字以 db 开头的数据库:
mysql> SHOW DATABASES LIKE 'db%';
4) 使用 LIKE 从句,查看名字以 db 结尾的数据库:
mysql> SHOW DATABASES LIKE '%db';
显示创建语句
输入:
show create database 数据库名;
输出:
说明:
- MySQL 建议我们关键字使用大写,但是不是必须的。
- 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字。
- /*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话。
修改数据库
在 MySQL 中,可以使用 ALTER DATABASE 来修改已经被创建或者存在的数据库的相关参数。修改数据库的语法格式为:
ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
说明:
- 对数据库的修改主要指的是修改数据库的字符集,校验规则
- ALTER DATABASE 用于更改数据库的全局特性。
- 使用 ALTER DATABASE 需要获得数据库 ALTER 权限。
实例:将mytest数据库字符集改成gbk
alter database test1 charset=gbk;
show create database test1;
输出:
数据库删除
当数据库不再使用时应该将其删除,以确保数据库存储空间中存放的是有效数据。删除数据库是将已经存在的数据库从磁盘空间上清除,清除之后,数据库中的所有数据也将一同被删除。
要删除已创建的数据库时,可以使用 DROP DATABASE 语句。其语法格式为:
DROP DATABASE [IF EXISTS] db_ name;
语法说明:
- <数据库名>:指定要删除的数据库名。
- IF EXISTS:用于防止当数据库不存在时发生错误。
- DROP DATABASE:删除数据库中的所有表格并同时删除数据库。使用此语句时要非常小心,以免错误删除。如果要使用 DROP DATABASE,需要获得数据库 DROP 权限。
执行删除之后的结果:
- 数据库内部看不到对应的数据库
- 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
注意:MySQL 安装后,系统会自动创建名为 information_schema 和 mysql 的两个系统数据库,系统数据库存放一些和数据库相关的信息,如果删除了这两个数据库,MySQL 将不能正常工作。
备份和恢复
尽管采取了一些管理措施来保证数据库的安全,但是在不确定的意外情况下,总是有可能造成数据的损失。例如,意外的停电,不小心的操作失误等都可能造成数据的丢失。
所以为了保证数据的安全,我们需要定期对数据进行备份。如果数据库中的数据出现了错误,就需要使用备份好的数据进行数据还原,这样可以将损失降至最低。(这里仅了解一下,后面详细操作讲解)
备份
语法:
mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
示例:将mytest库备份到文件(退出连接)
mysqldump -P3306 -u root -p123456 -B mytest > D:/mytest.sql
这时,可以打开看看 mytest.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据语句都装载这个文件中。
还原
语法:
mysql> source D:/mysql-5.7.22/mytest.sql;
注意事项
- 如果备份的不是整个数据库,而是其中的一张表,怎么做?
mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql
- 同时备份多个数据库
mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
- 如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。
查看连接情况
语法:
show processlist
示例:
可以告诉我们当前有那些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能是被别人入侵了,以后大家发现自己数据库比较慢的时候,可以用这个指令来查看数据库连接情况。