今回はPostgreSQLのSELECT *を使い、TableのすべてのColumnを取得する方法を整理します。
全列を取得する書き方と、必要なColumnを個別に指定する書き方の違いを確認します。
所要時間は15分ほどです。
それでは、さっそく始めていきましょう!
今日のテーマと到達目標
テーマはSELECT *です。今回の授業では、全列を取得でき、Column名を個別に指定する書き方との違いを説明できることを合格条件にしました。
前提と用語の定義
| 用語・記号 | 意味 |
|---|---|
| Column | Tableで名前とデータ型などが定義される列 |
| Row | 各Columnに対応する値の組 |
| SELECT句 | 結果セットに含めるColumnや式を指定する部分 |
| FROM句 | 取得元のTableなどを指定する部分 |
| *(アスタリスク) | 今回のように1つのTableから取得するSELECTで、そのTableのすべてのColumnを指定する記号 |
| 結果セット | SQLの実行で返されるRowとColumnの集まり |
今回は既存のproductsを使いました。1 Rowは商品1種類のデータです。
| Column | 意味 |
|---|---|
| product_id | 商品を識別する番号 |
| product_name | 商品名 |
| price_yen | 商品の価格。単位は円 |
添付の人流データセットは使用していません。
構造を整理する
Columnを個別に指定すると、指定した列を取得します。
SELECT product_name, price_yen FROM products;
*を指定すると、今回のTableでは3列すべてを取得します。
SELECT * FROM products;
| SELECTでの指定 | 結果セットに含まれるColumn |
|---|---|
| product_name, price_yen | 商品名、価格 |
| * | 商品ID、商品名、価格 |
*は全Columnを指定する記号です。上記のSQLで全Rowが取得されるのは、Rowを絞る条件を付けていないためです。
PostgreSQLでの操作
psqlで次のSQLを実行しました。
SELECT * FROM products;
結果の確認
共有した実行画面には、次の結果が表示されました。
product_id | product_name | price_yen
------------+--------------+-----------
1 | onigiri | 100
(1 行)
商品名・価格の2列を取得した前回の結果に対して、今回はproduct_idも表示されました。
今日の演習と確認問題
最初の質問は「前回の2列の結果に対して、どのColumnが追加で表示されたか」でした。product_idと回答し、正解でした。
続いて、商品名と価格の2列だけを取得する場合に、次のどちらを使うかを確認しました。
A:全列を指定
SELECT * FROM products;
B:必要な2列を指定
SELECT product_name, price_yen FROM products;
回答は「B 理由:Aだと全列取得し出力されるから」でした。
この回答は正解です。Bでは必要な2列だけを指定し、Aではproduct_idも含めて取得します。「全列を取得する」という理由から、*がColumnを指定する記号であることも確認できました。
理解したこと・間違えたこと
-
SELECT *で、取得元TableのすべてのColumnを取得できる。 - 必要な2列だけを取得したい場合は、Column名を個別に指定する。
- 今回の
*は全Columnを指定する記号である。
共有した実行画面ではSQLの実行に成功しており、今回の回答にも誤りはありませんでした。
合格条件と学習記録
| 確認項目 | 根拠 |
|---|---|
| SELECT *で全列を取得できる | 入力SQLと全3列の実行結果 |
| 個別にColumnを指定する書き方との違いを説明できる | Bを選び、Aでは全列を取得するためと回答 |
上記を確認できたため、学習をcompletedと記録しました。
まとめ
| 取得したいもの | 書き方 |
|---|---|
| productsの全Column | SELECT * FROM products; |
| 商品名と価格の2列 | SELECT product_name, price_yen FROM products; |
取得したいColumnに合わせて、全列指定と個別指定を使い分けます。