0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PostgreSQL:SELECT *で全列を取得する|Columnの個別指定との違い

0
Posted at

今回は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に合わせて、全列指定と個別指定を使い分けます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?