オライリーの「初めてのSQL」でKatacodaが使用できなくなっているのでMacでの環境構築をザックリ


### この記事でできること

オライリーの「初めてのSQL」で使用する環境が構築できます。

#### 必要な知識

・最低限ググってコピペできる程度のターミナル操作力


#### 筆者環境

**Homebrewを使用してMySQLをインストールするのでHomebrewがインストールされている前提になります。**

・mac OS Catalina10.15.7
・Homebrew 3.5.8
・[Sakila-dbのサンプルファイル](https://dev.mysql.com/doc/index-other.html)

#### 公式ドキュメント該当部分

https://dev.mysql.com/doc/sakila/en/sakila-installation.html


### 1.MySQLのインストール

ターミナルから以下のコマンドを実行して待ちます。

しばらく待つとMySQLのインストールが完了します。


``` Terminal
brew install mysql
```

コマンドでMySQLのバージョンを確認します。
管理者権限を求められた場合は頭にsudoをつけてください。

``` Terminal
mysql -v
```

### 2.Sakila-dbのMySQLへのインストール

事前にSakila-dbをダウンロードしてパス指定が簡単なルートディレクトリなどに解凍しておきましょう。

まずはMySQL自体を起動します。
起動コマンド、停止コマンドは以下になります。
``` Terminal
$ mysql.server start # 起動
$ mysql.server start --skip-grant-tables #　パスワード無しでログイン
$ mysql.server stop # 停止
```

ターミナルの左側に「mysql>」という文字が表示されていることを確認します。

``` Terminal
mysql>
```

以下のSQL文でデータベースのインポートを行います。
「source ファイルへのフルパス」でインポートできます。

ここでつまる方がいそうなので、
Macでのファイルへのフルパス取得方法３つ紹介します。
①Finderでsqlファイルを選択して「Option + command + c」
②ターミナルにインポートしたいsqlファイルをドラッグ&ドロップする
③ターミナルのcdコマンドでsqlファイルがあるディレクトリまで行き
「pwd | pbcopy」をし、ファイル名だけ手打ちする。

１番簡単なのは①です。

``` MySQL
source /Users/XXX/sakila-db/sakila-schema.sql
source /Users/XXX/sakila-db/sakila-data.sql

# schemaから先にインポートすること。
# フルパスは動作環境による異なります。
```

特にエラーが出なければ読み込みが完了しています。

ここからは確認作業を行います。
先頭行にコマンド、その下はコマンドの出力結果となります。


``` Mysql
show databases;

# 以下コマンドの出力結果
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

```

``` MySQL
use sakila;

# 以下コマンドの出力結果
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
```

``` MySQL
SHOW FULL TABLES;

# 以下コマンドの出力結果

+----------------------------+------------+
| Tables_in_sakila           | Table_type |
+----------------------------+------------+
| actor                      | BASE TABLE |
| actor_info                 | VIEW       |
| address                    | BASE TABLE |
| category                   | BASE TABLE |
| city                       | BASE TABLE |
| country                    | BASE TABLE |
| customer                   | BASE TABLE |
| customer_list              | VIEW       |
| film                       | BASE TABLE |
| film_actor                 | BASE TABLE |
| film_category              | BASE TABLE |
| film_list                  | VIEW       |
| film_text                  | BASE TABLE |
| inventory                  | BASE TABLE |
| language                   | BASE TABLE |
| nicer_but_slower_film_list | VIEW       |
| payment                    | BASE TABLE |
| rental                     | BASE TABLE |
| sales_by_film_category     | VIEW       |
| sales_by_store             | VIEW       |
| staff                      | BASE TABLE |
| staff_list                 | VIEW       |
| store                      | BASE TABLE |
+----------------------------+------------+
23 rows in set (0.01 sec)

```

``` MySQL

SELECT COUNT(*) FROM film;

# 以下コマンドの出力結果
+----------+
| COUNT(*) |
+----------+
|     1000 |
+----------+
1 row in set (0.00 sec)

```
``` MySQL
SELECT COUNT(*) FROM film_text;

# 以下コマンドの出力結果

+----------+
| COUNT(*) |
+----------+
|     1000 |
+----------+
1 row in set (0.00 sec)

```

これにて環境構築完了になります。

まだ２章の前半までしか読んでいないので追加の環境構築があった場合、追記していきます。