LoginSignup
3
1

More than 1 year has passed since last update.

【SQL】SELECT文の基本的な使い方

Posted at

はじめに

SELECTはテーブルからデータを取得するときに使います。
その基本的な使い方についてご説明します。

例として使用するテーブル

今回の例として以下のmembersテーブルをご用意しました。
membersテーブル

id name age team_number
1 hitomi 39 2
2 nibe 25 1
3 mikuni 21 3
4 yosoya 31 2
5 ikarugi 42 1
6 mutsuki 29 3

SELECTの基本構文

最も基本となる構文は以下の通りです。

.sql
SELECT (カラム名) FROM (テーブル名);

今回の例では(カラム名) は「id」「name」「age」「team_number」、 (テーブル名)は「members」です。
試しにnameを抽出してみましょう。

sample.sql
SELECT name FROM members;

出力結果は以下のようになります。

name
hitomi
nibe
mikuni
yosoya
ikarugi
mutsuki

「,」で複数指定

カラム名の間に「,」を入れることで複数項目を指定できます。

sample.sql
SELECT name,age FROM members;

出力結果は以下のようになります。

name age
hitomi 39
nibe 25
mikuni 21
yosoya 31
ikarugi 42
mutsuki 29

「*」で全指定

カラム名の代わりに「*」を入れることですべてのカラムを取得します。

sample.sql
SELECT * FROM members;

出力結果は以下のようになります。

id name age team_number
1 hitomi 39 2
2 nibe 25 1
3 mikuni 21 3
4 yosoya 31 2
5 ikarugi 42 1
6 mutsuki 29 3

「WHERE」で条件を設定

先ほどの基本構文の後ろに「WHERE (条件文)」を挿入することで、条件に一致するデータのみを取得できます。

.sql
SELECT (カラム名) FROM (テーブル名) WHERE (条件文);

試しに30歳以上のメンバーを取得してみます。

sample.sql
SELECT * FROM members WHERE age >= 30;

出力結果は以下のようになります。

id name age team_number
1 hitomi 39 2
4 yosoya 31 2
5 ikarugi 42 1

比較によく使う記号は以下の通りです。

記号 条件
= 等しい
< 小さい
> 大きい
<= 以下
>= 以上
!= 等しくない

「ORDER BY」で並べ替え

基本構文の後ろに「ORDER BY (カラム名) [ASCまたはDESC]」を挿入することで、(カラム名)の値に基づき、昇順または降順でデータを並べ替えできます。
「ASC」で昇順(小さい方から)、「DESC」で降順(大きい方から)になります。「ASC」は省略できます。

.sql
SELECT (カラム名) FROM (テーブル名) ORDER BY (カラム名) ASCまたはDESC;

メンバーをチーム番号順で昇順に並べ替えてみます。(ASC省略)

sample.sql
SELECT * FROM members ORDER BY team_number;

出力結果は以下のようになります。

id name age team_number
2 nibe 25 1
5 ikarugi 42 1
1 hitomi 39 2
4 yosoya 31 2
3 mikuni 21 3
6 mutsuki 29 3

チーム番号の小さい方から順になっているのがわかります。

「WHERE」と「ORDER_BY」の組み合わせ

「WHERE」と「ORDER BY」を組み合わる場合、以下のように書くことができます。
SQL文が長い場合、読みやすいように改行やインデントを入れるのが通例となっています。

.sql
  SELECT (カラム名)
    FROM (テーブル名) 
   WHERE (条件文)
ORDER BY (カラム名) ASCまたはDESC;

以下は「members」テーブルから「team_number」が2でないものすべて(*)を「age」で降順(DESC)で並べ替えて取り出すSQL文です。

sample.sql
  SELECT *
    FROM members 
   WHERE team_number != 2
ORDER BY age DESC;

出力結果は以下のようになります。

id name age team_number
5 ikarugi 42 1
6 mutsuki 29 3
2 nibe 25 1
3 mikuni 21 3
3
1
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
3
1