PP1中心生活

ゆるく技術系のメモや趣味の車や釣りのメモをかいてます

SQL基礎 基本的な文法の個人的メモ

概要

SQLとはなんぞや、、という状態だったところとてもわかりやすい解説がYoutube 山浦さんにあったため自分なりのメモ(まんまですが)

以下の例のテーブルを用いてその動作を確認。 テーブルはこちらを使用。Hondaの名車をまとめました。

meisya
まずこちらの車の名前の列と動力伝達方式を取得する場合はSELECT FROMを用いる

SELECT name,type //カラム名
FROM meisya; //テーブル名

こちらの出力は

SELECT FROMによる抽出
となる。

次に動力伝達方式の中でユニークなものだけ取得したい場合(FF,MR)に重複がある場合

SELECT DISTINCT(type) 
FROM meisya; 

により

DISTINCTによる重複の除外
のようにユニークな値を取得できる。

次に条件指定には'WHERE'を用いる

SELECT name,cool //カラム名
FROM meisya  //テーブル名
WHERE cool >8 ;

とすることで

WHEREによる条件指定
と条件による絞り込みも可能。

次にAND 駆動伝達方式がMRdでcoolが8より大きいものの場合は

SELECT * //アスタリスクですべてのカラム
FROM meisya //テーブル名
WHERE cool >8 AND type='MR';

と指定すれば、PPIだけが絞り込めます笑

AND

同様にOR

SELECT * //アスタリスクですべてのカラム
FROM meisya //テーブル名
WHERE cool >8 OR type='MR';

とするとPP1,AP1,NA1が絞り込めます。

次に`7<=cool<=9のレコードを取得したい場合は

SELECT * //アスタリスクですべてのカラム
FROM meisya //テーブル名
WHERE cool BETWEEN 7 AND 9
````
とすることで取得可能です。出力は
<figure class="figure-image figure-image-fotolife" title="BETWEEN">[f:id:tyoku-pp1:20220927133257p:plain]<figcaption>BETWEEN</figcaption></figure>

となります。
次に駆動方式がMRかFFのものを取得することを考えてみます。もちろんORでもできるのですがよりスマートに記述する場合は1`IN`を用います。

SELECT * //アスタリスクですべてのカラム FROM meisya //テーブル名 WHERE cool IN ('MR','FF');

とすると
<figure class="figure-image figure-image-fotolife" title="IN">[f:id:tyoku-pp1:20220927133053p:plain]<figcaption>IN</figcaption></figure>
`NOT IN`を用いることで含まないものを指定することも可能です。
次にあいまい検索。Pから始まるあの名車ってなんだっけ(そんな状況ないか、、、)場合は

SELECT * //アスタリスクですべてのカラム FROM meisya //テーブル名 WHERE name LIKE 'P%';

とすることでPP1を思い出すこともできます。

次にレコードのtypeの空白行を取得したい場合は
<figure class="figure-image figure-image-fotolife" title="NULLが含まれるレコード">[f:id:tyoku-pp1:20220927133754p:plain]<figcaption>NULLが含まれるレコード</figcaption></figure>

SELECT * //アスタリスクですべてのカラム FROM meisya //テーブル名 WHERE type IS NULL;

とすることでEP3が取得できます。ちなみにEP3はFFですね。エンジンはK20Aですね。
`IS NOT NULL`とすることで空白ではないレコードの取得も可能です。

次にテーブルの取得したい行数を指定したいときもあります(データが多すぎて取得に時間がかかる場合など、、、)
その場合は`LIMIT`を用います。

SELECT * //アスタリスクですべてのカラム FROM meisya //テーブル名 LIMIT 2

とすることで2行のみ取得が可能です。

次に並び替え。昇順の場合は

SELECT * //アスタリスクですべてのカラム FROM meisya //テーブル名 ORDER BY cool ;

とすることでかっこいい順にならべ変えが可能です。(私の主観です、、、異論は認めます)
降順の場合は

SELECT * //アスタリスクですべてのカラム FROM meisya //テーブル名 ORDER BY cool DESC;

とすることで降順での並び替えが可能です。descendingの略でしょう。

## SQLのコツ
- 予約後は大文字
- 特定の予約語(SELECT,WHERE,ORDER BY...)のあとは改行する
- SELECTで列名指定、LIMITにより行を制限すると高速実行が可能。