SQL基本 SELECT文

#■SQLとは
データを保存しておく場所データベースで使うもの

■データベースにデータを
保管
取得
更新
消去
するものがSQL

###■図書館での例え

データベース：　図書館の書庫
テーブル：　書庫の棚
データ：　本

#■SQLで何ができる？

●データの保管,取得、更新,消去
●テーブルの作成、更新,消去
●アプリ開発時にデータベースを操作できる。
●データ分析してビジネス活動を分析

#■テーブルとは
表形式で種類別にデータを保存する棚

テーブル名：　Kimetsu

| name |kokyu | feature |
|:-----------:|:------------:|:------------:|
| 伊之助      |獣の呼吸       | 猪突猛進        |
| 煉獄    | 炎の呼吸    | 眉毛二股     |
| 富岡義勇      | 水の呼吸      | 天然       |
| 禰󠄀豆子       |          |竹        |
| 炭治郎       | 水の呼吸      | 主人公       |

テーブル名：　eva

| name |kawaii | role |
|:-----------:|:------------:|:------------:|
| 綾波レイ     |10      | パイロット      |
| アスカ    | 3   | パイロット   |
| ユイ      | 6     |       |
| ミサト   | 4     |作戦部長       |

●テーブル：　表全体
●カラム：　縦の列
●レコード：　横の列

#■SQLを書く上での秘訣

●予約後(SELECT,WHERE,etc)は大文字
●特定の予約後(SELECT,WHERE,ORDER BY,etc)の後は改行しよう
●SELECTで列名指定,LIMITを使いはやくする。データが多いと重い

#■SELECT文
条件を書いてSELECTしたデータを取り出す。
#####■カラムの取得

``` SQL
SELECT name,feature
FROM kimetsu
```
結果：kimetsuのテーブルからnameとfeatureのデータを取り出しました。

| name | feature |
|:-----------:|:------------:|
| 伊之助      |猪突猛進        |
| 煉獄    | 眉毛二股     |
| 富岡義勇      | 天然       |
| 禰󠄀豆子       |竹        |
| 炭治郎       |主人公       |

####■カラム名の変更　AS

``` SQL
SELECT name AS '名前', feature AS '特徴'
FROM kimetsu;
```
AS
結果：カラム名が変更される。

| 名前 | 特徴 |
|:-----------:|:------------:|
| 伊之助      |猪突猛進        |
| 煉獄    | 眉毛二股     |
| 富岡義勇      | 天然       |
| 禰󠄀豆子       |竹        |
| 炭治郎       |主人公       |

####■全カラム名の取得　*

``` SQL
SELECT *
FROM kimetsu;
```
*
結果：*を使えば全部のカラム名を取得できる。

| name |kokyu | feature |
|:-----------:|:------------:|:------------:|
| 伊之助      |獣の呼吸       | 猪突猛進        |
| 煉獄    | 炎の呼吸    | 眉毛二股     |
| 富岡義勇      | 水の呼吸      | 天然       |
| 禰󠄀豆子       |          |竹        |
| 炭治郎       | 水の呼吸      | 主人公       |

####■呼吸の一覧を取得 DISTINCT(重複なし！！)

``` SQL
SELECT DISTINCT(kokyu)
FROM kimetsu;
```
DISTINCT
結果： 水の呼吸の重複なしでカラムの呼吸が取得できる。


|kokyu | 
|:------------:|
|獣の呼吸       | 
| 炎の呼吸    |
| 水の呼吸      |
|          |

#■WHERE
####■条件指定(WHERE)　テーブル名：eva

``` SQL
SELECT name, kawaii
FROM eva
WHERE kawaii > 5;
```
WHERE(条件を指定できる。)
結果：可愛いが5より大きいキャラの名前と可愛いを取得

| name |kawaii |
|:-----------:|:------------:|
| 綾波レイ     |10      |
| ユイ      | 6     |

####■条件指定 WHEREと AND(両方満たす)

``` SQL
SELECT *
FROM eva
WFERE kawaii > 5 AND role = 'パイロット';
```
AND：両方の条件を満たす
結果：テーブル名evaの中で可愛い5以上でパイロットのもの

| name |kawaii | role|
|:-----------:|:------------:|:------------:|
| 綾波レイ     |10      |パイロット|

####■ 条件指定　or(どちらかを満たす)

``` SQL
SELECT *
FROM eva
WHERE kawaii > 5 OR role = 'パイロット';
```
or: どちらかの条件を満たす
結果：パイロットか可愛いが5以上のもの

| name |kawaii | role |
|:-----------:|:------------:|:------------:|
| 綾波レイ     |10      | パイロット      |
| アスカ    | 3   | パイロット   |
| ユイ      | 6     |       |

####■条件指定　BETWEN(〜の間)

``` SQL
SELECT *
FROM eva
WHERE kawaii BETWEEN 4 AND 6;
```
BETWEEN:~間のもの
結果:可愛いが4〜6の間のもの

| name |kawaii | role |
|:-----------:|:------------:|:------------:|
| ユイ      | 6     |       |
| ミサト   | 4     |作戦部長       |

####■条件指定　IN:まとめて指定

``` SQL
SELECT *
FROM eva
WHERE role IN('パイロット','作戦部長');
```
IN: まとめて指定
NOT IN: まとめて否定
結果:パイロットと作戦部長をまとめて指定

| name |kawaii | role |
|:-----------:|:------------:|:------------:|
| 綾波レイ      | 10     |パイロット       |
| アスカ      | 3     |パイロット       |
| ミサト   | 4     |作戦部長       |

####■条件指定 LIKE あいまい検索

``` SQL
SELECT *
FROM eva
WHERE name LIKE 'ア%';
```
LIKE:　あいまいに検索する '条件%'
結果:アから始まるname

| name |kawaii | role |
|:-----------:|:------------:|:------------:|
| アスカ      | 3     |パイロット       |

####■条件指定 空の値を指定 IS NULL

``` SQL
SELECT *
FROM eva
WHERE role IS NULL;
```

IS NULL: NULL指定
IS NOT NULL: NULLじゃない

結果:値がないものを指定

| name |kawaii | role |
|:-----------:|:------------:|:------------:|
| ユイ      | 6    |       |

####■レコードを2行だけ取得せよ LIMIT

``` SQL
SELECT *
FROM eva
LIMIT 2;
```

LIMIT: 行数上限指定
結果:上から2行のレコードを指定

| name |kawaii | role |
|:-----------:|:------------:|:------------:|
| 綾波レイ     |10      | パイロット      |
| アスカ    | 3   | パイロット   |

####■昇順で並び替えよ　ORDER BY

```SQL
SELECT *
FROM eva
ORDER BY kawaii;
```

ORDER BY: 昇順に並び替える
結果：kawaiiの番号を小さい数字から順番に並び替える。

| name |kawaii | role |
|:-----------:|:------------:|:------------:|
| アスカ    | 3   | パイロット   |
| ミサト   | 4     |作戦部長       |
| ユイ      | 6     |       |
| 綾波レイ     |10   | パイロット      |

####■後順で並び替えよ ORDER BY DESC

``` SQL
SELECT *
FROM eva
ORDER BY kawaii DESC;
```
DESC: 後順で並び替える。
結果:可愛いを後順で並べる。

| name |kawaii | role |
|:-----------:|:------------:|:------------:|
| 綾波レイ     |10   | パイロット      |
| ユイ      | 6     |       |
| ミサト   | 4     |作戦部長       |
| アスカ    | 3   | パイロット   |