查看数据库
语法
show databases; show schemas;show schemas; 和 show databases; 作用完全一样
创建数据库
语法
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT CHARACTER SET [=] charset_name] [DEFAULT COLLATE [=] collation_name] [ENCRYPTION [=] {'Y' | 'N'}];
- 符号说明:
1){}:二选一,DATABASE 和 SCHEMA 效果完全一样
2)|:或者,任选其一
3)[]:可选,可写可不写关键字解释
IF NOT EXISTS
如果这个数据库不存在才创建;数据库已经存在时不会报错,只会产生警告
不加这个,如果库已存在,直接报错
CHARACTER SET:指定数据库字符集
COLLATE:字符集排序 / 校验规则
ENCRYPTION:MySQL8.0 新增,Y开启加密,N不加密
例子
创建数据库
create database test001;直接创建 test001,如果 test001 已经存在,执行会报错
不存在才创建
create database if not exists testdb;不会报错,只会出现警告
查看警告:
show warnings;创建数据库同时指定字符集
create database if not exists testdb default character set utf8mb4;字符集 和 排序(校验)规则
查看支持的字符集
show charset;
- MySQL8.0 默认字符集:utf8mb4
MySQL5.7 默认字符集:latin1
查看支持的排序规则
show collation;
- MySQL8.0 默认排序规则:utf8mb4_0900_ai_ci
MySQL5.7 默认排序规则:utf8mb4_general_ci
排序规则后缀含义
ai = Accent-insensitive:口音不敏感,重音字符视作相同
as= Accent-sensitive:口音敏感
ci= Case-insensitive:大小写不敏感 (A和a相等)
cs= Case-sensitive:大小写敏感 (A和a不相等)
bin:二进制比较,严格区分大小写
0900:基于 UCA 9.0.0 排序算法(Unicode Collation Algorithm)例子
utf8mb4_0900_ai_ci:utf8mb4 字符集,UCA9.0,口音不敏感,大小写不敏感
查看系统默认字符集、排序规则
-- 查看所有字符集相关系统变量 show variables like '%character%'; -- 查看所有排序规则相关系统变量 show variables like '%collation%';
- 重点变量:
1)haracter_set_server:服务器默认字符集
2)character_set_database:当前数据库字符集
3)collation_server:服务器默认排序规则
4)collation_database:当前库排序规则
创建数据库时指定字符集和排序规则
create database if not exists java01 character set utf8mb4 collate utf8mb4_0900_ai_ci;
- 含义:不存在则创建 java01 库,字符集 utf8mb4,排序规则 utf8mb4_0900_ai_ci
数据库创建后,会在数据目录生成同名文件夹,存放库内所有数据查看创建语句
语法
show create database 库名; -- 查看表的创建语句配套语法 show create table 表名;示例
show create database java01;
修改数据库
语法
ALTER {DATABASE | SCHEMA} [库名] alter_option ...;DATABASE 和 SCHEMA 等价,写哪个都可以
- alter_option 可选操作:
1)DEFAULT CHARACTER SET = 字符集名:修改数据库默认字符集
2)[DEFAULT] COLLATE [=] 排序规则名:修改数据库默认排序规则
3)[DEFAULT] ENCRYPTION [=] {'Y' | 'N'}:开启 / 关闭加密
4)READ ONLY [=] {0 | 1}:设置数据库只读(1 只读,0 可读写)
重点:修改库的字符集,只会影响之后新建的表;
库里已经存在的表,字符集不会自动改变示例
-- 将 test001 数据库字符集修改为gbk alter database test001 character set gbk;修改完成后,用 show create database test001; 验证
同时修改字符集 + 排序规则写法:
alter database test001 character set utf8mb4 collate utf8mb4_0900_ai_ci;删除数据库
语法
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;1)DATABASE 和 SCHEMA 在 MySQL 里效果完全一样,都代表数据库
2)IF EXISTS:可选,加上之后,当数据库不存在时不会报错,
只会给出警告,防止语句报错中断脚本
3)db_name:要删除的数据库名字
示例
两种写法
DROP DATABASE IF EXISTS testdb; -- 删除名为 testdb 的数据库 drop database testdb;注意事项
1)删除数据库会把库里面所有表、所有数据全部清除 ,
生产环境谨慎执行,删除前务必备份数据
2)底层:MySQL 会删除这个数据库对应的操作系统目录以及目录下全部文件
3)删除完成后,执行show databases;,就看不到这个数据库了