增 | 创建数据库
MySQL 5.7 Reference Manual / CREATE DATABASE Syntax
权限要求:创建数据库时需要 CREATE 权限。
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
create_specification:
| [DEFAULT] COLLATE [=] collation_name
CREATE DATABASE 语句用于创建数据库,CREATE SCHEMA 与 CREATE DATABASE 意义相同。
没有指定 IF NOT EXISTS 的话,如果库已经存在则会产生错误。
在 MySQL 5.7 中,在具有活动的 LOCK TABLES 语句的 session 中,不允许使用 CREATE DATABASE。
create_specification用于指定数据库的一些特征。数据库的默认特征存储在数据库文件夹中的 db.opt 文件中:
- CHARACTER SET 用于指定数据库默认的字符集。
- COLLATE 用于指定数据库默认的校对规则。
Section 10.1, “Character Set Support”,中讨论了更多有关字符集和校对规则的内容。
MySQL 中,数据库被实现为包含与数据库中的表相对应的文件的目录。由于首次创建数据库时并没有表,所以 CREATE DATABASE 实际上只是在 data 目录下创建了一个文件夹和一个 db.opt 文件。数据库名的命名规则在Section 9.2, “Schema Object Names”中有描述。如果数据名中包含特殊字符,那么数据库文件夹的名字包含这些特殊字符的编码版本,相关的描述位于Section 9.2.3, “Mapping of Identifiers to File Names”
如果手动在 data 目录中创建一个文件夹(比如使用 mkdir 命令),MySQL 会将其视为一个数据目录,并在 SHOW DATABASES 中显示。
通过 mysqladmin 创建
mysqladmin 命令也可以用于创建数据库。
删 | 删除数据库
How to Delete a MySQL Database
DROP DATABASE Flowers;
改 | 修改数据库
数据库重命名
How to rename a MySQL database?
-- 没有直接重命名数据库的方法 -- 方法一、移动表表到新库 CREATE database new_db_name; RENAME TABLE db_name.table1 TO new_db_name, db_name.table2 TO new_db_name; DROP DATABASE db_name; -- 方法二、使用 mysqldump+mysql 导出后再导入 -- 方法三、如果是 MyISAM 引擎,可以重命名数据库的目录名
SHOW DATABASES Syntax
文档:https://dev.mysql.com/doc/refman/5.7/en/show-databases.html
SHOW {DATABASES | SCHEMAS}
SHOW DATABASES 用于列出 MySQL 服务器上的数据库。SHOW SCHEMAS 等价于 SHOW DATABASES。
如果存在 LIKE 子句,则暗示了要匹配的数据库名字。
WHERE 子句可以用于查找具有某些条件的行。详细的内容可以查看文档中第 24.34 节, “Extensions to SHOW Statements”
只能列出具有查看权限的库。如果没有权限,则相应的数据库也不会显示。mysqlshow 命令也可以获取数据库列表。
如果 MySQL Server 启动时附带了–skip-show-database 选项。除非由 SHOW DATABASES 的权限,否则无法查看数据库。
MySQL 将数据库实现为 data 目录中的目录,因此该语句只是列出 data 中的目录。但是,输出中可能包括与实际数据库不对应的目录的名称。
SHOW CREATE DATABASE Syntax
MySQL 5.7 Reference Manual / SHOW CREATE DATABASE Syntax:https://dev.mysql.com/doc/refman/5.7/en/show-create-database.html
SHOW CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
示例
mysql> SHOW CREATE DATABASE test\G ************************* 1. row ************************* Database: test Create Database: CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET latin1 */ mysql> SHOW CREATE SCHEMA test\G ************************* 1. row ************************* Database: test Create Database: CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET latin1 */
SHOW CREATE DATABASE 根据 sql_quote_show_create 选项的值来引用表和列名称。参见:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_sql_quote_show_create