SQL 検索の基礎編
2019-08-25
SQL 検索編
・基本の形
SELECT
選択列
FROM テーブル名
SELECTの後に選択したい列(カラム名)を書きます。AS 〜 とすることで別名にすることができます。ASを付けた場合、AS以下の名前が列名として表示されます。
FROMのあとは、データを取ってきたいテーブル名を書きます。
重複行を一つにまとめる DISTINCT
SELECT DISTINCT 列名
FROM テーブル名
同じ値が入っている行については2つ表示するのではなく、1行でまとめます。
行を指定する WHERE
SELECT 列名
FROM テーブル名
WHERE 取得したい条件
下記では、Shohinテーブルからshohin_meiとshohin_bunruiを取得する。条件としてshohin_bunruiが"衣服"のもの。つまりWHERE抜きだと単純にshohin_meishohin_bunruiの列を全行取得しますが、WHEREに続けて条件を書けば、それに合致した行のみ取得できます。
算術演算子
SQL文の中では四則演算(+ ー * / )も使えます。
注意1:
NULLが入っている式は答えが全てNULLになります。
5 + NULL = NULL
10 - NULL = NULL
2 * NULL = NULL
注意2:
データ型が違うものは+ で連結できません。
どちらかデータ型を変換して合わせましょう。
文字型 → 数字型 へ変換 (できない)
数字型 → 文字型 へ変換(できる)
注意:
WHERE句の後ろに四則演算は使えません(条件式は書ける)。
WHERE句に書けるもの、書けないものは別途ブログに書きます。
比較演算子
= 等しい
<> 等しくない
>= 以上
> より大きい
<= 以下
< より小さい
hanbai_tankaが1000(円)以上のものを条件にする
日付に使うと、以降、以前など指定できます。
もしCHAR型(文字型)の'3'に指定すると辞書式順序になります。
論理演算子
〜でないもの AND演算子
hanbai_tankaが1000(円)以下のもの
または OR演算子
shohin_bunruiが事務用品または衣服
ANDとORの組み合わせに注意:
( )で分けないと意図しないデータが取得されます。
( )の中から処理されるので取得したい条件を整理して書きましょう。
以下 、「shohin_bunruiが事務用品」と「登録日が9/11または9/20」となります。
事務用品は必ず取得できます。が()の入れ子を誤ると取得できなくなる可能性も。
論理演算子の優先度は
1、NOT
2、AND
3、OR
()をつければ優先順位を引き上げる事ができます。
取得したい情報は何か整理してうまく()を使おう!