在SQL中數據庫定義語言也叫DDL(Data Definition Language),主要用來創建或刪除數據庫,添加索引等操作。
創建數據庫
下面給出創建數據庫的定義語句:
CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [[DEFAULT] CHARACTER SET [=] charset_name];
來解釋一下:
- 在{}里的內容是必需的,而[]里的內容是可選的。所以創建數據庫最簡單的語句如下:
CREATE DATABASE db_name;
在MySQL中DATABASE和SCHEMA可以看做是一樣的,并且在寫SQL語句的時候,最好是將SQL命令大寫,其他內容像db_name等小寫比較好。
- 如果創建數據庫時,數據庫已經存在,這個時候MySQL就會出現錯誤提示,這個時候[IF NOT EXISTS]就很有必要了,當數據庫不存在的時候,就創建數據庫,當數據庫存在的時候,只會出現警告而非錯誤。
- 創建數據庫可以設置數據庫的編碼方式,如果不設置就使用默認設置。如果沒有改默認的編碼方式,那么window上默認的應該是gbk,mac上默認的是latin1
示例:
mysql> CREATE DATABASE IF NOT EXISTS test CHARACTER SET 'UTF8';
Query OK, 1 row affected (0.00 sec)
查看數據庫
查看MySQL中有哪些數據庫,可以通過以下命令:
SHOW {DATABASES|SCHEMAS};
示例:
mysql> SHOW SCHEMAS;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.00 sec)
查看數據庫庫定義
有時候時間長了,忘記了某個數據的編碼方式,可以查看數據庫的定義
SHOW CREATE {DATABASE|SCHEMA} db_name;
示例:
mysql> SHOW CREATE DATABASE test;
+----------+---------------------------------------------------------------+
| Database | Create Database |
+----------+---------------------------------------------------------------+
| test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+---------------------------------------------------------------+
1 row in set (0.00 sec)
通過這條語句就可以輕松的查看數據庫的定義了。
修改數據庫編碼
有時候創建數據庫之后才想起來沒有修改數據庫的編碼,這個時候修改數據庫編碼就需要用到ALTER命令了
ALTER {DATABASE|SCHEMA} db_name [DEFAULT] CHARACTER SET [=] charset_name
簡單的示例:
mysql> ALTER DATABASE test CHARACTER SET 'UTF8';
Query OK, 1 row affected (0.00 sec)
刪除數據庫
DROP {DATABASE|SCHEMA} [IF EXISTS] db_name;
刪除數據庫需要用到DROP字段,同樣的使用[IF EXISTS]為了防止當數據庫不存在時,MySQL刪除出現錯誤提示。
mysql> DROP DATABASE IF EXISTS test;
Query OK, 0 rows affected (0.00 sec)
數據庫操作基本上就結束了。
在MySQL中是不區分大小寫的,例如將上述SQL語句中的db_name該為大寫,也是可以的。
例如你創建了一個名叫test的數據庫,然后刪除的時候使用TEst,這樣是否可行呢?
mysql> CREATE DATABASE test;
Query OK, 1 row affected (0.00 sec)
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql> DROP DATABASE TEst;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
看這是可行的。但是還是盡量的按照MySQL命令大寫,自定義名稱小寫的形式來編寫SQL語句。