CREATE DATABASE
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_option] ...
create_option: [DEFAULT] {
CHARACTER SET [=] charset_name
| COLLATE [=] collation_name
| ENCRYPTION [=] {'Y' | 'N'}
}
CREATE DATABASE
创建给定名称的数据库。要使用此语句,需要有CREATE DATABASE
的权限。
如果该数据库已经存在而没有指定IF NOT EXISTS
,则会发生错误。
CREATE DATABASE
不允许在已经执行了LOCK TABLES
语句的会话中使用。
create database jack;
use jack;
create table kaven (
id integer auto_increment,
primary key PRIMARY_KEY(id)
);
lock tables kaven as kv read local;
create database jack2;
Can’t execute the given command because you have active locked tables or an active transaction
MySQL使客户端会话能够明确获取表锁,以便与其他会话合作访问表,或者在会话需要独占访问表时,防止其他会话修改表。会话只能为自己获取或释放锁。一个会话不能为另一个会话获取锁或释放另一个会话持有的锁。
锁可用于模拟事务或在更新表时获得更高的速度。LOCK TABLES
显式获取当前客户端会话的表锁。可以为基表或视图获取表锁。必须拥有该LOCK TABLES
权限,以及SELECT
每个要锁定的对象的权限。这个以后再详细介绍。
每个create_option
指定一个数据库特性。数据库特征存储在数据字典中。
-
CHARACTER SET
选项指定默认的数据库字符集。 -
COLLATE
选项指定默认的数据库排序规则。 -
ENCRYPTION
在MySQL 8.0.16
中引入,该选项定义了是否对数据库加密,该加密选项由数据库中创建的表继承。允许的值为'Y'
(启用加密)和'N'
(禁用加密)。如果未指定ENCRYPTION
选项,则default_table_encryption
系统变量的值默认定义数据库加密。
要查看可用的字符集和排序规则,可以使用SHOW CHARACTER SET
和 SHOW COLLATION
语句。
MySQL中的数据库被实现为包含与数据库中的表对应的文件的目录。由于最初创建数据库时没有表,因此该CREATE DATABASE
语句仅在MySQL数据目录下创建一个目录。
MySQL 8.0
不支持通过在数据目录下手动创建目录(例如,使用mkdir
)来创建数据库目录 。
创建数据库时,让服务器管理目录和其中的文件。直接操作数据库目录和文件会导致不一致和意外结果。
MySQL对数据库的数量没有限制。底层文件系统可能对目录数量有限制。
演示
如果已经存在该数据库,则会发生错误。
create database kaven;
不存在该数据库即可创建成功。
create database test;
即使该数据库有可能存在,我们可以通过if not exists
来判断数据库是否存在,当该数据库不存在时,才创建这个数据库。
create database if not exists test;
可用字符集,每个字符集有默认的排序规则。
SHOW CHARACTER SET;
可用排序规则,有很多,博主这个版本的Mysql有272
种,每种字符集对应多种排序规则,但每种字符集只有一种排序规则是默认的,如下面框起来的一行数据。
SHOW COLLATION;
给数据库指定字符集utf8mb4
,并且会有默认排序规则utf8mb4_0900_ai_ci
。
create database if not exists jack character set 'utf8mb4';
给数据库指定字符集utf8mb4
,并且指定排序规则为utf8mb4_bin
(随便找的,没有啥依据),之后有机会再详细介绍字符集和排序规则。
create database if not exists jack character set 'utf8mb4' collate 'utf8mb4_bin';
博主这里的Mysql版本是8.0.25
,是已经支持ENCRYPTION
选项了。
select version();
给数据库指定字符集utf8mb4
,并且指定排序规则为utf8mb4_bin
,以及ENCRYPTION
选项为'Y'
,DataGrip显示的SQL语句报红,应该是DataGrip的版本问题,但SQL语句执行是成功了。
create database if not exists jack character set 'utf8mb4' collate 'utf8mb4_bin' encryption 'Y';
推荐阅读
-
机器学习进阶-目标跟踪-KCF目标跟踪方法 1.cv2.multiTracker_create(构造选框集合) 2. cv2.TrackerKCF_create(获得KCF追踪器) 3. cv2.resize(变化图像大小) 4.cv2.selectROI(在图像上框出选框)
-
unable to create debugfs directory
-
failed to create debugfs directory
-
uvcvideo unable to create debugfs directory
-
使用函数BAPI_CONTRACT_CREATE的第十二个示例
-
How to Use Docker and NS-3 to Create Realistic Network Simulations
-
Access Control: Database(数据库访问控制)最新解析及完整解决方案
-
CREATE DATABASE
-
免费体验:Oracle Database Express Edition 11g安装与使用指南,以及SOD框架对Oracle Code First的支持
-
理解Oracle Database 19c中的DISTINCT与LISTAGG函数