在 MySQL 中創建數據庫是一個非常基礎且重要的操作。其核心命令是 `CREATE DATABASE`。
以下是創建數據庫的詳細語法、選項和最佳實踐。
一、 核心語法
```sql
CREATE DATABASE [IF NOT EXISTS] database_name
[CHARACTER SET charset_name]
[COLLATE collation_name];
```
二、 參數與選項說明
| 部分 | 說明 | 是否可選 |
| :--- | :--- | :--- |
| `CREATE DATABASE` | 核心命令,用于創建新數據庫。 | 必選 |
| `database_name` | 你希望為數據庫指定的名稱。命名需遵循規則(如僅使用數字、字母、下劃線,不能純數字)。 | 必選 |
| `[IF NOT EXISTS]` | 關鍵選項。如果指定,只有當數據庫不存在時才會創建。可避免因重復創建而報錯,在腳本中非常有用。 | 可選 |
| `[CHARACTER SET]` | 指定數據庫的默認字符集。例如 `utf8mb4`(推薦,支持完整的UTF-8,包括表情符號)。 | 可選 |
| `[COLLATE]` | 指定數據庫的默認排序規則。常與字符集配對使用,例如 `utf8mb4_unicode_ci`(大小寫不敏感)。 | 可選 |
三、 常用操作示例
1. 創建最簡單的數據庫
```sql
CREATE DATABASE my_new_db;
```
這條命令會創建一個名為 `my_new_db` 的數據庫,使用 MySQL 服務器的默認字符集和排序規則。
2. 安全地創建數據庫(推薦使用)
使用 `IF NOT EXISTS` 子句可以防止因為數據庫已存在而導致的錯誤。
```sql
CREATE DATABASE IF NOT EXISTS my_new_db;
```
執行結果:
* 如果 `my_new_db` 不存在:創建它,并返回成功。
* 如果 `my_new_db` 已存在:不會報錯,只會返回一個警告(Warning)。這在自動化腳本中至關重要。
3. 創建指定字符集和排序規則的數據庫
這是生產環境的推薦做法,可以避免因默認設置不同導致的亂碼問題。
```sql
CREATE DATABASE IF NOT EXISTS my_app_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
```
說明:
* `utf8mb4`: 當前推薦的字符集,完全支持 Unicode,包括表情符號(emoji)。
* `utf8mb4_unicode_ci`: 基于 Unicode 排序規則,對于多種語言能提供準確的排序結果,且大小寫不敏感(`ci` = case insensitive)。
四、 后續步驟:查看與使用數據庫
創建數據庫后,你通常需要切換到該數據庫進行后續操作(如創建表)。
1. 查看所有數據庫
查看當前 MySQL 服務器上所有的數據庫,確認你的數據庫是否創建成功。
```sql
SHOW DATABASES;
```
2. 選擇(使用)數據庫
在進行任何表操作之前,必須先指定要操作哪個數據庫。
```sql
USE my_new_db;
```
執行后,命令行提示符可能會發生變化,顯示當前所在的數據庫名,例如:`mysql>` 變為 `my_new_db>`。
3. 查看數據庫的創建信息
可以查看已創建數據庫的詳細定義,包括其字符集和排序規則。
```sql
SHOW CREATE DATABASE my_app_db;
```
輸出結果會顯示完整的 `CREATE DATABASE` 語句。
五、 完整工作流示例
假設你要為一個新的博客項目初始化數據庫。
```sql
-- 1. 安全地創建數據庫,并明確指定字符集
CREATE DATABASE IF NOT EXISTS blog_platform
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- 2. 查看所有數據庫,確認創建成功
SHOW DATABASES;
-- 3. 切換到新創建的數據庫
USE blog_platform;
-- 現在,你可以在這個數據庫中創建表了,例如:
-- CREATE TABLE users (...);
-- CREATE TABLE posts (...);
```
六、 注意事項與最佳實踐
1. 權限要求:執行 `CREATE DATABASE` 命令的用戶必須擁有 `CREATE` 權限。
2. 命名規范:使用有意義的、一致的命名規則(如使用下劃線分隔單詞),避免使用特殊字符和MySQL保留字。
3. 字符集選擇:強烈建議顯式地指定 `CHARACTER SET utf8mb4`,這是現代的、兼容性最好的選擇。
4. 腳本化:在部署腳本或應用程序初始化腳本中,始終使用 `IF NOT EXISTS` 子句來使腳本具備冪等性(即執行多次的效果和執行一次一樣)。
5. 刪除數據庫:如果需要刪除數據庫,可以使用 `DROP DATABASE database_name;` 命令。此操作會立即刪除數據庫及其中的所有數據,且無法恢復,請極其謹慎地使用。
另外搭配便捷的MYSQL備份工具,可定時備份、異地備份,MYSQL導出導入。可本地連接LINUX里的MYSQL,簡單便捷。可以大大地提高工作效率喔。