📘

SQLの演算子(超基礎)

2023/06/11に公開

SQLの基礎を学習する

こんにちは!わいわわです!
データを扱っていくうえで欠かせないSQL。
スクールでも触っていましたが、Pythonの勉強と並行して学習をしていこうと思います。
データを扱える職種につけるよう、頑張ります!

今回もprogateさんのカリキュラムを
自分なりに説明していくような形でアウトプットします!

今回、大前提としてデータが用意されております。
・テーブル…purchasesテーブル 買い物のデータ
・カラム…name(商品名),price(価格),purchased_at(購入した日付)
 character_name(購入者名),category(食費など)
では実際に、データを抽出する記述方法を確認していきましょう!

目次

・WHEREと比較演算子
・LIKE演算子
・NOT
・IS NULL
・AND/OR演算子
・ORDER BYとLIMIT

データベースとクエリ

クエリ...「データを取得してください」といったようにデータベースに送る命令のこと
この命令を規則によって記述することでデータを抽出することができます!

WHEREと比較演算子

exercize1
SELECT *
FROM purchases
WHERE purchased_at <= "2017-08-01";

SELECTでカラムを指定、FROMでテーブルを指定できます。
「 * 」...すべてのカラムを指定できる記述方法
WHEREで条件を指定し対象のデータを抽出します。どこのレコードかを決めることができます。
また、比較演算子を用いてさらに条件を絞って抽出ができます。
今回はWHERE purchased_at <= "2017-08-01";
「買い物した日付が2017-08-01以前のレコードを持ってくる」
というような表記になります!

LIKE演算子

exercize2
SELECT *
FROM purchases
WHERE name LIKE "%プリン%";

「ある文字を含むデータ」を取得したい場合はLIKE演算子を使用します。
どんな文字列にも一致することを指すワイルドカードという概念がコンピュータの世界にはあり、
SQLは「%」が担っています。
このワイルドカード「%」を使用すると

  • %プリン%...前後にプリンがつくデータデータ
  • %プリン...前だけにプリンがつくデータ ※焼きプリン
  • プリン%...後ろにプリンがつくデータ ※プリンシェイク
    を指定することができます!
    今回はWHERE name LIKE "%プリン%";
    「nameカラムで前後関係なくプリンが含まれているデータ」
    を抽出することができます。

NOT

exercize3
SELECT *
FROM purchases
WHERE NOT character_name = "にんじゃわんこ";

NOT演算子
「〇〇を含まないデータ」や「〇〇に一致しないデータ」のような条件でデータを取得できる
書いている「以外」のデータを取得できるのがNOT演算子です。
今回はWHERE NOT character_name = "にんじゃわんこ";
「character_nameカラムがにんじゃわんこ以外のデータ」
を抽出しているという記述になります。

IS NULL

exercize4
SELECT *
FROM purchases
WHERE price IS NULL;

NULLとは...何もデータが保存されていない空のこと
どうしても欠損値がデータにはあり、それをNULLという表記で表します。
このNULLを取得する記述が「IS NULL」です。

  • IS NULL...指定したカラムがNULLであるデータを取得
  • IS NOT NULL...NULLではないデータを取得
    今回はWHERE price IS NULL;
    「priceがNULLのデータ」を取得しています!

AND/OR演算子

exercize5
SELECT *
FROM purchases
WHERE category = "食費"
AND character_name = "ひつじ仙人";

複数の条件からデータを絞ることができるのが下記の演算子です。

  • AND演算子...2つの条件を指定してデータを抽出する
  • OR演算子...条件1または条件2を満たすものどちらも抽出する
    今回はWHEREでcategoryが食費かつ、AND演算子を使用し
    character_nameが「ひつじ仙人」のデータを抽出できるというイメージです。

もしORに変えると、categoryが食費のデータと
character_nameがひつじ仙人のデータ、2つを抽出しますね!

ORDER BYとLIMIT

exercize6
SELECT *
FROM purchases
ORDER BY price DESC
LIMIT 5;

最後は抽出を並び替えたり制限したりする記述です。

  • ORDER BY
    抽出する順番を並び替えます。
    ASC…昇順に並び替えます。
    DESC…降順に並び替えます。
    WHEREと併用して書くことができ、
    条件を指定して抽出したうえで並び替えることも可能です!

  • LIMIT
    抽出するデータの数を制限できます。
    「細田で何件取得するか」というイメージになります。
    LIMITはクエリの末尾に記述することで、取得するデータの数を制限できます!
    またWHEREやORDER BYとも併用することができることも特徴ですね。

今回はORDER BY price DESCでpriceデータを降順に並び替え、
その中からLIMIT 5;で5つ、データを抽出するという記述です!

所感

今回はSQLで超々基礎の部分をまとめました。
ここまでは完璧!次はより深い部分をまとめていけたらと思います!

Discussion