首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 官方樣本資料庫 Sakila 安裝與驗證完整指南

     編輯:MySQL 綜合教學

MySQL 官方樣本資料庫 Sakila 安裝與驗證完整指南

全新部署的 MySQL 伺服器缺乏測試資料時,官方提供的 Sakila 樣本資料庫是最佳選擇。它模擬了一個 DVD 租賃業務系統,包含完整的表結構、視圖、預存程序、觸發器與測試資料,適用於功能驗證、效能測試、SQL 練習與教學演示。本文記錄完整安裝流程與驗證步驟。

一、下載 Sakila 樣本資料庫

官方下載頁面: 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 |
+----------+

五、Sakila 資料庫結構簡介

核心業務實體關係(ER 圖可透過 sakila.mwb 在 Workbench 開啟查看):

  • 核心表: film(影片)、customer(客戶)、rental(租賃)、payment(付款)、inventory(庫存)
  • 維度表: actor、category、language、city、country、store、staff
  • 關聯表: film_actor、film_category
  • 視圖: customer_list、film_list、sales_by_film_category、staff_list 等
  • 預存程序/函數: rewards_report、film_in_stock、get_customer_balance 等
  • 觸發器: 租賃/歸還時自動更新庫存可用狀態

六、常見問題與解決

問題 1:查詢結果出現亂碼
原因: 連接字符集與資料庫字符集不匹配(Sakila 預設 utf8)
解決: 連接前執行 SET NAMES utf8mb4; 或 SET NAMES utf8;
永久解決: 配置 my.cnf [client] default-character-set=utf8mb4
技巧:單筆最高付款的員工 ID
SELECT staff_id FROM payment ORDER BY amount DESC LIMIT 1;

七、應用場景建議

  • SQL 學習練習: 複雜 JOIN、子查詢、視圖、聚合分析
  • 效能測試基準: 配合 sysbench 或 tpcc-mysql 進行壓測前的功能驗證
  • 工具評測: 測試備份工具、監控工具、遷移工具的相容性
  • 教學演示: 完整業務模型適合課堂講解資料庫設計

Sakila 資料庫結構規範、資料量適中(核心表百萬級以下)、業務邏輯清晰,是 MySQL 學習與測試的標準樣本庫。安裝完成後,建議先瀏覽 sakila.mwb 理解 ER 關係,再針對性編寫練習 SQL。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved