SQL　SELECT文を覚えよう　初心者向け

データベースからデータを取得する際にSELECT文を覚えていないと、
思ったように取得出来ずに時間が経過した経験の持ち主です。

SELECT文では、
・特定のレコードを取得
・〇〇円以上の商品データのみ取得
・あるテキストデータ(例：Tシャツ)が含まれているデータのみ取得
等々覚える必要があることがわかります。


それではSELECT文を学習した内容をアウトプットしていきます。

<h1>前提</h1>

テーブル　box

カラム　id　name　message price　time

で登録されていることを前提例で進めていきます。


<h1> テーブルから特定のカラムを取得</h1>

※テーブルboxからnameのみ取得する場合

```php:sql

SELECT name　FROM　box;

訳
②どのカラムを取得したいの？(SELECT name)　①どのテーブルの？(FROM　box;)

```

データベースには複数のテーブルがありますので、
テーブル(box)を指定してあげた上でカラム(name)を指定する必要があります。

例えば、

```php:sql

ログイン用データベース作成した場合(テーブル：login)にも
ユーザー名(カラム：name)をつけたとします。
商品登録用データベース作成した場合(テーブル：touroku)にも
商品名(カラム：name)をつけたとします。
```

nameの区別をつけるため①が必要になるのです。


<h1>全てのデータを取得</h1>

※テーブルboxから全て取得する場合

```php:sql

SELECT * FROM box;

訳
②どのカラムを取得したいの？(SELECT *[全て])　①どのテーブルの？(FROM　box;)



補足：
勿論全てのカラム名を打ち込んでも同じ処理になります。

SELECT id name message time FROM box;
```






<h1>特定のデータを取得する</h1>

※テーブルboxから「とあるカラム(条件に当てはまる)」を取得する場合

「WHERE(どこの)」が登場します。
SELECT(どのテーブル)FROM(どのカラム)を取得するかを決めた後、
更に「その中でもズボンの含まれるデータのみ取得」する

```php:sql

SELECT * FROM box WHERE name = "ズボン";

テーブルboxの全てのカラムからカラムnameにズボンが入っているデータのみ取得
```
注意点：数値はクオーテーションで囲むのはダメ！

```php:sql
 
※カラムpriceがある場合

SELECT * FROM box WHERE  price= 4800;

```


<h1>比較演算子で特定データを取得</h1>

※テーブルboxから「〇〇円以上のデータのみ」を取得する場合



```php:sql

※カラムpriceがある場合

SELECT * FROM box WHERE  price >= 5000;

訳
テーブルboxの全てのカラムから 5000円以上のみ取得


SELECT * FROM box WHERE  price <= 5000;

訳
テーブルboxの全てのカラムから 5000円未満のみ取得

```



<h1>ある文字を含むデータを取得 -LIKE演算子-</h1>

% = ワイルドカードとして扱う
ワイルドカードとは・・・どんな文字列にも一致する。

LIKE演算子とは・・・指定したカラムが〇〇を含むレコードという条件


```php:sql

①LIKE演算子で%を前後につけた場合

SELECT * FROM box WHERE name LIKE = "%ズボン%";

取得できるできない(○取得できた×取得できない)

ズボン = ○

ダメージズボン = ○

ズボンダボダボ = ○



②LIKE演算子で%を前につけた場合

SELECT * FROM box WHERE name LIKE = "%ズボン";

取得できるできない(○取得できた×取得できない)

ズボン = ○

ダメージズボン = ○

ズボンダボダボ = ×



③LIKE演算子で%を後ろにつけた場合

SELECT * FROM box WHERE name LIKE = "ズボン%";

取得できるできない(○取得できた×取得できない)

ズボン = ○

ダメージズボン = ×

ズボンダボダボ = ○


```



<h1>NOT演算子を使い〇〇以外を取得する</h1>

※テーブルboxから「〇〇以外、含まないデータのみ」を取得する場合

```php:sql

①ズボン以外のデータを全て取得したい場合

SELECT * FROM box WHERE NOT name = "ズボン";

②ズボンという単語が入っている以外のデータを全て取得したい場合

SELECT * FROM box WHERE NOT name LIKE "%ズボン%";



③〇〇円を含まないデータを全て取得したい場合

SELECT * FROM box WHERE NOT price > 5000;

```

要するにそれを除きそれ以外を取得したい場合 NOT演算子を使います。




<h1>中身が入ってないカラムデータを取得</h1>

※テーブルboxから「中身が入っていない(NULL)」を取得する場合

NULLに関するデータを取得する場合　＝イコールはつけてはダメ！

```php:sql
・指定したカラムのデータがNULLであるものを取得する場合
SELECT * FROM box WHERE name IS NULL;

・指定したカラムデータのNULL以外を取得する場合
SELECT * FROM box WHERE name IS NOT NULL;

ここで「以外」NOT演算子が出てきました。

NULLに関するデータを取得する場合　＝イコールはつけてはダメ！

```



<h1>AND演算子とOR演算子で複数条件選択しよう</h1>

AND演算子
※テーブルboxから「条件１と条件２」共に満たしたデータを検索

OR演算子
※テーブルboxから「条件１または条件２」どちらかを満たすデータを検索


```php:sql
・AND演算子
SELECT * FROM box WHERE price >= 2000 AND name = "ズボン";
2000円以上のズボンをテーブルboxから検索

・OR演算子
SELECT * FROM box WHERE name = "ズボン" OR name = "Tシャツ";
テーブルboxからズボンまたはTシャツが入っているデータを検索

```



<h1>データを昇順と降順で並べ替える方法　-ORDER BY-</h1>

ORDER BY ASC
※昇順

ORDER BY DESC
※降順


```php:sql
・price(金額)の大きい順から並べ替えたい！
SELECT * FROM box ORDER BY DESC;
小さい順から並べ替えたいなら[ASC]

Tシャツ 6000
ズボン 4800
ズボン 2800
Tシャツ 2000

・カラムnameズボンのpriceを大きい順から並べ替えたい
SELECT * FROM box WHERE name ="ズボン" ORDER BY DESC;
小さい順から並べ替えたいなら[ASC]

ズボン 4800
ズボン 2800

```




<h1>何件取得するか決める　-LIMIT-</h1>

LIMIT = 制限する

WHEREとも、ORDERとも併用することが可能なので、
・上から１０件
・下から１０件
・カラムnameズボンだけ１０件
等々可能

```php:sql
・10件だけ取得したい！
SELECT * FROM box LIMIT 10;

```