データベースからデータを取得する際にSELECT文を覚えていないと、
思ったように取得出来ずに時間が経過した経験の持ち主です。
SELECT文では、
・特定のレコードを取得
・〇〇円以上の商品データのみ取得
・あるテキストデータ(例:Tシャツ)が含まれているデータのみ取得
等々覚える必要があることがわかります。
それではSELECT文を学習した内容をアウトプットしていきます。
前提
テーブル box
カラム id name message price time
で登録されていることを前提例で進めていきます。
テーブルから特定のカラムを取得
※テーブルboxからnameのみ取得する場合
SELECT name FROM box;
訳
②どのカラムを取得したいの?(SELECT name) ①どのテーブルの?(FROM box;)
データベースには複数のテーブルがありますので、
テーブル(box)を指定してあげた上でカラム(name)を指定する必要があります。
例えば、
ログイン用データベース作成した場合(テーブル:login)にも
ユーザー名(カラム:name)をつけたとします。
商品登録用データベース作成した場合(テーブル:touroku)にも
商品名(カラム:name)をつけたとします。
nameの区別をつけるため①が必要になるのです。
全てのデータを取得
※テーブルboxから全て取得する場合
SELECT * FROM box;
訳
②どのカラムを取得したいの?(SELECT *[全て]) ①どのテーブルの?(FROM box;)
補足:
勿論全てのカラム名を打ち込んでも同じ処理になります。
SELECT id name message time FROM box;
特定のデータを取得する
※テーブルboxから「とあるカラム(条件に当てはまる)」を取得する場合
「WHERE(どこの)」が登場します。
SELECT(どのテーブル)FROM(どのカラム)を取得するかを決めた後、
更に「その中でもズボンの含まれるデータのみ取得」する
SELECT * FROM box WHERE name = "ズボン";
テーブルboxの全てのカラムからカラムnameにズボンが入っているデータのみ取得
注意点:数値はクオーテーションで囲むのはダメ!
※カラムpriceがある場合
SELECT * FROM box WHERE price= 4800;
比較演算子で特定データを取得
※テーブルboxから「〇〇円以上のデータのみ」を取得する場合
※カラムpriceがある場合
SELECT * FROM box WHERE price >= 5000;
訳
テーブルboxの全てのカラムから 5000円以上のみ取得
SELECT * FROM box WHERE price <= 5000;
訳
テーブルboxの全てのカラムから 5000円未満のみ取得
ある文字を含むデータを取得 -LIKE演算子-
% = ワイルドカードとして扱う
ワイルドカードとは・・・どんな文字列にも一致する。
LIKE演算子とは・・・指定したカラムが〇〇を含むレコードという条件
①LIKE演算子で%を前後につけた場合
SELECT * FROM box WHERE name LIKE = "%ズボン%";
取得できるできない(○取得できた×取得できない)
ズボン = ○
ダメージズボン = ○
ズボンダボダボ = ○
②LIKE演算子で%を前につけた場合
SELECT * FROM box WHERE name LIKE = "%ズボン";
取得できるできない(○取得できた×取得できない)
ズボン = ○
ダメージズボン = ○
ズボンダボダボ = ×
③LIKE演算子で%を後ろにつけた場合
SELECT * FROM box WHERE name LIKE = "ズボン%";
取得できるできない(○取得できた×取得できない)
ズボン = ○
ダメージズボン = ×
ズボンダボダボ = ○
NOT演算子を使い〇〇以外を取得する
※テーブルboxから「〇〇以外、含まないデータのみ」を取得する場合
①ズボン以外のデータを全て取得したい場合
SELECT * FROM box WHERE NOT name = "ズボン";
②ズボンという単語が入っている以外のデータを全て取得したい場合
SELECT * FROM box WHERE NOT name LIKE "%ズボン%";
③〇〇円を含まないデータを全て取得したい場合
SELECT * FROM box WHERE NOT price > 5000;
要するにそれを除きそれ以外を取得したい場合 NOT演算子を使います。
中身が入ってないカラムデータを取得
※テーブルboxから「中身が入っていない(NULL)」を取得する場合
NULLに関するデータを取得する場合 =イコールはつけてはダメ!
・指定したカラムのデータがNULLであるものを取得する場合
SELECT * FROM box WHERE name IS NULL;
・指定したカラムデータのNULL以外を取得する場合
SELECT * FROM box WHERE name IS NOT NULL;
ここで「以外」NOT演算子が出てきました。
NULLに関するデータを取得する場合 =イコールはつけてはダメ!
AND演算子とOR演算子で複数条件選択しよう
AND演算子
※テーブルboxから「条件1と条件2」共に満たしたデータを検索
OR演算子
※テーブルboxから「条件1または条件2」どちらかを満たすデータを検索
・AND演算子
SELECT * FROM box WHERE price >= 2000 AND name = "ズボン";
2000円以上のズボンをテーブルboxから検索
・OR演算子
SELECT * FROM box WHERE name = "ズボン" OR name = "Tシャツ";
テーブルboxからズボンまたはTシャツが入っているデータを検索
データを昇順と降順で並べ替える方法 -ORDER BY-
ORDER BY ASC
※昇順
ORDER BY DESC
※降順
・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
何件取得するか決める -LIMIT-
LIMIT = 制限する
WHEREとも、ORDERとも併用することが可能なので、
・上から10件
・下から10件
・カラムnameズボンだけ10件
等々可能
・10件だけ取得したい!
SELECT * FROM box LIMIT 10;