数据库编码集:数据库未来存储数据采用的编码集
编码集,即一套表示数据的规则,写入数据时,根据采用的字符集,写入对应规则的数据.
一般来说怎么存就要怎么取,即统一的编码集
数据库校验集:检测数据库存取比较时,是否使用同样的编码
取数相关操作需要加载到内存中,此时才会对数据进行校验
show variables like 'character_set_database'; ##字符集
show variables like 'collation_database'; ##校验规则
show variables like 'character_set_%'; ##查看所有字符集相关
show variables like 'collation_%'; ##查看所有校验规则相关
show charset;
当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集或配置文件中的字符集:
例如配置文件my.cnf中设置了utf8,校验规则 是:utf8_ general_ ci
一般来说,使用了对应的校验码后,MySQL会自动同步更新成对应的字符集,无需手动设置.(如果对应不上的话,则可以查表show charset自己修改正确)
列fields
行records
语法
CREATE DATABASE [IF NOT EXISTS] 数据库名 [create_specification [create_specification] ...]
中括号[]围起来的表示可选选项
说明:
显式指明字符集时,会覆盖掉默认的字符集(就近原则)
未来在建表时,表的配置也同数据库的配置;
create database 数据库名 charset=utf8;
或
create database 数据库名 charset utf8; ##省略=号
或
create database 数据库名 character set=utf8;
或
create database 数据库名 character set utf8; ##省略=号
create database 数据库名 charset=utf8 collate utf8_general_ci;
utf8_general_ci:不区分大小写
utf8_bin:区分大小写
注意:一般不支持指定存储引擎创建
验证:
mysql> create database test_db charset=utf8 collate=utf8_general_ci;
## 切换至Linux
[root@gz mysql]# cd test_db/
[root@gz test_db]# ls
db.opt
[root@gz test_db]# cat db.opt
default-character-set=utf8
default-collation=utf8_general_ci
说明数据库默认只配置编码集和校验集
show databases;
select database();
show create database 数据库名;
结果
mysql> show create database helloworld;
+------------+-----------------------------------------------------------------------+
| Database | Create Database |
+------------+-----------------------------------------------------------------------+
| helloworld | CREATE DATABASE `helloworld` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+------------+-----------------------------------------------------------------------+
1 row in set (0.00 sec)
说明:
/*!40100 default.... */
这个不是注释,表示 如果当前mysql版本大于4.01版本,就执行这句话show charset;
0
对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
语法
show charset;
1
use就像cd命令一样,需要使用某个目录(数据库)时,先cd进入这个目录 -- 库的行为与Linux行为对应上
select database();
show charset;
3
show charset;
4
如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据
库,再使用source来还原。-B选项会备份数据库创建语法
show charset;
5
show charset;
6
show charset;
7
mysql> show processlist;
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+------+---------+------+-------+------------------+
| 2 | root | localhost | test | Sleep | 1386 | | NULL |
| 3 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+----+------+-----------+------+---------+------+-------+------------------+
语法
show charset;
8
show charset;
9
建表可以指定存储引擎,编码集,校验集
数据库是仓库(目录),表是货物(具体文件)
与linux对应操作
CREATE DATABASE [IF NOT EXISTS] 数据库名 [create_specification [create_specification] ...]
0
CREATE DATABASE [IF NOT EXISTS] 数据库名 [create_specification [create_specification] ...]
1
CREATE DATABASE [IF NOT EXISTS] 数据库名 [create_specification [create_specification] ...]
2
显示结构:
| 字段 | 字段数据类型 | 是否允许为空 | 键/索引类型 | 缺省值 | 扩充 |
示例
CREATE DATABASE [IF NOT EXISTS] 数据库名 [create_specification [create_specification] ...]
3
CREATE DATABASE [IF NOT EXISTS] 数据库名 [create_specification [create_specification] ...]
4
不一定和用户当时写的SQL一一对应,用户写的SQL会在MYSQL服务器词法语法分析器中重新解析、优化后执行,更加标准;因此返回的结果是标准SQL语句.
删除字段(列)只需要字段名,增加和修改操作还需要属性
CREATE DATABASE [IF NOT EXISTS] 数据库名 [create_specification [create_specification] ...]
5
举例
添加一列用于存放图片路径
CREATE DATABASE [IF NOT EXISTS] 数据库名 [create_specification [create_specification] ...]
6
删除一列
CREATE DATABASE [IF NOT EXISTS] 数据库名 [create_specification [create_specification] ...]
7
修改某列的属性
CREATE DATABASE [IF NOT EXISTS] 数据库名 [create_specification [create_specification] ...]
8
CREATE DATABASE [IF NOT EXISTS] 数据库名 [create_specification [create_specification] ...]
9
create database 数据库名 charset=utf8;
或
create database 数据库名 charset utf8; ##省略=号
或
create database 数据库名 character set=utf8;
或
create database 数据库名 character set utf8; ##省略=号
0
或
create database 数据库名 charset=utf8;
或
create database 数据库名 charset utf8; ##省略=号
或
create database 数据库名 character set=utf8;
或
create database 数据库名 character set utf8; ##省略=号
1
create database 数据库名 charset=utf8;
或
create database 数据库名 charset utf8; ##省略=号
或
create database 数据库名 character set=utf8;
或
create database 数据库名 character set utf8; ##省略=号
2