创建、查看及切换数据库
创建数据库(CREATE DATABASE语句)
在 MySQL 中,可以使用 CREATE DATABASE
语句创建数据库,语法格式如下:
CREATE DATABASE [IF NOT EXISTS] <数据库名>
[[DEFAULT] CHARACTER SET <字符集名>]
[[DEFAULT] COLLATE <校对规则名>];
[ ]
中的内容是可选的。语法说明如下:
- <数据库名>:创建数据库的名称。MySQL 的数据存储区将以目录方式表示 MySQL 数据库,因此数据库名称必须符合操作系统的文件夹命名规则,不能以数字开头,尽量要有实际意义。注意在 MySQL 中不区分大小写。
- IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。此选项可以用来避免数据库已经存在而重复创建的错误。
- [DEFAULT] CHARACTER SET:指定数据库的字符集。指定字符集的目的是为了避免在数据库中存储的数据出现乱码的情况。如果在创建数据库时不指定字符集,那么就使用系统的默认字符集。
- [DEFAULT] COLLATE:指定字符集的默认校对规则。
MySQL 的字符集(CHARACTER)和校对规则(COLLATION)是两个不同的概念。字符集是用来定义 MySQL 存储字符串的方式,校对规则定义了比较字符串的方式。后面我们会单独讲解 MySQL 的字符集和校对规则。
实例1:最简单的创建 MySQL 数据库的语句
在 MySQL 中创建一个名为 test_db 的数据库。在 MySQL 命令行客户端输入 SQL 语句CREATE DATABASE test_db;
即可创建一个数据库,输入的 SQL 语句与执行结果如下。
mysql> CREATE DATABASE test_db;
Query OK, 1 row affected (0.12 sec);
“Query OK, 1 row affected (0.12 sec);”提示中,“Query OK”表示上面的命令执行成功,“1 row affected”表示操作只影响了数据库中一行的记录,“0.12 sec”则记录了操作执行的时间。
若再次输入CREATE DATABASE test_db;
语句,则系统会给出错误提示信息,如下所示:
mysql> CREATE DATABASE test_db;
ERROR 1007 (HY000): Can't create database 'test_db'; database exists
提示不能创建“test_db”数据库,数据库已存在。MySQL 不允许在同一系统下创建两个相同名称的数据库。
可以加上IF NOT EXISTS
从句,就可以避免类似错误,如下所示:
mysql> CREATE DATABASE IF NOT EXISTS test_db;
Query OK, 1 row affected (0.12 sec)
实例2:创建 MySQL 数据库时指定字符集和校对规则
使用 MySQL 命令行工具创建一个测试数据库,命名为 test_db_char,指定其默认字符集为 utf8,默认校对规则为 utf8_chinese_ci(简体中文,不区分大小写),输入的 SQL 语句与执行结果如下所示:
mysql> CREATE DATABASE IF NOT EXISTS test_db_char
-> DEFAULT CHARACTER SET utf8
-> DEFAULT COLLATE utf8_chinese_ci;
Query OK, 1 row affected (0.03 sec)
这时,可以使用SHOW CREATE DATABASE
查看 test_db_char 数据库的定义声明,发现该数据库的指定字符集为 utf8,运行结果如下所示:
mysql> SHOW CREATE DATABASE test_db_char;
+--------------+-----------------------------------------------------+
| Database | Create Database |
+--------------+-----------------------------------------------------+
| test_db_char | CREATE DATABASE `test_db_char` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+--------------+-----------------------------------------------------+
1 row in set (0.00 sec)
“1 row in set (0.00 sec)”表示集合中有 1 行信息,处理时间为 0.00秒。时间为 0.00 秒并不代表没有花费时间,而是时间非常短,小于 0.01 秒。
显示数据库
SHOW DATABASES
语句列出了MySQL数据库服务器中的所有数据库。您可以使用SHOW DATABASES
语句检查您创建的数据库,或者在创建新数据库之前查看数据库服务器上的所有数据库,例如:
SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| mysqldemo |
+--------------------+
4 rows in set (0.01 sec)
如输出中清楚所示,我们在MySQL数据库服务器中有三个数据库。information_schema
和mysql
我们安装MySQL时可用的默认数据库,mysqldemo
是我们创建的新数据库。
切换数据库
在使用特定数据库之前,必须使用USE
语句告诉MySQL您要使用哪个数据库。
USE database_name;
您可以使用以下USE
语句选择mysqldemo
示例数据库:
USE mysqldemo;
删除数据库
删除数据库意味着永久删除数据库中包含的所有表和数据库本身。因此,执行此查询时要格外小心非常重要。
要删除数据库,请使用以下DROP DATABASE
语句:
DROP DATABASE [IF EXISTS] database_name;
DROP DATABASE
子句后面是您要删除的数据库名称。与CREATE DATABASE
语句类似,IF EXISTS
语句的可选部分,用于防止您删除数据库服务器中不存在的数据库。
如果要练习DROP DATABASE
语句,可以创建一个新数据库,确保它已创建并删除它。
我们来看看以下查询:
CREATE DATABASE IF NOT EXISTS tempdb;
SHOW DATABASES;
DROP DATABASE IF EXISTS tempdb;
三个陈述的顺序如下:
- 我们使用
CREATE DATABASE
语句创建了一个tempdb
数据库。 - 我们使用
SHOW DATABASES
语句显示所有数据库。 - 我们使用
DROP DATABASE
语句删除tempdb
。