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 5 years have passed since last update.

[メモ] SQL学習1 (WHERE, 比較演算子, LIKE, NOT, IS NULL, IS NOT NULL, AND, OR, ORDER BY, LIMIT)

Last updated at Posted at 2019-11-22

はじめに

  • 表自体を「テーブル」と言う
  • 縦の列を「カラム」と言う
  • 横の列を「レコード」と言う
  • SELECTで全カラムから取得する場合は「*」を使う
  • SQLは大文字小文字は区別されない
  • 最後は必ずセミコロン(;)をつけてクエリの終わりをデータベースに教える
  • データ指定時にテキスト型と日付は必ずダブルクォーテーション(")またはシングルクォーテーション(')で囲む、数値データはその必要はない

WHERE

特定のデータを取得する「どこの」を意味を持つ「WHERE」を使う。
どこのレコードを取得するかを指定できる。

SELECT 取得したいデータが入っているカラム名
FROM 上記で指定したカラム名が存在するテーブル名
WHERE 特定のカラム名と様々な条件;

以下の例はUserテーブルのnameカラムのデータが「森田」であるデータを取得している。

SELECT *
FROM user
WHERE name = "森田";

比較演算子

比較演算子の種類 意味
a < b a が b より小さいデータを検索
a > b a が b より大きいデータを検索
a <= b a が b 以下のデータを検索
a >= b a が b 以上のデータを検索

以下の例はEventテーブルのpurchased_atカラムのデータが2019-11-01以降のデータを検索している。

SELECT *
FROM event
WHERE purchased_at >= "2019-11-01";

LIKE

ある特定の文字を含むデータを取得したい場合は「LIKE」を使う。
基本形は以下のようになる。

SELECT *
FROM user
WHERE name LIKE "文字列";

LIKEを使う際は**ワイルドカード(%)**を用いる。
ワイルドカードは必ずクォーテーション内につけること。

以下の例は「おでん」を含むデータを全て取得している。

SELECT *
FROM food
WHERE name LIKE "%おでん%";

「おでん」を例にワイルドカードを以下にまとめた。

検索結果 意味
%おでん% 味噌おでん, おでんくん 前後関係なく、「おでん」を含む全ての文字列を検索
%おでん おでん, 関西風おでん 最後の文字が「おでん」を含む文字列を検索(後方一致)
おでん% おでん, おでん定食 最初の文字が「おでん」を含む文字列を検索(前方一致)

NOT

特定のものを含まない条件でデータを取得する際に使われる。

以下の例は価格が1000円以上を含まないフルーツを検索している。

SELECT *
FROM fruit
WHERE NOT price >= 1000;

ワイルドカードと併用可能。

SELECT *
FROM food
WHERE NOT name LIKE "%チョコ%";

IS NULL

なんのデータも保存されていない場合はNULLとなる。
NULLを含むデータを取得したい場合は「IS NULL」を使う。

以下の例はuserテーブルのageカラムのデータがNULLであるものを取得している。

SELECT *
FROM user
WHERE age IS NULL;

IS NOT NULL

IS NULLとは逆に、NULLを含まないデータを取得したい場合は「IS NOT NULL」を使う。

以下の例はuserテーブルのageカラムのデータがNULLでないものを取得している。

SELECT *
FROM user
WHERE age IS NOT NULL;

なお、NULLを含む/含まないデータを取得する際に以下(A,B)のようにイコール「=」を使うことはできない。

-- A
SELECT *
FROM user
WHERE age = NULL;

-- B
SELECT *
FROM user
WHERE NOT age = NULL;

AND

複数の条件を満たすデータを取得したい場合に使われる。

以下の例はuserテーブルの出身地カラム(北海道)と年齢カラム(20歳)の両方を満たすデータを検索している。

SELECT *
FROM user
WHERE local = "北海道"
AND age = 20;

OR

複数の条件のうち、どちらか片方を満たすデータを取得したい場合に使われる。

以下の例はuserテーブルの出身地カラム(北海道)と年齢カラム(20歳)のどちらか片方を満たすデータを検索している。

SELECT *
FROM user
WHERE local = "北海道"
OR age = 20;

ORDER BY

取得したデータを並び替える際は「ORDER BY」を使う。
クエリの末尾に記述する。 WHEREと併用可。

  • ASC(昇順)は、小 → 大へ
  • DESC(降順)は、大 → 小へ

以下の例は取得した結果を降順に並び替えている。

SELECT *
FROM fruit
WHERE price >= 300
ORDER BY price DESC;

LIMIT

取得したいデータ件数を制限できる。
ORDER BYと同様にWHEREと併用可。
クエリの末尾に記述する。

以下の例はWHEREで指定した条件で5件のデータを取得している。

SELECT *
FROM fruit
WHERE price >= 300
LIMIT 5;
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?