SQL入門 STEP3|SELECTでデータを取得しよう
SELECTとは?
STEP2では、商品データを保存するためのproductsテーブルを作りました。
現在のproductsテーブルには、
product_id:商品IDproduct_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メモリ | 2000STEP2で作ったテーブルに、先ほど登録した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を追加して、取得するデータを絞り込んでみましょう。
学習内容を確認したいときは、SQL入門の一覧から各STEPを確認できます。
