【入門】SQLのSELECT文とは?基本構文と使い方を徹底解説

SQL初心者向け!SELECT文を徹底解説(基本編) – 第1章:はじめに

皆さん、こんにちは!SQLの世界へようこそ!この記事では、データベースから必要な情報を取得するための最も基本的な命令である「SELECT文」について解説します。

データベースとテーブル:データの整理

データベースは、情報を整理して保存するためのシステムです。そして、テーブルは、データベースの中に作成されるデータの入れ物です。

例えば、以下のような「書籍テーブル」「著者テーブル」「利用者テーブル」があるとします。

書籍テーブル

書籍ID タイトル 著者 出版年
1 SQL入門 山田太郎 2023
2 Python基礎 田中花子 2022
3 データ分析実践 佐藤健 2021

著者テーブル

著者ID 著者名
1 山田太郎
2 田中花子
3 佐藤健

利用者テーブル

利用者ID 氏名 年齢
1 鈴木一郎 20
2 高橋美咲 25
3 伊藤健太 30

SELECT文:データベースへの質問

SELECT文は、これらのテーブルから必要な情報を抽出するための命令です。

例えば、「書籍テーブルから全ての書籍のタイトルを知りたい」「利用者テーブルから20代の利用者を知りたい」といった具体的な要求をデータベースに伝えることができます。

SELECT文の基本構文:質問の書き方

SELECT文の基本的な構文は以下の通りです。

SQL

SELECT 取り出す列 FROM テーブル名;
  • SELECT:取り出したい列を指定します。
  • FROM:データを取り出すテーブルを指定します。

実行例と解説

実際にSELECT文を実行してみましょう。先ほどの「書籍テーブル」を例に、いくつかのSELECT文とその結果を見ていきます。

例1:全ての書籍タイトルを取得する

SQL

SELECT タイトル FROM 書籍テーブル;

実行結果:

タイトル
SQL入門
Python基礎
データ分析実践

解説:

このSELECT文は、「書籍テーブル」から「タイトル」列のデータを全て取得するよう指示しています。結果として、「書籍テーブル」に登録されている全ての書籍タイトルが表示されました。

例2:全ての書籍IDとタイトルを取得する

SQL

SELECT 書籍ID, タイトル FROM 書籍テーブル;

実行結果:

書籍ID タイトル
1 SQL入門
2 Python基礎
3 データ分析実践

解説:

このSELECT文では、「書籍テーブル」から「書籍ID」列と「タイトル」列のデータを取得するよう指示しています。結果として、「書籍テーブル」に登録されている全ての書籍IDとタイトルが表の形式で表示されました。

例3:全ての列を取得する

SQL

SELECT * FROM 書籍テーブル;

実行結果:

書籍ID タイトル 著者 出版年
1 SQL入門 山田太郎 2023
2 Python基礎 田中花子 2022
3 データ分析実践 佐藤健 2021

解説:

*(アスタリスク)は、「全ての列」を意味します。このSELECT文では、「書籍テーブル」から全ての列のデータを取得するよう指示しています。結果として、「書籍テーブル」の全ての列とデータが表示されました。

このように、SELECT文で指定する列を変更することで、必要な情報を自由に取得できます。

列の順番を入れ替える

SELECT文では、テーブルに登録されている列の順番に関係なく、自由に取り出す列の順番を指定できます。

例えば、書籍テーブルで「著者」列、「タイトル」列の順でデータを取り出したい場合は、以下のように記述します。

SQL

SELECT 著者, タイトル FROM 書籍テーブル;

実行結果:

著者 タイトル
山田太郎 SQL入門
田中花子 Python基礎
佐藤健 データ分析実践

このように、SELECT文で指定した列の順番で結果が表示されます。

実践的な例:顧客リストから名前とメールアドレスを取得する

次に、顧客リストから名前とメールアドレスを取得する例を見てみましょう。

顧客リスト(顧客テーブル):

顧客ID 氏名 メールアドレス 年齢
1 鈴木一郎 ichiro.suzuki@example.com 20
2 高橋美咲 misaki.takahashi@example.com 25
3 伊藤健太 kenta.ito@example.com 30

この顧客テーブルから、顧客の氏名とメールアドレスだけを取得したい場合は、以下のSQL文を実行します。

SQL

SELECT 氏名, メールアドレス FROM 顧客テーブル;

実行結果:

氏名 メールアドレス
鈴木一郎 ichiro.suzuki@example.com
高橋美咲 misaki.takahashi@example.com
伊藤健太 kenta.ito@example.com

このように、SELECT文で必要な列だけを指定することで、欲しい情報だけを効率的に取得できます。

 

第3章:FROM句でテーブルを指定する

FROM句の役割

FROM句は、SELECT文でデータを取得する際に、どのテーブルからデータを取得するかを指定します。つまり、「どのテーブルに対して質問しますか?」ということを示す役割があります。

テーブル名の指定

FROM句にテーブル名を指定することで、そのテーブルからデータを取得できます。テーブル名はデータベースに登録されている名前と正確に一致させる必要があります。

例:書籍テーブルから全てのデータを取得する

SQL

SELECT * FROM 書籍テーブル;

テーブル名の大文字・小文字の扱いは、データベースの種類によって異なります。一般的には、大文字・小文字を区別しないデータベースが多いですが、区別するデータベースも存在するため、注意が必要です。

データベース名の指定

複数のデータベースが存在する場合、FROM句でデータベース名も指定する必要があります。データベース名とテーブル名を「.」(ドット)で区切って指定します。

例:データベース名「図書館」の書籍テーブルから全てのデータを取得する

SQL

SELECT * FROM 図書館.書籍テーブル;

このようにデータベース名を指定することで、複数のデータベースから目的のテーブルを特定できます。

テーブルの別名(エイリアス)

テーブル名が長い場合や、複雑なSQL文を書く場合には、テーブルに別名(エイリアス)をつけることができます。別名をつけることで、SQL文を短く、読みやすくできます。

例:書籍テーブルに「s」という別名をつけて全てのデータを取得する

SQL

SELECT * FROM 書籍テーブル AS s;

または、ASを省略して記述することも可能です。

SQL

SELECT * FROM 書籍テーブル s;

別名を使うことで、同じテーブルを複数回参照する場合などに、テーブル名を区別できます。

実践的な例:複数のテーブルからデータを取得する

複数のテーブルが存在するデータベースから、特定のテーブルを指定してデータを取得する例を見てみましょう。

データベース構成:

  • データベース名:店舗データベース
  • テーブル:商品テーブル、在庫テーブル

商品テーブル:

商品ID 商品名 価格
1 ノート 100
2 ペン 50

在庫テーブル:

商品ID 在庫数
1 100
2 200

このデータベースから商品テーブルの商品名と価格を取得する場合、以下のようにSQL文を記述します。

SQL

SELECT 商品名, 価格 FROM 商品テーブル;

実行結果:

商品名 価格
ノート 100
ペン 50

このように、FROM句でテーブルを指定することで、目的のテーブルからデータを取得できます。