【備忘録】SELECTでデータを抽出する

◆ 全てのカラム&特定のカラムを抽出する方法

画像1

・16行目では、全てのレコードが抽出されている。
 * は全てのカラムを意味している。
・17行目のように、特定のカラムだけを抽出させたい場合には、
 カンマ区切りで指定してあげればOK!

画像2

↑ では、id と message だけを posts から抽出している。

◆ 条件に合うレコードだけを抽出する方法

画像3

・16行目では、likes が 10 以上の条件だけ抽出している。
 17行目では、message が 'Danke' じゃないレコードを抽出している。

画像4

コンパイル成功!

◆ 条件を組み合わせる方法(AND編)

画像5

・16行目では、likes が 10 以上、かつ 20 以下のレコードを抽出している。
 また、〇以上、〇以下という条件の場合に限り、特殊な書き方もできる。
・17行目では、BETWEEN というキーワードを使うことで、
 16行目と全く同じ意味にすることも可能!
・18行目では、BETWEEN の条件を反転して書いている。

画像6

BETWEEN の条件が反転して表示されている。

◆ 条件を組み合わせる方法(OR編)

画像7

・16行目では、likes が 4 もしくは 12 のレコードを抽出している。
 また、= で判定する条件を OR で繋いだ場合、特殊な書き方もできる。
・17行目では、IN というキーワードを使うことで、
 16行目と全く同じ意味にすることも可能!
・18行目では、IN の条件を反転して書いている。

◆ LIKEと%で文字列を抽出する方法(前方一致編)

画像8

・16行目では、't' から始まるメッセージだけを抽出している。
・17行目では、BINARY というキーワードを使うことで、
 大文字小文字が区別されるため、小文字の 't' から始まるレコードだけが
 抽出される。

画像9

コンパイル成功!

◆ LIKEと%で文字列を抽出する方法(後方&部分一致)

画像10

・16行目では、'su' で終わるレコードを抽出している。
 17行目では、'i' が含まれるレコードが抽出される。

画像11

コンパイル結果

◆ LIKEと_で文字列を抽出する方法

画像12

・16行目では、massage の 3 文字目が a のレコードだけを抽出している。
 17行目では、massage の 3 文字目が a 以外のレコードが抽出される。

画像13

LIKEの条件が反転して表示されている。

◆ %と_の文字自体を抽出する方法

画像14

・16行目では、真ん中の % がその文字自体を表現する場合は、
 \ を % の前に付けることで、% を含むレコードだけを抽出している。
 17行目では、同様に _ が入ったレコードだけが抽出される。

画像15

コンパイル成功!

◆ NULLのレコードを抽出する方法

画像16

・16行目では、12 以外と NULL 以外のレコードを抽出している。
 17行目では、NULL も含めて抽出される。
 18行目では、NULL 以外のレコードが抽出される。

画像17

17行目の条件が反転して表示されている。

◆ 抽出結果を並び替える方法(小さい順、大きい順)

画像18

・16行目では、likes を小さい順で並び替えをしている。
 17行目では、DESC というキーワードを使うことで、
 likes を逆順(大きい順)で並び替えられる。

画像19

小さい順、大きい順に並び替えられている。

◆ 抽出結果を並び替える方法(アルファベット順)

画像20

・16行目では、likes をアルファベット順で並び替えをしている。

画像21

アルファベット順に並び替えられている。

◆ 特定の件数を抽出する方法(上位件数、除外件数)

画像22

・16行目では、likes の上位 3 件だけを抽出している。
 17行目では、OFFSET というキーワードを使うことで、
 ikes の上位 2 件を除外して、その後 3件が抽出される。

画像23

17行目での最終的に 3 件が抽出されている。

◆ 関数で文字列の一部を切り出す方法

画像24

・16行目では、massage と massage の 3 文字目以降を切り出ししている。
 17行目では、massage と massage の 3 文字目から 2 文字分を
 切り出ししている。
 18行目では、- の値を与えることで、末尾から 2 文字分を抽出している。

画像25

それぞれ正しい結果で表示されている。

◆ 関数で文字列を連結する方法

画像26

・16行目では、連結したい値をカンマ区切りで渡すことで、
 文字列を連結している。

画像27

◆ 文字数の長さを抽出する方法

画像28

・16行目では、massage と massage の文字数を抽出している。
 17行目では、massage と massage の日本語の文字数も抽出している。

画像30

LENGTH()の場合に限り、日本語の文字数がおかしくなるため、
CHAR_LENGTH()というキーワードを使って、日本語の文字数を抽出する。

◆ ざっくりまとめると・・・

① 全てのカラムを抽出→ * 
  特定のカラムを抽出→ カンマ区切りで指定
② 条件に合うレコードだけを抽出→ WHERE
③ 条件を組み合わせる→ AND なおかつ
            OR もしくは
④ 0 文字以上の任意の文字を抽出→ %
  大文字小文字を区別して抽出→ BINARY
⑤ 任意の 1 文字を抽出→ _
⑥ %と_の文字自体を抽出→ \%、\_
⑦ NULL のレコードを抽出→ IS NULL
  NULL 以外のレコードを抽出→ IS NOT NULL
⑧ 抽出結果を並び替える→ ORDER BY 小さい順
              DESC 大きい順
              カンマ区切りで指定 アルファベット順
⑨ 特定の件数を抽出→ LIMIT 上位
            OFFSET 除外
⑩ 文字列の一部を切り出す→ SUBSTRING()
⑪ 文字列を連結する→ CONCAT()
⑫ 文字数の長さを抽出する→ LENGTH()
  日本語の文字数の長さを抽出する→ CHAR_LENGTH()


この記事が気に入ったらサポートをしてみませんか?