WHERE句は 真か偽か
Where句には、「真か偽になる式」しか書けない。 テーブルを参照するにあたって、 一行ずつ順番に「真」なのか「偽」なのかで処理を分けていくから。NULLの判定
アイスのジャンルは、NULLです。
NULLとは「未定義」「何もないこと」です。
NULLの判定は以下の通りになります。
SELECT *
FROM 商品表
WHERE ジャンル IS NULL
・・NULLであることを判定する
式 IS NULL
・・NULLでないことを判定する
式 IS NOT NULL
正直、NULLかどうかの判定を比較演算子を使ってやりたくなってしまいます。
(ジャンル = NULL みたいな)
比較演算子=でNULLの判定はできない!!!!
比較演算子は「値と値を比較するもの。」 そのため、「値ではないNULL」は比較できない。Like演算子
部分一致の検索ができます。 SELECT * FROM 商品表
//ケーキの前後に何かついてても良い(部分一致)
WHERE 商品名 LIKE '%ケーキ%'
その他
'%ケーキ'は チーズケーキを取ってこれる
'ケーキ%'はチーズケーキを取ってこれない。(ケーキスペシャルは取ってこれる)
'_ケーキ'は、頭に任意の1文字がある文字列を取ってくる。
BETWEEN演算子
ある範囲に値が収まってるかどうかを判定できます。 商品表から200円以上、500円以下のものを取得します。SELECT *
FROM 商品表
WHERE 販売価格 BETWEEN 200 AND 500
IN / NOT IN 演算子
合致するもの、しないものを一度に持ってこれます。商品名が プリン と アイスのものを引っ張ってきます。
SELECT *
FROM 商品表
WHERE 商品名 IN ('プリン','アイス')
// NOT INで書くと、
WHERE 商品名 NOT IN ('チーズケーキ','くるくる','フルーティー')
ANY・ALL 演算子
いまいち、使い所がわからないなあという感じがします。・・( )内のどれかと一致するものを持ってくる
販売価格 IN (200,350,500)
・・( )内のどれかより小さいものを持ってくる
販売価格 < ANY (200,350,500)
・・( )内の全部より小さいものを持ってくる→100円のアイスが該当
販売価格 < ALL (200,350,500)
複数の条件
複数の条件式を用いて判定を行いたい場合には、 AND OR演算子を使用します。UPDATE 商品表
SET ジャンル = 'ケーキ'
WHERE 商品名 ='チーズケーキ'
AND 商品ID = 1