【初心者向け】SQLのSELECT文を徹底解説

1. SELECT文とは?

SQLは、データベースを操作するための言語です。

その中でも、SELECT文はデータベースから情報を取ってくる、最も基本的な命令文です。

SELECT文を使うことで、データベース内のテーブルからデータを取得することができます。

 

2. SELECTで出来る事は?

例えば、「顧客情報を取得したい」「売上データを分析したい」といった場合に、SELECT文を用いて必要な情報を取り出します。

SELECT文は、データベースから「どの列の」「どんな情報を」取り出すかを指定する文章です。

Selectで指定した項目を、結果のテーブルに表示する、「何を表示するかを指定する」機能だと思ってもらえれば良いかと思います。

 

 

3. SELECT文で得られる結果

SELECT文を実行すると、テーブルから該当するデータが表示されます。

例えば、次のようなテーブル「customers」という名前のデータのテーブルがあるとします。

■Customersテーブル

id name age city gender
1 田中 30 東京 男性
2 鈴木 25 大阪 女性
3 佐藤 40 名古屋 男性

このデータに対して、次のようなSQLを実行してみます。

SELECT name, age FROM customers;

 

このSQLは、テーブルに存在する4列(name,age,city,gender)のうち、nameage の2列のみを取得して表示するSelect文の書き方です。

CityやGenderなど、(今回は)不要な列を除外し、必要な項目だけを表示しています。

注意点:

SQLのSelectは、元のデータベースに変更を加える物ではありません。

Select文でNameとAgeだけを指定したからといって、指定しなかったCityやGenderという列が削除されたり、消えたりするという事はありません。あくまで、元々あったデータベースから、必要な所だけ拾ってきて、「表示しているだけ」と考えて頂いてOKです。

 

また、表示する列を絞り込むことで、データ検索の負荷を軽減し、処理速度を向上させることができます。データ量が多くなると、データを読み込むだけで、時間や費用がかかりますので、このように必要なデータだけを取得することが重要になります。

取得される結果は以下の通りです。

name age
田中 30
鈴木 25
佐藤 40

4. SELECT文の基本構文

SELECT文の基本的な書き方は以下の通りです。

SELECT 列名1, 列名2, ... FROM テーブル名;
  • SELECT:取得する列を指定する。二つ以上表示したいなら、カンマで区切ります。
  • FROM:データを取得するテーブル名を指定します。

また、列の指定をせずに、「このテーブルにある全ての列を取得したい」という場合は、* を使います。

↓書き方はこのようになります。

SELECT * FROM customers;

このSQLを実行すると、テーブル「customers」の全てのデータが取得されます。

 

5. テーブル名や列名の指定ルール

SQLでは、テーブル名や列名を指定する際にいくつかのルールがあります。

    • 大文字・小文字の区別:SQLは一般的に大文字小文字を区別しませんが、データベースによっては区別する場合があります。
    • 予約語の使用:SQLの予約語(例: SELECT, FROM など)をテーブル名や列名として使うとエラーになる可能性があります。
    • データセット名とテーブル名の記述ルール:どのテーブルからデータを持ってくるのかを正しく指定するために、データセット名.テーブル名 の形で指定する事も多々あります。

<例>

SELECT * FROM my_database.customers;

 

6. ASを使った別名定義

SQLでは、AS を使ってテーブルや列に別名を付けることができます。

SELECT name AS 顧客名, age AS 年齢 FROM customers;

取得される結果:

顧客名 年齢
田中 30
鈴木 25
佐藤 40

先ほどはテーブルの列のタイトルが「name」や「age」だったところが、「顧客名」「年齢」と変わっており、テーブルとして見やすくなりました。

 

ASの活用例

このように、エイリアスを使うと、テーブル名が長い場合に簡潔に書くことができます。

SELECT c.name, c.age FROM customers AS c;

↑この命令文は、まず「Customers」という名前のテーブルを「c」という略称(別名)で呼ぶと設定し、その「c」の中にある「name」と「age」を取ってくるという書き方です。

また、Select文の中で、四則演算などの計算も可能です。

SELECT name, age, age + 1 AS "来年の年齢" FROM customers;

↑この文章は、Name、Ageの他に、「Ageに1を足した列」を作成して、それをASを使って「来年の年齢」という別名を付けています。

<取得結果>:

name age 来年の年齢
田中 30 31
鈴木 25 26
佐藤 40 41

7. SELECT文の用途

SELECT文は、さまざまなデータ取得の場面で活用されます。

      • 特定の列だけ取得する
        • 例:SELECT name FROM customers;
      • 条件を指定して取得する(WHERE句)
        • 例:SELECT * FROM customers WHERE age > 30;
      • データを並び替える(ORDER BY句)
        • 例:SELECT * FROM customers ORDER BY age DESC;
      • データを集計する(GROUP BY句)
        • 例:SELECT city, COUNT(*) FROM customers GROUP BY city;

このように、SELECT文はデータを活用するための基本となるSQL文です。

8. SELECT文の注意点

SELECT文を使用する際に、いくつかの注意点があります。

(1) 存在しない列を指定するとエラー

例えば、SELECT email FROM customers; を実行すると、customersテーブルにemail列が存在しない場合、エラーになります。

エラー例

ERROR: column "email" does not exist

(2) FROM句を省略するとエラー

SELECT name, age;

のように FROM 句を省略すると、テーブル名が指定されていないため、どこからデータを取っていいのかわからず、エラーが発生します。

エラー例

ERROR: syntax error at or near ";"

(3) * を使うときは注意

SELECT * を使うと、すべての列を取得できますが、テーブルの列数が増えると処理が重くなる可能性があります。必要な列だけを指定するのが良いでしょう。

(会社の業務でで使うデータの場合、件数が多い為、時間も費用も高くつく可能性がありますので、なるべくデータを絞るクセを付ける方が良いでしょう)

 

9. まとめ

      • SELECT文は、データベースからデータを取得するための基本的なSQL文です。
      • SELECT 列名 FROM テーブル名; の形式で使用します。
      • * を使うと全ての列を取得できますが、必要な列だけ指定するのが望ましい
      • WHERE で条件を絞ったり、ORDER BYGROUP BY でデータを整理できる
      • 間違った列名や FROM 句の省略など、よくあるエラーに注意

SELECT文を理解して、効率的なデータの取得を行いましょう!

他の記事でもSQLについて解説していますので、ぜひそちらもご覧ください。