Sakila Sample Database x MySQL on Docker
Sakila Sample DatabaseはMySQL公式サイトから提供されるSampleデータです。
正直なところ使うケースはそこまでないと思いますが、急にQueryを試したい時やある程度のデータが欲しいときは有効に利用できます。
DB Structure
ここから確認できます。
- Tables
- Views
- Stored Procedures
- Stored Functions
- Triggers
の確認ができます。
Usage Examplesも用意されています。
Installation
公式のMySQL Docker Imageとdocker-composeを利用して構築します。
まず、Other MySQL Documentationからsakila databasのZipをダウンロードします。
解凍すると、3つのファイルが出てくると思います。
$unzip sakila-db
$ls
sakila-schema.sql sakila-data.sql sakila.mwb
ファイル名を以下のように変更します。
# sakila-schema.sql -> 1.sakila-schema.sql
# sakila-data.sql -> 2.sakila-data.sql
$mv sakila-schema.sql 1.sakila-schema.sql
&& mv sakila-data.sql 2.sakila-data.sql
次、docker-compose.yml
を作成しましょう。
$touch docker-compose.yml
version: '3.2'
services:
mysql:
container_name: mysql-sakiladb-sample
image: mysql:5.7
platform: linux/x86_64
volumes:
- ./initdb:/docker-entrypoint-initdb.d
environment:
MYSQL_ROOT_PASSWORD: root
TZ: 'Asia/Tokyo'
LANG: 'ja_JP.UTF-8'
ports:
- 3306:3306
MYSQL_ROOT_PASSWORD
とimageのversion
は好みの変更で問題ありません。
ちなみに
platform: linux/x86_64
はAppleシリコン(M1 or M2)で必要です。
docker-compose.yml
と同じフォルダの中にinitdb
という名のフォルダを作成して、↑でダウンロードして用意したファイル3つを移動させます。
$mkdir initdb
$mv 1.sakila-schema.sql 2.sakila-data.sql sakila.mwb initdb
$ls
docker-compose.yml initdb
$ls initdb
1.sakila-schema.sql 2.sakila-data.sql sakila.mwb
start and test
$docker-compose up -d
$docker exec -it mysql-sakiladb-sample bash
# ここからContainerの内
$mysql -u root -p
# passwordはMYSQL_ROOT_PASSWORDの値です
show databases
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sakila |
| sys |
+--------------------+
5 rows in set (0.01 sec)
show tables
mysql> use sakila
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)
count
mysql> select count(*) from actor;
+----------+
| count(*) |
+----------+
| 200 |
+----------+
1 row in set (0.00 sec)
以上です。
Link
Sakila Sample Database: https://dev.mysql.com/doc/sakila/en/
Sakila Structure: https://dev.mysql.com/doc/sakila/en/sakila-structure.html
Sakila Usage Examples: https://dev.mysql.com/doc/sakila/en/sakila-usage.html
MySQL Docker Image(Official): https://hub.docker.com/_/mysql
Other MySQL Documentation(Official): https://dev.mysql.com/doc/index-other.html
Discussion