GCP CloudSQLを使ってみた

## ■ 今回お話すること
- GCP CloudSQLの環境設定について
- Cloud Shellを使用して、テーブル作成・取得する方法について
- 忘備録的な記事となっておりますご注意を（SQLの基本的なことはお話しません）

## ■ 前提
- GCP上にプロジェクト作成済みであること

## ■ 今回の環境
### > GCP:Cloud SQL
```
MySQL5.7 第２世代
```

## ■ GCP CloudSQLの環境設定
### ① GCPのナビメニュー → SQL を選択
![スクリーンショット 2018-12-21 21.54.20.png](https://qiita-image-store.s3.amazonaws.com/0/252086/523de443-a848-e4de-784d-394e3a46208f.png)

### ② 上部メニューにある「インスタンスを作成」からインスタンスを作成する
![スクリーンショット 2018-12-21 21.57.42.png](https://qiita-image-store.s3.amazonaws.com/0/252086/86d3fb62-01b9-2c24-8b9c-b73b3acdf2d5.png)

### ③ 今回は、MySQLを選択して「作成」する
![スクリーンショット 2018-12-21 21.58.24.png](https://qiita-image-store.s3.amazonaws.com/0/252086/4ebbcf75-05c8-3a66-8a5d-222f9c77fb4d.png)

### ④ 第２世代をゴリ押ししてきてくれたので、「第２世代を選択」する
![スクリーンショット 2018-12-21 21.59.32.png](https://qiita-image-store.s3.amazonaws.com/0/252086/ad65daf0-6489-fb54-353e-5ab2f107a39b.png)

### ⑤ インスタンスIDと、パスワードを指定して「作成」
※ 今回はリージョンはus-central1で設定します。
![スクリーンショット 2018-12-21 22.01.58.png](https://qiita-image-store.s3.amazonaws.com/0/252086/5532ef45-62ac-9ba2-4580-c331d9376ae7.png)

### ⑥ ⑤で作成したインスタンスIDを選択して、インスタンスの詳細を表示し、Cloud Shellを使用して接続確認を実施
![スクリーンショット 2018-12-21 22.18.27.png](https://qiita-image-store.s3.amazonaws.com/0/252086/cf1562a6-b974-961f-df86-83f96ef1c482.png)

### ⑦ 画面に、Shell画面が起動したら以下のコマンドを実行して、接続する
```
Welcome to Cloud Shell! Type "help" to get started.
Your Cloud Platform project in this session is set to [プロジェクト名].
Use “gcloud config set project [PROJECT_ID]” to change to a different project.
nunnally*******@cloudshell:~ ([プロジェクト名])$ gcloud sql connect firebase-app --user=root --quiet
```
### ⑧ ⑦を実行したら、rootのパスワードを入力してくれたまえ的に要求されるので⑤で設定したパスワードをコピー＆ペーストではなく入力する
```
Connecting to database with SQL user [root].Enter password:
```

### ⑨ 以下のメッセージが表示されて、MySQL >となっているので作成＆接続完了
```
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 99
Server version: 5.7.14-google-log (Google)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]>
```

## ■ Cloud Shellを使用して、テーブル作成・取得する方法
- 手順としては、以下の手順となります。
 1. データベース作成
 2. 使用するデータベース設定
 3. テーブル作成
 4. テーブルにデータ登録
 5. 登録したデータを取得する

### 1. データベース作成
- Cloud Shellで、データベースを作成していきます。<br>試しに、「sample_dev」というデータベースを作ります。<br>Query OKと出れば、作成に成功してます。

```
MySQL [(none)]> CREATE DATABASE sample_dev;

Query OK, 1 row affected (0.16 sec)
```

### 2. 使用するデータベース設定
- 先程作成したデータベースを使用しますよ〜と明示的にMySQLに宣言します。<br>Database changedと出れば、選択済みとなっています。

```
MySQL [(none)]> use sample_dev;
Database changed
```

### 3. テーブル作成
- id、name列があるusersというテーブルを作成していきます。

```
MySQL [sample_dev]> CREATE TABLE users (
    ->  id MEDIUMINT NOT NULL AUTO_INCREMENT,
    ->  name varchar(255) DEFAULT NULL,
    ->  PRIMARY KEY (id)
    -> );
Query OK, 0 rows affected (0.17 sec)
MySQL [sample_dev]>
```

### 4. テーブルにデータ登録
- users.nameに私の名前「nunnally」を登録してみましょう。

```
MySQL [sample_dev]> INSERT INTO users
    -> (name)
    -> VALUES (
    ->  'nunnally'
    -> );
Query OK, 1 row affected (0.17 sec)
```

### 5. 登録したデータを取得する
- 上記で登録した「nunnally」というレコードが取得できたら登録＆取得成功です。

```
MySQL [sample_dev]> select * from users;
+----+----------+
| id | name     |
+----+----------+
|  1 | nunnally |
+----+----------+
1 row in set (0.15 sec)
MySQL [sample_dev]>
```

## ■ まとめ
この設定と簡単なSQLさえ覚えておけば手軽にRDBを体感することができるので色々試してみたいと思いました(●´ω｀●)