全新部署的 MySQL 伺服器缺乏測試資料時,官方提供的 Sakila 樣本資料庫是最佳選擇。它模擬了一個 DVD 租賃業務系統,包含完整的表結構、視圖、預存程序、觸發器與測試資料,適用於功能驗證、效能測試、SQL 練習與教學演示。本文記錄完整安裝流程與驗證步驟。
官方下載頁面: MySQL Documentation - Example Databases
尋找 "Sakila Sample Database" 下載連結,通常為 sakila-db.zip 壓縮包。
[root@localhost ~]# unzip sakila-db.zip
Archive: sakila-db.zip
creating: sakila-db/
inflating: sakila-db/sakila-schema.sql # 結構定義:表、視圖、存儲過程、觸發器
inflating: sakila-db/sakila.mwb # MySQL Workbench 模型檔案
inflating: sakila-db/sakila-data.sql # 資料插入腳本 + 後置觸發器定義
[root@localhost ~]# cd sakila-db
[root@localhost sakila-db]# ls
sakila-data.sql sakila.mwb sakila-schema.sql
注意: 需 MySQL 5.0+ 版本,且具備建庫權限的帳號(如 root)。
# 1. 執行結構腳本(建立資料庫、表、視圖、程序、觸發器)
[root@localhost sakila-db]# mysql -uroot -p < sakila-schema.sql
Enter password:
# 2. 執行資料腳本(插入測試資料、建立後置觸發器)
[root@localhost sakila-db]# mysql -uroot -p < sakila-data.sql
Enter password:
執行順序不可顛倒: 必須先建結構再導資料,因資料腳本依賴結構腳本建立的表與觸發器。
[root@localhost sakila-db]# mysql -uroot -p
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sakila | <-- 目標資料庫
| scottdb |
| tempdb |
| test |
+--------------------+
mysql> USE sakila;
Database changed
mysql> SHOW TABLES;
+----------------------------+
| Tables_in_sakila |
+----------------------------+
| actor |
| actor_info |
| address |
| category |
| city |
| country |
| customer |
| customer_list |
| film |
| film_actor |
| film_category |
| film_list |
| film_text |
| inventory |
| language |
| nicer_but_slower_film_list |
| payment |
| rental |
| sales_by_film_category |
| sales_by_store |
| staff |
| staff_list |
| store |
+----------------------------+
23 rows in set (0.00 sec)
mysql> SELECT COUNT(*) FROM customer;
+----------+
| COUNT(*) |
+----------+
| 599 |
+----------+
核心業務實體關係(ER 圖可透過 sakila.mwb 在 Workbench 開啟查看):
SET NAMES utf8mb4; 或 SET NAMES utf8;[client] default-character-set=utf8mb4
SELECT staff_id FROM payment ORDER BY amount DESC LIMIT 1;
Sakila 資料庫結構規範、資料量適中(核心表百萬級以下)、業務邏輯清晰,是 MySQL 學習與測試的標準樣本庫。安裝完成後,建議先瀏覽 sakila.mwb 理解 ER 關係,再針對性編寫練習 SQL。