SQL入門 STEP3|SELECTでデータを取得しよう

karin@taishi@felmia

SELECTとは?

STEP2では、商品データを保存するためのproductsテーブルを作りました。

現在のproductsテーブルには、

  • product_id:商品ID
  • product_name:商品名
  • price:価格

の3つのカラムがあります。

ただ、まだテーブルを作っただけなので、中には商品データが入っていません。

今回はいくつか商品を登録して、保存されているデータをSELECTで取得する方法を学びます。

まずは「テーブルに入っているデータを見るにはSELECTを使う」と覚えていきましょう。

SELECTとは?

テーブルに保存されているデータを取得するときに使うSQLです。

例えば、

「登録されている商品を全部見たい」

「商品名と価格だけ見たい」

といったときに使います。

ルミィ
ルミィ

STEP2で作ったテーブルの中身を、今度はSQLを使って見てみるんだね♪

練習用の商品を登録しよう

SELECTを試すには、取得するデータが必要です。

まずはproductsテーブルに、練習用の商品を登録しておきましょう。

sql_studyのQuery Toolを開いて、次のSQLを実行してください。

INSERT INTO products (product_id, product_name, price)
VALUES
    (1, 'ノートPC', 120000),
    (2, 'マウス', 3000),
    (3, 'キーボード', 8000),
    (4, 'モニター', 30000),
    (5, 'USBメモリ', 2000);

今回はSELECTの学習が目的なので、このSQLの詳しい書き方はまだ覚えなくて大丈夫です。

INSERTは、テーブルに新しいデータを追加するときに使います。

INSERTについては、後のSTEPで改めて学びます。

ここでは、SELECTを試すためのデータを準備していると考えてください。

すべての商品を取得してみよう

商品を登録できたら、いよいよSELECTを使ってみます。

まずはproductsに入っているデータをすべて取得します。

SELECT * FROM products;

実行すると、次のような結果が表示されます。

product_id | product_name | price
-----------+--------------+-------
1          | ノートPC      | 120000
2          | マウス        | 3000
3          | キーボード    | 8000
4          | モニター      | 30000
5          | USBメモリ     | 2000

STEP2で作ったテーブルに、先ほど登録した5件の商品が入っていることを確認できます。

では、

SELECT * FROM products;

が何を表しているのか、順番に見てみましょう。

SELECTの書き方を確認しよう

すべてのデータを取得するときの基本的な形は、次のようになります。

SELECT * FROM テーブル名;

まず、

SELECT

は、データを取得するための命令です。

次の、

*

はアスタリスクと読みます。

SELECTで*を指定すると、すべてのカラムが取得対象になります。

そして、

FROM products

のFROMでは、どのテーブルからデータを取得するのかを指定します。

つまり、

SELECT * FROM products;

は、

「productsテーブルから、すべてのカラムを取得する」

というSQLです。

SELECT * FROM products;

SELECT
→ データを取得する

*
→ すべてのカラム

FROM
→ どのテーブルから取得するかを指定する

products
→ 今回データを取得するテーブル

必要なカラムだけ取得してみよう

毎回すべてのカラムが必要になるとは限りません。

例えば、商品の名前だけ確認したい場合を考えてみましょう。

その場合は、*の代わりに取得したいカラム名を書きます。

SELECT product_name FROM products;

実行すると、product_nameだけが表示されます。

product_name
------------
ノートPC
マウス
キーボード
モニター
USBメモリ

商品IDや価格は取得されません。

このようにSELECTでは、必要なカラムを指定してデータを取得できます。

複数のカラムを取得してみよう

では、商品名と価格の両方が欲しい場合はどうすればいいでしょうか。

複数のカラムを取得するときは、カラム名を,で区切ります。

SELECT product_name, price FROM products;

実行結果は次のようになります。

product_name | price
-------------+-------
ノートPC      | 120000
マウス        | 3000
キーボード    | 8000
モニター      | 30000
USBメモリ     | 2000

今回指定したのは、

product_name, price

なので、商品名と価格だけが取得されています。

全部欲しいときは*、必要なものだけ欲しいときはカラム名を書くんだね♪

ルミィ
ルミィ

全部欲しいときは*、必要なものだけ欲しいときはカラム名を書くんだね♪

カラムを書く順番も変えられる

SELECTに書いたカラムの順番は、取得結果にも反映されます。

先ほどは、

SELECT product_name, price FROM products;

と書きました。

今度は順番を逆にしてみます。

SELECT price, product_name FROM products;

すると、取得結果も、

price  | product_name
-------+-------------
120000 | ノートPC
3000   | マウス
8000   | キーボード
30000  | モニター
2000   | USBメモリ

のように、価格が先に表示されます。

テーブルそのもののカラムの順番を変えているわけではありません。

今回のSELECTで、どの順番で結果を表示するかを指定しているだけです。

「*」とカラム指定はどう使い分ける?

学習中は、

SELECT * FROM products;

を使う機会が多くあります。

テーブルにどんなデータが入っているのか、まとめて確認できるので便利です。

一方、実際のプログラムでは、必要なカラムが決まっているなら、

SELECT product_name, price FROM products;

のように、必要なカラムを指定して取得する書き方もよく使います。

今の段階では、

中身をまとめて確認したい → *

欲しい項目が決まっている → カラム名を指定

くらいで使い分ければ大丈夫です。

存在しないカラムを指定するとどうなる?

少しだけ、わざと間違えてみましょう。

productsにはnameというカラムはありません。

そこで、

SELECT name FROM products;

を実行してみます。

すると、カラムが存在しないことを表すエラーが表示されます。

SQLでエラーが出たときは、まず、

テーブル名が合っているか

カラム名が合っているか

を確認してみましょう。

スペルが1文字違うだけでも、別の名前として扱われます。

ルミィ
ルミィ

エラーが出たら、まずテーブル名とカラム名を見直してみるといいんだね!

よくある間違い

FROMを書き忘れる

テーブルからデータを取得するときは、どのテーブルを使うのか指定します。

SELECT * FROM products;

FROM productsまでセットで確認しましょう。

カラム名を間違える

例えば、

SELECT product_name FROM products;

のproduct_nameは、STEP2で作ったカラム名と同じである必要があります。

エラーが出たら、pgAdmin 4でテーブルのカラム名を確認してみましょう。

複数のカラムをカンマで区切っていない

複数のカラムを指定するときは、

SELECT product_name, price FROM products;

のように,で区切ります。

STEP3のまとめ

STEP3のポイント

  • SELECTはデータを取得するときに使う
  • FROMでデータを取得するテーブルを指定する
  • *を使うとすべてのカラムを取得できる
  • カラム名を指定すると必要なカラムだけ取得できる
  • 複数のカラムは,で区切って指定する
  • SELECTに書いた順番でカラムが表示される

今回はproductsテーブルに入っている商品を、SELECTを使って取得しました。

すべての商品を取得するところから、必要なカラムだけを取り出すところまでできればSTEP3はOKです。

ルミィ
ルミィ

STEP3クリア!
テーブルに入っているデータをSQLで取り出せるようになったね♪

次のSTEPへ

今のSELECTでは、productsに入っている5件の商品がすべて取得されました。

実際には、

「価格が5000円以上の商品だけ見たい」

「商品IDが3の商品を探したい」

など、条件に合ったデータだけを取得したいことがあります。

次のSTEPでは、SELECTにWHEREを追加して、取得するデータを絞り込んでみましょう。

→ STEP4「WHEREで条件を指定しよう」

学習内容を確認したいときは、SQL入門の一覧から各STEPを確認できます。

→ SQL入門|初心者が基礎から学べるSQL学習ガイド

記事URLをコピーしました