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)のうち、name
と age
の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 BY
やGROUP BY
でデータを整理できる- 間違った列名や
FROM
句の省略など、よくあるエラーに注意
-
SELECT文を理解して、効率的なデータの取得を行いましょう!
他の記事でもSQLについて解説していますので、ぜひそちらもご覧ください。