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?

SQL #3【LIKE / IN / DISTINCT / ORDER BY / LIMIT / OFFSET】

Posted at

はじめに

こちらのMembersテーブルを使用します。

id name age home
1 Yamamoto 20 Tokyo
2 Sato 25 Osaka
3 Yamada 16 Tokyo
4 Tanaka 35 Nagoya
5 Kato 42 Osaka

LIKE

大文字小文字を区別しない文字列検索を行う

SELECT * FROM テーブル名 WHERE カラム名 LIKE "パターン";

ワイルドカード検索(部分一致)

ワイルドカード文字 意味  例
% 0文字以上の任意の文字列 "A%" → Aで始まる
_ 任意の1文字 "A_" → Aの後に1文字続く

Yamaで始まるメンバーを取得する

SELECT * FROM Members WHERE name LIKE "Yama%";
id name age home
1 Yamamoto 20 Tokyo
3 Yamada 16 Tokyo

IN

  • 指定した値の中に該当するデータを取得する
  • 戻り値の型は Boolean
SELECT * FROM テーブル名 WHERE カラム名 IN (1, 2, 3, ...);

年齢が25歳と35歳のメンバーを取得する

SELECT * FROM Members WHERE age IN (25, 35);
id name age home
2 Sato 25 Osaka
4 Tanaka 35 Nagoya

NULLの取り扱い
IN / NOT IN では NULL の抽出ができない。
NULL を抽出したい場合、IS NULL か IS NOT NULL を使用する。

DISTINCT

指定したカラムにおいて、重複データをまとめる

SELECT DISTINCT カラム名 FROM テーブル名;

homeを重複なしで取得する

SELECT DISTINCT home FROM Members;
home
Tokyo
Osaka
Nagoya

ORDER BY

  • 抽出するデータを並び替える
  • ASC(昇順、既定値)か DESC (降順)を末尾で指定する
  • NULL は最小値として扱われる
SELECT * FROM テーブル名 ORDER BY カラム名 ASC/DESC

年齢の高い順で並べ替える

SELECT * FROM Members ORDER BY age DESC;
id name age home
5 Kato 42 Osaka
4 Tanaka 35 Nagoya
2 Sato 25 Osaka
1 Yamamoto 20 Tokyo
3 Yamada 16 Tokyo

LIMIT

  • クエリによる出力結果の行数を制限する
  • ORDER BY と組み合わせることが多い
SELECT カラム名 FROM テーブル名 LIMIT 抽出する行数(整数)

年齢が若い順に2人のメンバーを取得する

SELECT * FROM Members ORDER BY age ASC LIMIT 2;
id name age home
3 Yamada 16 Tokyo
1 Yamamoto 20 Tokyo

OFFSET

  • 指定した行数分だけ結果の表示をスキップする
  • LIMITORDER BY と組み合わせることが多い

年齢が3.4番目に高いメンバーを取得する

SELECT * FROM Members ORDER BY age DESC LIMIT 2 OFFSET 2;
id name age home
2 Sato 25 Osaka
1 Yamamoto 20 Tokyo

LIMIT / OFFSET の注意点
複雑なクエリやデータ量が大きい場合には非効率。
→ スキップされた行もすべて読み込まれて処理されるから。

まとめ

  • LIKE : 文字列検索(部分一致もOK)
  • IN : 指定した値に該当するデータを取得
  • DISTINCT : 重複をなくす
  • ORDER BY : 並べ替え(昇順・降順)
  • LIMIT : 抽出するデータを制限
  • OFFSET : 指定した行数分のデータ表示をスキップ

参考文献

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?