MySQL 基础知识

在平时的开发和学习中,我会把我查阅到的MySQL的官方英文文档翻译成中文,这样不仅能加深我对这些知识点的记忆与理解,也方便我和其他小伙伴在以后的开发学习中查阅MySQL文档。

CREATE DATABASE Syntax | 创建 DATABASE
语法:

1
2
3
4
5
6
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_specification] ...

create_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name

CREATE DATABASE:创建一个以db_name为名称的数据库 要使用这条语句,你需要具有创建数据库的权限。CREATE SCHEMA是CREATE DATABASE的同义词。

如果你没有明确指出IF NOT EXISTS,那么如果这个database已经存在的话,就会导致错误。

在MySQL 5.7中,在一个活跃的LOCK TABLES命令下,CREATE DATABASE是不能执行的。

如果想要规定 database characteristics,需要使用 create_specification 选项。Database characteristics放置于数据库文件目录下的db.opt文件中。CHARACTER SET 子句规定默认的字符集。COLLATE 子句规定默认数据库校对。可以在http://dev.mysql.com/doc/refman/5.7/en/charset.html 查看相关内容。

查看所有字符集:

1
mysql> SHOW CHARACTER SET;

查看一个字符集的所有 collations,例如 utf8 的 collations:

1
mysql> SHOW COLLATION WHERE Charset = 'utf8';

一个MySQL的database,会被当作一个文件目录,这个文件目录包含了一些文件,这些文件相当于数据库中的表(table)。当一个database最初被创建的时候,这个database里是没有table的,所以 CREATE DATABASE 仅仅只是在 MySQL data 文件目录下创建了一个子文件目录和 db.opt 文件。Database 的命名规则可以参考:http://dev.mysql.com/doc/refman/5.7/en/identifiers.html。

如果你手动地在 MySQL data 文件目录下新建了一个文件目录,那么MySQL将把它当作一个database文件目录,并且他将会出现在 SHOW DATABASES 命令结果中。

你也可以使用mysqladmin程序来创建database,参考http://dev.mysql.com/doc/refman/5.7/en/mysqladmin.html

例子:
创建一个名为 demo_magento_db ,字符集是 utf-8,字符集校对是 utf8_general_ci 的数据库:

1
2
3
CREATE DATABASE demo_magento_db
CHARACTER SET = utf8
COLLATE = utf8_general_ci;

mysqldump
语法:

1
mysqldump -u root -p password --set-charset=utf8 db_name  > dump_sql_file.sql