SQLの演算子(超基礎)
SQLの基礎を学習する
こんにちは!わいわわです!
データを扱っていくうえで欠かせないSQL。
スクールでも触っていましたが、Pythonの勉強と並行して学習をしていこうと思います。
データを扱える職種につけるよう、頑張ります!
今回もprogateさんのカリキュラムを
自分なりに説明していくような形でアウトプットします!
今回、大前提としてデータが用意されております。
・テーブル…purchasesテーブル 買い物のデータ
・カラム…name(商品名),price(価格),purchased_at(購入した日付)
character_name(購入者名),category(食費など)
では実際に、データを抽出する記述方法を確認していきましょう!
目次
・WHEREと比較演算子
・LIKE演算子
・NOT
・IS NULL
・AND/OR演算子
・ORDER BYとLIMIT
データベースとクエリ
クエリ...「データを取得してください」といったようにデータベースに送る命令のこと
この命令を規則によって記述することでデータを抽出することができます!
WHEREと比較演算子
SELECT *
FROM purchases
WHERE purchased_at <= "2017-08-01";
SELECT
でカラムを指定、FROM
でテーブルを指定できます。
「 * 」...すべてのカラムを指定できる記述方法
WHEREで条件を指定し対象のデータを抽出します。どこのレコードかを決めることができます。
また、比較演算子を用いてさらに条件を絞って抽出ができます。
今回はWHERE purchased_at <= "2017-08-01";
で
「買い物した日付が2017-08-01以前のレコードを持ってくる」
というような表記になります!
LIKE演算子
SELECT *
FROM purchases
WHERE name LIKE "%プリン%";
「ある文字を含むデータ」を取得したい場合はLIKE演算子を使用します。
どんな文字列にも一致することを指すワイルドカードという概念がコンピュータの世界にはあり、
SQLは「%」が担っています。
このワイルドカード「%」を使用すると
- %プリン%...前後にプリンがつくデータデータ
- %プリン...前だけにプリンがつくデータ ※焼きプリン
- プリン%...後ろにプリンがつくデータ ※プリンシェイク
を指定することができます!
今回はWHERE name LIKE "%プリン%";
で
「nameカラムで前後関係なくプリンが含まれているデータ」
を抽出することができます。
NOT
SELECT *
FROM purchases
WHERE NOT character_name = "にんじゃわんこ";
NOT演算子
「〇〇を含まないデータ」や「〇〇に一致しないデータ」のような条件でデータを取得できる
書いている「以外」のデータを取得できるのがNOT演算子です。
今回はWHERE NOT character_name = "にんじゃわんこ";
で
「character_nameカラムがにんじゃわんこ以外のデータ」
を抽出しているという記述になります。
IS NULL
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演算子
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
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