MYSQL-创建数据库 CREATE DATABASE (十一)
13.1.11 CREATE DATABASE 语句
-- 创建 数据库的 CREATE 权限
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_option] ...
create_option: [DEFAULT] {
CHARACTER SET [=] charset_name
| COLLATE [=] collation_name
}
-- 删除 数据库具有 DROP 权限
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
CREATE DATABASE
使用给定名称创建数据库。要使用此语句,您需要数据库的CREATE权限。CREATE SCHEMA
是CREATE DATABASE
的同义词。
如果数据库存在并且您未指定 IF NOT EXISTS
,则会发生错误。
不允许在具有活动LOCK TABLES
语句的会话中创建数据库
每个create_option
都指定了一个数据库特性。数据库特征存储在数据库目录中的db.opt文件中。CHARACTER SET
选项指定默认的数据库字符集。COLLATE
选项指定默认的数据库排序规则。有关字符集和排序规则名称的信息,请参阅第10章“Character Sets, Collations, Unicode
”。
要查看可用的字符集和排序规则,请分别使用SHOW CHARACTER SET
和 SHOW COLLATION
语句。参见第 13.7.5.3 节“ SHOW CHARACTER SET
语句”和第 13.7.5.4 节“ SHOW COLLATION
语句”。
MySQL中的数据库被实现为一个目录,其中包含与数据库中的表相对应的文件。因为数据库最初创建时没有表,所以CREATE DATABASE
语句只在MySQL数据目录和db.opt文件下创建一个目录。第9.2节“模式对象名称”给出了允许的数据库名称规则。如果数据库名称包含特殊字符,则数据库目录的名称包含这些字符的编码版本,如第9.2.4节“标识符到文件名的映射”所述。
如果在数据目录下手动创建一个目录(例如,使用mkdir),服务器会将其视为数据库目录,并显示在SHOW DATABASES的输出中。
创建数据库时,让服务器管理目录和其中的文件。直接操作数据库目录和文件可能会导致不一致和意外结果。
MySQL对数据库的数量没有限制。底层文件系统可能对目录数量有限制。
您还可以使用mysqladmin
程序创建数据库。请参阅第4.5.2节“mysqladmin——MySQL服务器管理程序”。
查看数据库创建语句
SHOW CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
mysql> show create database world;
+----------+---------------------------------------------------------------------------------+
| Database | Create Database |
+----------+---------------------------------------------------------------------------------+
| world | CREATE DATABASE `world` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ |
+----------+---------------------------------------------------------------------------------+
1 row in set (0.06 sec)
mysql> show create schema world;
+----------+---------------------------------------------------------------------------------+
| Database | Create Database |
+----------+---------------------------------------------------------------------------------+
| world | CREATE DATABASE `world` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ |
+----------+---------------------------------------------------------------------------------+
1 row in set (0.05 sec)
mysql>
创建数据库
## 创建数据库
mysql> create database test;
Query OK, 1 row affected (0.01 sec)
## 查看数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| dbsnmp |
| mysql |
| performance_schema |
| sakila |
| sys |
| test |
| world |
+--------------------+
8 rows in set (0.00 sec)
切换数据库
## 切换数据库
mysql> use world;
Database changed
查看数据库中存在的表
## 显示数据库中的表
mysql> show tables;
+-----------------+
| Tables_in_world |
+-----------------+
| city |
| city_view |
| country |
| countrylanguage |
+-----------------+
4 rows in set (0.03 sec)
mysql>