文章目录
- [一、 创建数据库](#一、 创建数据库)
- [二、 数据库创建案例](#二、 数据库创建案例)
- [三、 字符集校验规则](#三、 字符集校验规则)
-
- [1. 查看系统默认字符集以及校验规则](#1. 查看系统默认字符集以及校验规则)
- [2. 查看数据库支持的字符集](#2. 查看数据库支持的字符集)
- [3. 查看数据库支持的字符集校验规则](#3. 查看数据库支持的字符集校验规则)
- [4. 校验规则对数据库的影响](#4. 校验规则对数据库的影响)
- [四、 操纵数据库](#四、 操纵数据库)
-
- [1. 查看数据库](#1. 查看数据库)
- [2. 显示创建语句](#2. 显示创建语句)
- [3. 修改数据库](#3. 修改数据库)
- [4. 数据库删除](#4. 数据库删除)
- [5. 查看连接情况](#5. 查看连接情况)
一、 创建数据库
语法:
sql
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: 指定数据库字符集的校验规则
如果你在创建的时候没有手动指明数据库的编码格式和校验规则,那MySQL会默认采用配置文件中设置好的编码格式和校验规则
二、 数据库创建案例
默认的编码格式和校验规则
如果我们采用默认的编码格式和校验规则的话,我们可以直接使用以下指令创建一个名字叫db1_的数据库,该数据库采用的就是默认的编码格式和校验规则。
sql
create database db1_;
可以看到在创建之前是没有db_这个数据库的,在执行完create database db1_; 命令后就新创建了一个db1_的数据库
指定编码格式
在创建数据库的时候利用charset指明编码格式即可,例如:
sql
create database db2_ charset=utf8;
注意: SQL中的charset=utf8,也可以写成character set=utf8或character set utf8。
指定编码格式和校验规则
在创建数据库的时候利用charset指明编码格式同时利用collate指明校验规则即可。
sql
create database db3_ charset=utf8 collate=utf8_general_ci;
注意: SQL中的collate=utf8_general_ci,也可以写成collate utf8_general_ci。
三、 字符集校验规则
1. 查看系统默认字符集以及校验规则
利用下面的指令可以得到数据库默认的编码格式:
sql
show variables like 'character_set_database';
注意: 如果在某一个确定的数据库中使用这条指令,看到的是该数据库采用的编码格式
利用下面的指令可以得到数据库默认的校验规则:
sql
show variables like 'collation_database';
注意: 如果在某个确定的数据库中使用这条指令,得到的是该数据库的校验规则。
2. 查看数据库支持的字符集
利用以下指令可以查看数据库支持的字符集
sql
show charset;
字符集主要是控制用什么语言。比如utf8就可以使用中文。
3. 查看数据库支持的字符集校验规则
通过以下指令可以查看数据库支持的字符集校验规则:
sql
show collation;
4. 校验规则对数据库的影响
编码格式决定的是数据在内存中是如何存的,校验规则决定的是数据库内部按什么规则进行操作。
举几个例子比如说:我们这里建立两个数据库,采用不同的校验规则,看看具体的效果。
- 先创建一个不区分大小写的
创建一个数据库,校验规则使用utf8_ general_ ci[不区分大小写]
依次执行下面几条指令,注意一条一条执行,不要复制粘贴一起执行。
sql
create database db1_ collate utf8_general_ci;
sql
use db1_;
sql
create table person(name varchar(20));
sql
insert into person values('a');//一个;执行一次,别一起粘贴
insert into person values('A');
insert into person values('b');
insert into person values('B');
- 再创建一个区分大小写的
创建一个数据库,校验规则使用utf8_ bin[区分大小写]
sql
create database db2_ collate utf8_bin;
sql
use db2_;
sql
create table person(name varchar(20));
sql
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');
- 进行查询
不区分大小写的查询以及结果
sql
use db1_;
select * from person where name='a';
select * from person where name='B';
我们可以看到,我们搜索小写的'a',但是它却把大写的和小写的都搜出来了,
我们搜索大写的'B',但是它却把大写的和小写也的都搜出来了。
区分大小写的查询以及结果
sql
use db2_;
select * from person where name='a';
select * from person where name='B';
我们可以看到,我们搜索小写的'a',就只搜出来小写的,
我们搜索大写的'B',就只搜出来大写的
- 结果排序
不区分大小写排序以及结果:
sql
use db1_;
select * from person order by name;
可以看到aA挨在一起,bB挨在一起
区分大小写排序以及结果:
sql
use db2_;
select * from person order by name;
可以看到区分大小写的话就分开了,比较的方式是按ascll码比的。
四、 操纵数据库
1. 查看数据库
使用show databases
可以查看系统中所有的数据库:
如:
2. 显示创建语句
使用show create database 数据库名
可以查看对应数据库的创建语句。
如:
- MySQL建议SQL中的关键字使用大写,但不是必须的。
- 数据库的名字加上反引号,是为了防止使用的数据库名与关键字冲突。
- /*!40100 DEFAULT CHARACTER SET utf8 */不是注释,它表示当前MySQL版本如果大于4.10,则执行后面的SQL语句。
3. 修改数据库
sql
ALTER DATABASE db_name [[DEFAULT] CHARSET=character_name] [[DEFAULT] COLLATE=collation_name];
- 对数据库的修改主要指的是修改数据库的字符集或校验规则。
比如将数据库的字符集改为gbk,并将数据库的校验规则改为gbk_bin。
4. 数据库删除
sql
DROP DATABASE [IF EXISTS] db_name;
例如删除数据库db1_
删除数据库后,该数据库下的所有表也都会被删除,因此不要随意删除数据库。
5. 查看连接情况
使用show processlist
即可查看当前连接MySQL的用户。
如:
- Id列:一个标识,可以在MySQL中通过kill id杀死指定id的线程。
- User列:显示当前用户,如果不是root,这个命令就只显示你权限范围内的SQL语句。
- Host列:显示这个语句是从哪个IP的哪个端口上发出的,可用来追踪出问题语句的用户。
- db列:当前执行的命令是在哪一个数据库上,如果没有指定数据库,则该值为NULL。
- Command列:显示当前连接执行的命令,一般就是休眠(Sleep)、查询(Query)和连接(Connect)。
- Time列:表示该线程处于当前状态的时间,单位是秒。
- State列:显示使用当前连接的SQL语句的状态。
- Info列:一般记录的是线程执行的语句,默认只显示前100个字符,如果要看全部信息,需要使用show full processlist。
可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。