0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[SQL学習③] WHEREに関連した演算子 (LIKE・BETWEEN・IN・ANY・ALL)

Last updated at Posted at 2021-10-15

WHERE句は 真か偽か

Where句には、「真か偽になる式」しか書けない。 テーブルを参照するにあたって、 一行ずつ順番に「真」なのか「偽」なのかで処理を分けていくから。

NULLの判定

スクリーンショット 2021-10-13 9.27.11.png

アイスのジャンルは、NULLです。
NULLとは「未定義」「何もないこと」です。

NULLの判定は以下の通りになります。

SELECT *
FROM 商品表
WHERE ジャンル IS NULL

・・NULLであることを判定する
 式 IS NULL
・・NULLでないことを判定する
式 IS NOT NULL

正直、NULLかどうかの判定を比較演算子を使ってやりたくなってしまいます。
(ジャンル = NULL みたいな)

比較演算子=でNULLの判定はできない!!!!

比較演算子は「値と値を比較するもの。」 そのため、「値ではないNULL」は比較できない。

Like演算子

部分一致の検索ができます。 ![スクリーンショット 2021-10-13 9.27.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/f3c0fd5c-398b-1151-ab6c-15722e012739.png)
SELECT * FROM 商品表
//ケーキの前後に何かついてても良い(部分一致)
WHERE 商品名 LIKE '%ケーキ%'

その他
'%ケーキ'は チーズケーキを取ってこれる
'ケーキ%'はチーズケーキを取ってこれない。(ケーキスペシャルは取ってこれる)
'_ケーキ'は、頭に任意の1文字がある文字列を取ってくる。

BETWEEN演算子

ある範囲に値が収まってるかどうかを判定できます。 商品表から200円以上、500円以下のものを取得します。
SELECT *
FROM 商品表
WHERE 販売価格 BETWEEN 200 AND 500

IN / NOT IN 演算子

合致するもの、しないものを一度に持ってこれます。

スクリーンショット 2021-10-13 9.27.11.png

商品名が プリン と アイスのものを引っ張ってきます。

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演算子を使用します。

スクリーンショット 2021-10-13 9.27.11.png

UPDATE 商品表
SET    ジャンル = 'ケーキ'
WHERE  商品名  ='チーズケーキ'
AND    商品ID = 1
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?