WeHelp
MySQL 是一套穩定、高效能的資料庫管理系統,是全球網頁開發與應用程式最常搭配的核心工具之一。
  1. MySQL 下載安裝
  2. 啟動、連線測試
  3. Database 管理
  4. SQL 資料表管理
  5. SQL 資料管理
  6. SQL 資料取得、篩選
  7. 欄位的資料型態
  8. 資料交易簡介、操作
  9. 使用者管理
  10. Python 程式連線
  11. Node.js 程式連線
  12. PHP 程式連線
Database 管理
## 一、MySQL Database 的概念 在 MySQL 中,**Database(資料庫)** 是一組資料表(Table)、檢視表(View)、預存程序(Stored Procedure)、函式(Function)、觸發器(Trigger)等資料庫物件的集合。 簡單來說: - **Database**:資料的邏輯容器 - **Table**:實際儲存資料的表格 - **Column(欄位)**:資料的屬性 - **Row(資料列)**:一筆資料 - **Schema**:在 MySQL 中通常可視為 Database 的同義詞 例如,可以建立一個名為 `school` 的資料庫,裡面包含: ```text school ├── students ├── teachers └── courses ``` --- ## 二、查看 MySQL 中的 Database ### 1. 查看所有 Database ```sql SHOW DATABASES; ``` 或: ```sql SHOW SCHEMAS; ``` ### 2. 查看目前使用的 Database ```sql SELECT DATABASE(); ``` 如果尚未選擇資料庫,結果會是 `NULL`。 ### 3. 使用指定的 Database ```sql USE school; ``` 選擇後,後續建立或操作資料表時,預設會在 `school` 資料庫中執行。 --- # 三、新增 Database ## 1. 基本語法 ```sql CREATE DATABASE database_name; ``` 例如: ```sql CREATE DATABASE school; ``` 這會建立名為 `school` 的資料庫。 --- ## 2. 建議使用字元集與排序規則 ```sql CREATE DATABASE school CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 說明: - `CHARACTER SET utf8mb4`:設定字元集,支援中文與 Emoji - `COLLATE utf8mb4_unicode_ci`:設定字串排序與比較規則 - `ci` 通常表示不區分大小寫(case-insensitive) 在較新的 MySQL 版本,也可使用: ```sql CREATE DATABASE school CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci; ``` --- ## 3. 避免資料庫已存在時發生錯誤 ```sql CREATE DATABASE IF NOT EXISTS school; ``` 如果 `school` 已存在,MySQL 不會重新建立,也不會產生錯誤。 --- ## 4. 查看 Database 的建立設定 ```sql SHOW CREATE DATABASE school; ``` 可能得到類似結果: ```sql CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ ``` --- # 四、修改 Database MySQL 中,Database 本身可修改的項目主要是: 1. 預設字元集 2. 預設排序規則 3. 部分資料庫屬性 ## 1. 修改預設字元集 ```sql ALTER DATABASE school CHARACTER SET utf8mb4; ``` ## 2. 修改預設排序規則 ```sql ALTER DATABASE school COLLATE utf8mb4_unicode_ci; ``` ## 3. 同時修改字元集與排序規則 ```sql ALTER DATABASE school CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 也可以使用: ```sql ALTER SCHEMA school CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` `ALTER DATABASE` 與 `ALTER SCHEMA` 在 MySQL 中作用相同。 > 注意:修改 Database 的預設字元集與排序規則,主要會影響之後新建的資料表或欄位;通常不會自動轉換現有資料表的欄位設定。若要修改既有資料表,需另外使用 `ALTER TABLE`。 例如: ```sql ALTER TABLE students CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` --- ## 4. MySQL 是否能直接重新命名 Database? MySQL 沒有一般性的: ```sql RENAME DATABASE old_name TO new_name; ``` 這種標準指令。 若要更改 Database 名稱,通常做法是: 1. 建立新的 Database 2. 將資料表搬移或匯出、匯入 3. 確認資料完整後刪除舊 Database 例如搬移單一資料表: ```sql RENAME TABLE old_db.students TO new_db.students; ``` 但若資料庫中包含許多資料表、檢視表、觸發器或其他物件,建議使用 `mysqldump` 匯出再匯入。 --- # 五、刪除 Database ## 1. 基本語法 ```sql DROP DATABASE database_name; ``` 例如: ```sql DROP DATABASE school; ``` 此操作會刪除: - Database - Database 中的所有資料表 - 所有資料 - View、Trigger 等相關物件 這是一項**不可逆的危險操作**。 --- ## 2. 避免資料庫不存在時發生錯誤 ```sql DROP DATABASE IF EXISTS school; ``` 如果 `school` 不存在,MySQL 不會產生錯誤。 --- ## 3. 刪除前先確認 可以先查看資料庫: ```sql SHOW DATABASES; ``` 查看資料庫中的資料表: ```sql USE school; SHOW TABLES; ``` 必要時先備份: ```bash mysqldump -u root -p school > school_backup.sql ``` 之後可以使用備份檔案還原: ```bash mysql -u root -p school < school_backup.sql ``` --- # 六、常用 Database 管理指令整理 | 操作 | SQL 指令 | |---|---| | 查看所有 Database | `SHOW DATABASES;` | | 建立 Database | `CREATE DATABASE school;` | | 建立且避免重複錯誤 | `CREATE DATABASE IF NOT EXISTS school;` | | 選擇 Database | `USE school;` | | 查看目前 Database | `SELECT DATABASE();` | | 查看建立設定 | `SHOW CREATE DATABASE school;` | | 修改字元集 | `ALTER DATABASE school CHARACTER SET utf8mb4;` | | 修改排序規則 | `ALTER DATABASE school COLLATE utf8mb4_unicode_ci;` | | 刪除 Database | `DROP DATABASE school;` | | 刪除且避免不存在錯誤 | `DROP DATABASE IF EXISTS school;` | --- # 七、完整範例 ```sql -- 1. 建立資料庫 CREATE DATABASE IF NOT EXISTS school CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 2. 選擇資料庫 USE school; -- 3. 查看目前使用的資料庫 SELECT DATABASE(); -- 4. 修改資料庫預設排序規則 ALTER DATABASE school COLLATE utf8mb4_unicode_ci; -- 5. 查看資料庫設定 SHOW CREATE DATABASE school; -- 6. 確認後刪除資料庫 DROP DATABASE IF EXISTS school; ``` 執行 `DROP DATABASE` 前應確認資料是否已備份,因為資料庫一旦刪除,通常無法直接復原。
相關學習地圖、教學課程
Python 後端工程、資料庫
從 0 開始,成為後端工程師的學習路徑。