文章目录
- mysql 库的操作
- 1. 创建数据库
- 创建数据库案例
- 2. 字符集和校验规则
- 查看系统默认的字符集合校验规则
- 查看数据库支持的字符集
- 查看数据库支持的字符集较验规则
- 校验规则对数据库的影响
- 3. 操作数据库
- 查看数据库
- 显示创建语句
- 修改数据库
- 删除数据库
- 查看数据库连接情况
mysql 库的操作
1. 创建数据库
创建数据库的指令:
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]
说明:
-
大写的表示关键字
-
[] 是可选项
-
CHARACTER SET: 指定数据库采用的字符集
-
COLLATE: 指定数据库字符集的校验规则
创建数据库案例
创建一个名为hellomysql的数据库
create database hellomysql;
注: sql语句后面都需要带 ;
可以看到我们数据hellomysql已经创建成功了,而实际上在mysql中创建一个数据库,实际上是在创建一个目录,而这些数据库文件都是放在我们自己所配置的路径下的;配置文件通常就是 ./etc/my.cnf下
下面是我的配置文件,可以看到我是将数据库文件默认存放在
/www/server/data
下的,我们切换到该路径下查看一下
可以看到在data目录下确实创建了我们的hellomysql目录,而实际上我们在数据库中创建一个表结构就是在当前数据库目录下创建一个文件
2. 字符集和校验规则
查看系统默认的字符集合校验规则
show variables like 'character_set_database';
show variables like 'collation_database';
说明:
- **character_set_database : ** 字符集合
- collation_database: 校验规则
从上面可以看出来:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_general_ ci
查看数据库支持的字符集
指令:
show charset;
注: 字符集主要是控制用什么语言。比如utf8就可以使用中文
查看数据库支持的字符集较验规则
sql语句:
show collation;
可以看到数据库支持的字符集校验规则还是十分多的
校验规则对数据库的影响
字符集编码格式和字符集校验规则的区别
- 字符集编码格式指的是在存储数据时各个字符的底层编码,用于指定数据的存储格式。
- 字符集校验规则是在字符集内用于比较字符的一套规则,作用就是对数据进行比对。
例如:我们存储数据时使用的格式是utf8,那么在对数据进行做对比时就也得按照utf8的格式进行对比,因为“存数据”和“取数据”的方式必须要保持一致
mysql中字符集和校验规则的对应关系
-
每个校验规则唯一对应一种字符集,但一个字符集可以对应多种校验规则,其中有一个是默认(Default Collation);
-
确定比较规则后,才能在一个字符集上定义什么是等价的字符,以及字符之间的大小关系;
校验规则对数据库的影响
命名惯例:以对应的字符集名称开头;以 _ci(表示大小写不敏感) 、_cs(表示大小写敏感)或_bin(表示按编码值比较)结尾
例子:
我们创建一个数据库,校验规则适用utf8_general_ci
而后适用use切换到当前数据库下(可以理解为cd 到test1 目录下),创建一个表结构,而后插入数据,如下:
查看表里面的数据
筛选名字为curry的数据
select * from person where name = 'curry' ;
我们发现查询结果是不区分大小的
而我们再创建一个数据库test2 校验规则为collate utf8_bin
create database test2 collate utf8_bin;
如下:
我们再像上面一样,先切换到数据库test2(要想在对应的数据库下创建表结构,都得先切换到该数据库下),再插入同样的数据;如下:
我们查看插入的数据和筛选出名字为“curry"的人,查看是否区分大小写;如下:
我们会发现在校验规则为utf8_bin下,是区分大小写的
3. 操作数据库
查看数据库
show databases;
如下:
显示创建语句
show create database 数据库名;
例:
说明:
-
MySQL 建议我们关键字使用大写,但是不是必须的。
-
数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
-
/*!40100 default… */ 这个不是注释,而是表示当前mysql版本大于4.01版本,就执行这句话
修改数据库
语法:
ALTER DATABASE db_name [alter_spacification [,alter_spacification]...]
说明:
对数据库的修改主要指的是修改数据库的字符集,校验规则
例子:
将数据库test1 的数据库字符集改成gdk ;如下:
删除数据库
就是我们平时俗称的”删库跑路“
语法:
DROP DATABASE [IF EXISTS] db_ name;
执行删除之后的结果:
-
数据库内部看不到对应的数据库
-
对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
**注意:**不要随意删除数据库
下面演示将刚才创建出来的test1 删除;
查看数据库连接情况
语法:
show processlist
例:
-
说明:
-
Id列:一个标识,可以在MySQL中通过kill id杀死指定id的线程。
-
User列:显示当前用户,如果不是root,这个命令就只显示你权限范围内
SQL语句。
-
Host列:显示这个语句是从哪个IP的哪个端口上发出的,可用来追踪出问题语句的用户。
-
db列:当前执行的命令是在哪一个数据库上,如果没有指定数据库,则该值为NULL。
-
Command列:显示当前连接执行的命令,一般就是休眠(Sleep)、查询(Query)和连接(Connect)。
-
Time列:表示该线程处于当前状态的时间,单位是秒。
-
State列:显示使用当前连接的SQL语句的状态。
-
Info列:一般记录的是线程执行的语句,默认只显示前100个字符,如果要看全部信息,需要使用show full processlist。
当前执行的命令是在哪一个数据库上,如果没有指定数据库,则该值为NULL。
-
Command列:显示当前连接执行的命令,一般就是休眠(Sleep)、查询(Query)和连接(Connect)。
-
Time列:表示该线程处于当前状态的时间,单位是秒。
-
State列:显示使用当前连接的SQL语句的状态。
-
Info列:一般记录的是线程执行的语句,默认只显示前100个字符,如果要看全部信息,需要使用show full processlist。
show processlist可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。