本篇的主要目的:对于数据库如何去增加删除查询修改
文章目录
- 创建数据库create
- 查看数据库show
- 删除数据库drop
- 修改数据库alter
创建数据库create
主要细节在于选项问题,编码选项
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: 指定数据库字符集的校验规则
- 查看当前用户数据库的列表show databases;
- 创建数据库create database db_name;
当我们创建数据没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则:utf_general_ci;
简单验证一下:创建一个数据库create database d1,然后去/var/lib/mysql/d1/db.opt查看:、
- 删除数据库drop database db_name;
创建数据库:create database db_name(本质就是Linux在/var/lib/mysql创建一个目录),删除数据库:drop database db_name;(删除目录)
比如我们在/var/lib/mysql下创建一个目录youcanseeme,而用mysql命令show databases;自然也可以看到。(但是在/var/lib/mysql手动mkdir创建目录这是非常不合理的)
- 创建不存在(if not exists)的数据库create database if not exists database1;
- 数据库编码问题
创建数据库的时候,有两个编码集:1.数据库编码集 2.数据库校验集
数据库编码集——数据库未来存储数据
数据库校验集——支持数据库进行字段比较使用的编码,本质也是一种读取数据库中数据采用的编码格式
数据库无论对数据做任何操作,**都必须保证操作和编码必须是编码一致的!**防止乱码
- 查看系统默认字符集以及校验规则
编码集:show variables like ‘character_set_database’;
校验集:show variables like ‘collation_database’;
除了database之外,其他的呢:show variables like ‘collation_%’;
如果想查看数据库支持的字符集:show charset;
如果想查看数据库支持的字符集校验规则:show collation;
- 创建指定编码集的数据库
如果没有指定,默认以配置文件为主
两种方式创建字符集为utf8的表:
create database d2 charset=utf8;
create database d3 character set utf8;
同时设置字符集与校验集:
- 校验规则对数据库的影响
为了说明这个情况,现在我们创建两个数据库:
test1数据库校验集设置为utf8_general_ci;字符集默认为utf8;校验规则使用utf8_ general_ ci[不区分大小写]
test2数据库校验集设置为utf8_bin;字符集默认为utf8;校验规则使用utf8_ bin[区分大小写]
- test1数据库
现在先来看数据库test1,往数据库test1插入数据,先使用数据库use test1;创建表person
create table if not exists person (name varchar(20));
插入数据:
mysql> insert into person (name) values ('a');
Query OK, 1 row affected (0.01 sec)
mysql> insert into person (name) values ('b');
Query OK, 1 row affected (0.00 sec)
mysql> insert into person (name) values ('A');
Query OK, 1 row affected (0.01 sec)
mysql> insert into person (name) values ('B');
Query OK, 1 row affected (0.00 sec)
mysql> insert into person (name) values ('c');
Query OK, 1 row affected (0.01 sec)
mysql> insert into person (name) values ('D');
Query OK, 1 row affected (0.00 sec)
此时的表person,查询表person:
查询person表中的a:结果是大写小写都能够查出来,则是utf8_general_ci不区分大小写:
看一下排序结果:
test1中的校验规则是utf8_general_ci进行比较的时候,进行校验的时候大小写不做区分,校验集是会影响结果的,一般我们按照默认的
- test2数据库
现在再来看数据库test2,使用数据库use test2;,创建表person:
create table if not exists person (name varchar(20));
插入数据,查看表person:
查询person表中的a:结果是只查出来小写:这是utf8_bin区分大小写:
对于排序,数据库test2中的person默认是升序的,按照ascii值小到大:
查看数据库show
show databases;
- 使用数据库use db_name;
查看到之后并不能直接使用数据库,想使用数据库使用use+数据库名称;如使用数据库helloworld;
use helloworld;
- 确认当前使用的数据库select database();
select database();
当前正在使用test1数据库
删除数据库drop
DROP DATABASE [IF EXISTS] db_ name;
执行删除之后的结果:
数据库内部看不到对应的数据库
对应的数据库文件夹被删除,级联删除,里面的数据表全部被删注意:不要随意删除数据库
//删除数据d5\d4\d3;
mysql> drop database d5;
Query OK, 0 rows affected (0.00 sec)
mysql> drop database d4;
Query OK, 0 rows affected (0.00 sec)
mysql> drop database d3;
Query OK, 0 rows affected (0.00 sec)
修改数据库alter
ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
采用alter的方式对数据库进行修改
对数据库的修改主要指的是修改数据库的字符集,校验规则
alter database test2 charset=gbk collate gbk_chinese_ci;
修改完查看数据库test2的信息:
/*!40100 DEFAULT CHARACTER SET gbk */:这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话