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句でテーブルを指定することで、目的のテーブルからデータを取得できます。