SQLを学ぼう！【2章】

前章の記事（SQLを学ぼう！【1章】）では、MySQLに接続し、データベースの作成や指定、指定したデータベースにテーブルを作成し、データを挿入する作業について行いました！今回の記事では挿入したデータを検索し、表示させる作業を行なっていきたいと思います。

前章をご覧になりたい方は、下記にリンクを貼っておきますので、ご参照ください。
 ・[SQLを学ぼう！【１章】](https://qiita.com/haruki25596/private/8c1200db79fb9ae2200b)


##前章の復習
前章の復習になりますが、作成したlistテーブルに、データを挿入しました。
テーブルへデータを挿入するには、**INSERT文**を用いて行いましたね。

**INSERT INTO テーブル名 (カラム名1, カラム名2, ...) VALUES (値1, 値2, ...);**
 

```ruby:ターミナル
mysql> INSERT INTO list (id, name, address) VALUES (1, '学　太郎', '東京都世田谷区');
Query OK, 1 row affected (0.20 sec)
```

データを挿入できたら、保存したデータを表示させました。
テーブル内にデータを表示するには、**SELECT文**を用いましたね。

**SELECT * FROM テーブル名;**

```ruby:ターミナル
mysql> SELECT * FROM list;
+------+---------------+---------------------------+
| id   | name          |  address                  |                                
+------+---------------+---------------------------+
|    1 | 学 太郎      　　　　| 東京都世田谷区 　　　　　　　　　　　　　　　　　　　　　　　　　 |
+------+---------------+---------------------------+
1 row in set (0.17 sec)
```

以上が簡単に前章の復習になります。

##必要なカラムのデータのみ抽出する

「id」と「名前」のみ表示することもできます。その場合は、以下のようにSELECT文を記述します。

**SELECT カラム名1, カラム名2, ..., カラム名n FROM テーブル名;** 
**SELECTとFROMの間にカラム名を指定することで、必要なカラム名の値のみ抽出できます。**

それでは実際に、SELECTとFROMの間に「id」と「name」を指定し、「id」と「名前」のみ表示させてみます。

```ruby:ターミナル
mysql> SELECT id, name FROM list;
+------+---------------+
| id   | name          |
+------+---------------+
|    1 | 学 太郎        |
+------+---------------+
1 row in set (0.18 sec)
```

##条件を指定してデータを表示させる
SELECT文を用いると、カラム名からデータを表示するだけでなく、条件を指定してデータを表示することもできます。

条件を指定してデータを表示するには、SELECT文の中で**WHERE句**を用います。
現在、データは1件しかないので、条件指定ができるように複数のデータを準備しました。

```ruby:ターミナル
mysql> select * from list;
+------+---------------+---------------------------+-------+
| id   | name          | address  　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　  |  age  |
+------+---------------+---------------------------+-------+
|    1 | 学 太郎　　　　　　　　　　　　　　 | 東京都世田谷区      　　　　　　　　　　   |23     |
|    2 | 中村 二郎　      | 愛知県稲沢市 　　　　　　　　　　　　　　　　　　　　　　　　　　　 |30     |
|    3 | 山科 三郎　　　　　　　　　　　 | 千葉県千葉市    　　　　　　　　　　　　　     |27     |
|    4 | 鈴木 一郎　　　　　　　　　　　 | 福岡県飯塚市   　　　　　　　　　　　　　      |35     |
|    5 | 中山 五郎　　　　　　　　　　　 | 山梨県山梨市 　　　　　　　　　　　　　　　　　　　　　　　　　　　 |20     |
|    6 | 小林 大介　　　　　　　　　　　 | 東京都千代田区 　　　　　　　　　　　　　　　　　　　　　　　 |40     |
|    7 | 大場 芳樹　　　　　　　　　　　 | 東京都港区  　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　|26     |
|    8 | 中川 博之　　　 　　　　　　　　| 滋賀県彦根市 　　　　　　　　　　　　　　　　　　　　　　　　　　　 |31     |
|    9 | 宮崎 遥輝　　　　　　　　　　　 | 東京都八王子市 　　　　　　　　　　　　　　　　　　　　　　　　 |29     |
|    10 | 青木 正太郎　　　　　　 | 東京都町田市 　　　　　　　　　　　　　　　　　　　　　　　　　　　 |47     |
|    11 | 佐藤 美穂　　　　　　　　　 | 福島県白河市  　　　　　　　　　　　　　　　　　　　　　　　　　　　|24     |
+------+---------------+---------------------------+--------+
11 rows in set (0.17 sec)
```
今回の準備したデータは年齢（age）も追加してあります。条件指定をわかりやすく説明するためです。
それでは11件のデータを保存できたところで、さっそく条件を指定して検索してみます。
まず、「年齢」で条件を指定して抽出してみたいと思います。年齢のカラム名は「age」でした。今回は、「35歳以上」を抽出することにします。
WHERE句を用いて、**「SELECT * FROM list WHERE age >= 35;」**のように記述します。

```ruby:ターミナル
mysql> SELECT * FROM list WHERE age >= 35;
+------+---------------+------------------------+------+
| id   | name          | address                 |age  |
+------+---------------+------------------------+------+
|    4 | 鈴木 一郎      |   福岡県飯塚市           | 35   |
|    6 | 小林 大介      |   東京都千代田区         | 40   |
|   10 | 青木 正太郎     |  東京都町田市           | 47   |
+------+---------------+-----------------------+-------+
3 rows in set (0.16 sec)
```

文字列でも指定できます。
たとえば、住所のカラムで「福岡県」在住者を検索してみます。
同じくWHERE句を用いて、住所のカラム（address）が「福岡県」の条件を指定します。

```ruby:ターミナル
mysql> SELECT * FROM list WHERE address = '福岡県';
+------+---------------+------------------------+------+
| id   | name          | address                 |age  |
+------+---------------+------------------------+------+
|    4 | 鈴木 一郎      |   福岡県飯塚市           | 35   |
+------+---------------+-----------------------+-------+
1 rows in set (0.16 sec)
```

複数の条件も指定できます。
住所が「東京都」で、なおかつ「35歳以上の人」を検索するには、「AND」を用いて記述します。

```ruby:ターミナル
mysql> SELECT * FROM list WHERE address='東京都' AND age >= 35;
+------+---------------+------------------------+------+
| id   | name          | address                 |age  |
+------+---------------+------------------------+------+
|    6 | 小林 大介      |   東京都千代田区         | 40   |
|   10 | 青木 正太郎     |  東京都町田市           | 47   |
+------+---------------+-----------------------+-------+
2 rows in set (0.16 sec)
```

住所が「東京都」、もしくは「35歳以上の人」を検索するには、「OR」を用いましょう。

```ruby:ターミナル
mysql> SELECT * FROM list WHERE address='東京都' OR age >= 35;
+------+---------------+------------------------+------+
| id   | name          | address                 |age  |
+------+---------------+------------------------+------+
|    4 | 鈴木 一郎      |   福岡県飯塚市           | 35   |
|    6 | 小林 大介      |   東京都千代田区         | 40   |
|   10 | 青木 正太郎     |  東京都町田市           | 47   |
+------+---------------+-----------------------+-------+
3 rows in set (0.16 sec)
```

以上がデータ検索し、表示させる方法になります。
次章ではすでに挿入したデータを更新する方法とデータを削除する方法について記事を書いていきたいと思います！
最後までご覧いただきまして、ありがとうございました！