はじめに
PostgreSQLは、オープンソースのリレーショナルデータベース管理システム(RDBMS)です。データベースシステムは、さまざまなワークロードを簡単に処理し、ほとんどのオペレーティングシステムをサポートします。その拡張性とSQLコンプライアンスにより、PostgreSQLは広く普及しているRDBMSになっています。
SELECT
ステートメントは、PostgreSQLで最も一般的に使用されるデータ操作言語(DML)コマンドです。
このチュートリアルでは、PostgreSQLSELECTステートメントの完全な構文と例の使用方法を学習します。
前提条件
- PostgreSQLをインストールしてセットアップします。
- 作業するデータベース(データベースの作成方法を参照)
PostgreSQLSELECTステートメント
PostgreSQL SELECT
ステートメントは、データベース内の1つまたは複数のテーブルからデータを取得し、結果セットと呼ばれる結果テーブルにデータを返します。 SELECT
を使用します データベーステーブルから指定された基準に一致する1つ以上の行を返すステートメント。
SELECT
ステートメントはSQLで最も複雑なステートメントであり、多くのオプションのキーワードと句があります。以下のセクションでは、 SELECT
について説明します。 構文の詳細。
PostgreSQLSELECT構文
SELECT
の最も単純な形式 ステートメントの構文は次のとおりです。
SELECT expressions
FROM tables
WHERE conditions;
expressions
結果に必要なすべての列とフィールドです。tables
構文は、結果を抽出する1つまたは複数のテーブルです。conditions
レコードを選択するために満たす必要のある要件を表します。
完全なSELECT
の例 ステートメントの構文は次のとおりです。
SELECT [ ALL | DISTINCT | DISTINCT ON (distinct_expressions) ]
expressions
FROM tables
[WHERE conditions]
[GROUP BY expressions]
[HAVING condition]
[ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS FIRST | NULLS LAST ]]
[LIMIT [ number_rows | ALL]
[OFFSET offset_value [ ROW | ROWS ]]
[FETCH { FIRST | NEXT } [ fetch_rows ] { ROW | ROWS } ONLY]
[FOR { UPDATE | SHARE } OF table [ NOWAIT ]];
以下のセクションですべてのパラメータについて説明します。
PostgreSQLSELECTパラメータ
SELECT
で可能なパラメータ ステートメントは次のとおりです。
ALL
-一致するすべての行を返すオプションのパラメータ。-
DISTINCT
-結果セットから重複を削除するパラメータ。 -
DISTINCT ON
-distinct_expressions
に基づいて重複データを排除するオプションのパラメーター キーワード。 expressions
-結果に含めるすべての列とフィールド。アスタリスクの指定(*
)すべての列を選択します。tables
-レコードを取得するテーブルを指定します。FROM
句には少なくとも1つのテーブルが含まれている必要があります。WHERE conditions
-句はオプションであり、結果セットのレコードをフィルタリングするために満たす必要のある条件が含まれています。-
GROUP BY expressions
-複数のレコードからデータを収集し、結果を1つ以上の列でグループ化するオプションの句。 HAVING condition
-GROUP BY
と組み合わせて使用されるオプションの句 。返される行のグループを、TRUE
の条件を満たすものだけに制限します。 、したがってそれらをフィルタリングします。-
ORDER BY expression
-結果セット内のデータの並べ替えに使用する1つまたは複数の列を識別するオプションの句。 -
LIMIT
-number_rows
で指定された、テーブルから取得するレコードの最大数を設定するオプションの句 構文。結果セットの最初の行は、offset_value
によって決定されます。 。 -
FETCH
-結果セット内のレコードの最大数を設定するオプションの句。fetch_rows
の代わりにレコード数を指定します 構文。offset_value
結果セットの最初の行を決定します。 FOR UPDATE
-トランザクションが完了するまでクエリの実行に必要なレコードを書き込みロックするオプションの句。FOR SHARE
-レコードを他のトランザクションで使用できるようにするが、レコードの更新や削除を防ぐオプションの句。
PostgreSQLSELECTステートメントの例
以下のセクションでは、 SELECT
のいくつかの使用例を示します。 ステートメント。
例1:すべてのフィールドを選択
テーブルからすべてのフィールドを返し、テーブルのすべての内容を確認する最も簡単な方法は、PostgreSQL SELECT
を使用することです。 声明。
例:
SELECT * FROM actor;
上記の例では、出力にはアクターテーブルに含まれるすべてのフィールドが表示されます。
例2:条件に一致するように結果をフィルタリングする
SELECT
ステートメントを使用すると、条件を設定して結果をフィルタリングできます。次の例では、映画の言語が英語( language_id=1
)の映画のタイトルのみを表示します。 ):
SELECT title
FROM film
WHERE language_id=1;
例3:複数のテーブルからフィールドを選択する
PostgreSQLを使用すると、データベース内の複数のテーブルのデータを処理できます。 1つのクエリで複数のテーブルから結果を取得するには、 JOINSを使用します 。
例:
SELECT customer.first_name, customer.last_name, payment.amount
FROM customer
INNER JOIN payment
ON customer.customer_id=payment.customer_id
ORDER BY amount DESC;
上記の例では、 INNER JOIN
を使用して2つのテーブルを結合しています。 あるテーブルの名前の列と名前の列を表示し、別のテーブルの支払い金額を表示する結果セットを取得します。 2つのテーブルは、 customer_id
によって結合されます。 列。これは両方のテーブルで同じです。
結果は、 ORDER BY amount DESC
で指定された降順です。 条項。
例4:1つのテーブルから個々のフィールドを選択する
PostgreSQL SELECT
ステートメントを使用すると、テーブルから個々のフィールドを返すことができます。
例:
SELECT first_name, last_name
FROM actor
ORDER BY last_name ASC;
上記の例では、アクターの名前と名前のみが提供され、他の列は省略されています。出力は、結果を姓の昇順で並べ替えます。
例5:列の連結
結果セットで複数の列を1つに結合する場合は、連結演算子 ||
を使用できます。 SELECT
を使用 声明。例:
SELECT
first_name || ' ' || last_name
FROM
customer;
この例では、名前の列と名前の列を連結して、各顧客のフルネームを取得しました。
例6:計算
SELECT
を使用することもできます いくつかの計算を実行するステートメントですが、 FROM
を省略します 句。例:
SELECT 15*3/5;
出力は、 SELECT
で指定された数式の結果です。 ステートメント。