文章目录
1.创建数据库 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> CREATE DATABASE test_db;
- 创建前检查是否已存在
mysql> CREATE DATABASE IF NOT EXISTS test_db;
- 创建数据库时指定字符集和校对规则
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
的字符集为系统默认的latin1
字符集。
mysql> show create database test;
+----------+-----------------------------------------------------------------+
| Database | Create Database |
+----------+-----------------------------------------------------------------+
| test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.00 sec)
查看支持的所有字符集
SHOW CHAR SET;
例如:
mysql> SHOW CHAR SET;
+----------+---------------------------------+---------------------+--------+
| Charset | Description | Default collation | Maxlen |
+----------+---------------------------------+---------------------+--------+
| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |
| dec8 | DEC West European | dec8_swedish_ci | 1 |
| cp850 | DOS West European | cp850_general_ci | 1 |
| hp8 | HP West European | hp8_english_ci | 1 |
| koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 |
| latin1 | cp1252 West European | latin1_swedish_ci | 1 |
| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |
| swe7 | 7bit Swedish | swe7_swedish_ci | 1 |
| ascii | US ASCII | ascii_general_ci | 1 |
| ujis | EUC-JP Japanese | ujis_japanese_ci | 3 |
| sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 |
| hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 |
| tis620 | TIS620 Thai | tis620_thai_ci | 1 |
| euckr | EUC-KR Korean | euckr_korean_ci | 2 |
| koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 |
| gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 |
| greek | ISO 8859-7 Greek | greek_general_ci | 1 |
| cp1250 | Windows Central European | cp1250_general_ci | 1 |
| gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 |
| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |
| armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 |
| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |
| ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 |
| cp866 | DOS Russian | cp866_general_ci | 1 |
| keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 |
| macce | Mac Central European | macce_general_ci | 1 |
| macroman | Mac West European | macroman_general_ci | 1 |
| cp852 | DOS Central European | cp852_general_ci | 1 |
| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |
| utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 |
| cp1251 | Windows Cyrillic | cp1251_general_ci | 1 |
| utf16 | UTF-16 Unicode | utf16_general_ci | 4 |
| utf16le | UTF-16LE Unicode | utf16le_general_ci | 4 |
| cp1256 | Windows Arabic | cp1256_general_ci | 1 |
| cp1257 | Windows Baltic | cp1257_general_ci | 1 |
| utf32 | UTF-32 Unicode | utf32_general_ci | 4 |
| binary | Binary pseudo charset | binary | 1 |
| geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 |
| cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 |
| eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 |
| gb18030 | China National Standard GB18030 | gb18030_chinese_ci | 4 |
+----------+---------------------------------+---------------------+--------+
41 rows in set (0.00 sec)
2.查看数据库 SHOW DATABASES
在MySQL中,可使用SHOW DATABASES
语句来查看或显示当前用户权限范围以内的数据库。
查看数据库的语法格式为:
SHOW DATABASES [LIKE '数据库名'];
语法说明如下:
LIKE
从句是可选项,用于匹配指定的数据库名称。LIKE
从句可以部分匹配,也可以完全匹配。- 数据库名由单引号
' '
包围。
例子:
- 查看所有数据库
mysql> SHOW DATABASES;
- 查看名字完全匹配的数据库
mysql> SHOW DATABASES LIKE 'test';
+-----------------+
| Database (test) |
+-----------------+
| test |
+-----------------+
1 row in set (0.00 sec)
- 查看以
my
开头的数据库
mysql> SHOW DATABASES LIKE 'my%';
+----------------+
| Database (my%) |
+----------------+
| mysql |
+----------------+
1 row in set (0.00 sec)
- 查看以
schema
结尾的数据库
mysql> SHOW DATABASES LIKE '%schema';
+--------------------+
| Database (%schema) |
+--------------------+
| information_schema |
| performance_schema |
+--------------------+
2 rows in set (0.00 sec)
- 查看名字中包含
sql
的数据库
mysql> SHOW DATABASES LIKE '%sql%';
+------------------+
| Database (%sql%) |
+------------------+
| mysql |
+------------------+
1 row in set (0.00 sec)
3.修改数据库 ALTER DATABASE
在MySQL数据库中只能对数据库使用的字符集和校对规则进行修改,数据库的这些特性都储存在db.opt
文件中。
修改数据库的语法格式为:
# 修改字符集
ALTER DATABASE <数据库名> [DEFAULT] CHARACTER SET <字符集名>;
# 修改校对规则
ALTER DATABASE <数据库名> [DEFAULT] COLLATE <校对规则名>;
# 同时修改字符集和校对规则
ALTER TABLE <数据库名> [DEFAULT] CHARACTER SET utf8 [DEFAULT] COLLATE utf8_general_ci;
语法说明如下:
ALTER DATABASE
用于更改数据库的全局特性。- 使用
ALTER DATABASE
需要获得数据库ALTER
权限。 - 数据库名称可以忽略,此时语句对应于默认数据库。
CHARACTER SET
子句用于更改默认的数据库字符集。
例子:
- 将数据集
test
的默认字符集改为utf8
,默认校对规则改为utf8_general_ci
mysql> ALTER DATABASE test DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
mysql> SHOW CREATE DATABASE test;
+----------+---------------------------------------------------------------+
| Database | Create Database |
+----------+---------------------------------------------------------------+
| test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+---------------------------------------------------------------+
1 row in set (0.00 sec)
4.删除数据库 DROP DATABASE
当需要删除已创建的数据库时,可以使用DROP DATABASE
语句。其语法格式为:
DROP DATABASE [IF EXISTS] <数据库名>;
语法说明如下:
<数据库名>
指定要删除的数据库名。IF EXISTS
用于防止当数据库不存在时发生错误。DROP DATABASE
删除数据库中的所有表格并同时删除数据库。使用此语句时要非常小心,在执行该命令后,MySQL不会给出任何提示确认信息。- 如果要使用
DROP DATABASE
,需要获得数据库DROP
权限。
注意:MySQL 安装后,系统会自动创建名为 information_schema 和 mysql 的两个系统数据库,系统数据库存放一些和数据库相关的信息,如果删除了这两个数据库,MySQL 将不能正常工作。
例子:
- 创建并删除
test_del
数据库
mysql> CREATE DATABASE test_del;
Query OK, 1 row affected (0.01 sec)
mysql> DROP DATABASE test_del;
Query OK, 0 rows affected (0.05 sec)
mysql> SHOW DATABASES LIKE 'test_del';
Empty set (0.00 sec)
- 删除时加上
IF EXISTS
语句
mysql> DROP DATABASE test_del;
ERROR 1008 (HY000): Can't drop database 'test_del'; database doesn't exist
mysql> DROP DATABASE IF EXISTS test_del;
Query OK, 0 rows affected, 1 warning (0.00 sec)
5.选择数据库 USE
当用CREATE DATABASE
语句创建数据库之后,该数据库不会自动成为当前数据库,需要用USE
来指定当前数据库。
其语法格式为:
USE <数据库名>;
该语句可以通知MySQL把<数据库名>
所指示的数据库作为当前数据库。该数据库保持为默认数据库,直到语段的结尾,或者直到遇见一个不同的USE
语句。
只有使用USE
语句来指定某个数据库作为当前数据库之后,才能对该数据库及其存储的数据对象执行操作。
例子:
- 使用
test_db
数据库
mysql> USE test_db;
Database changed