PostgreSQL のステートメントと句

目次

選択する 

リミット

好き

どこ

グループ化

持っている

注文方法


選択する 

結果は、結果セットと呼ばれる結果テーブルに保存されます。

文法

SELECT ステートメントの構文は次のとおりです。

SELECT column1, column2,...columnN FROM table_name;
  • column1、column2、...columnN はテーブル内のフィールド名です。

  • table_name はテーブル名です。

テーブル内のすべてのデータを読み取りたい場合は、次の SQL ステートメントを使用できます。

SELECT * FROM table_name;

PostgreSQL では、WITH 句を使用して、より大きなクエリで使用する補助ステートメントを作成する方法が提供されます。

WITH 句は、大規模で複雑なクエリを、読みやすい単純な形式に分割するのに役立ちます。これらのステートメントは通常、共通テーブル式 (Common Table Express、CTE) と呼ばれ、クエリ用の一時テーブルとしても使用できます。

WITH 句は、サブクエリを複数回実行する場合に特に便利で、クエリ内でサブクエリを名前で (おそらく複数回) 参照できるようになります。

WITH 句は、使用する前に定義する必要があります。

文法

WITH クエリの基本的な構文は次のとおりです。

WITH
   name_for_summary_data AS (
      SELECT Statement)
   SELECT columns
   FROM name_for_summary_data
   WHERE conditions <=> (
      SELECT column
      FROM name_for_summary_data)
   [ORDER BY columns]

name_for_summary_data は WITH 句の名前です。name_for_summary_data 既存のテーブル名と同じにすることができ、優先されます。

データの INSERT、UPDATE、または DELETE ステートメントを WITH 内で使用できるため、同じクエリ内で複数の異なる操作を実行できます。

再帰あり

単体で出力したデータはWITH句で使用できます。

共通テーブル式 (CTE) には、それ自体を参照できるという重要な利点があるため、再帰的な CTE が作成されます。再帰 CTE は、完全な結果セットが取得されるまで初期 CTE を繰り返し実行してデータのサブセットを返す共通テーブル式です。

リミット

PostgreSQL の limit句は 、SELECT ステートメントでクエリされるデータの量を制限するために使用されます。

文法

LIMIT 句を含む SELECT ステートメントの基本的な構文は次のとおりです。

SELECT column1, column2, columnN
FROM table_name
LIMIT [no of rows]

OFFSET 句とともに使用する場合の LIMIT 句の構文は次のとおりです。

SELECT column1, column2, columnN 
FROM table_name
LIMIT [no of rows] OFFSET [row num]

好き

PostgreSQL データベースでは、特定の文字を含むデータを取得したい場合、  LIKE 句を使用できます。

LIKE 句では、通常、任意の文字を表すワイルドカードと組み合わせて使用​​されます。PostgreSQL では、主に 2 種類のワイルドカードがあります。

  • パーセント記号 %
  • アンダースコア_

上記のワイルドカードがどちらも使用されていない場合、LIKE 句と等号 = は同じ結果を返します。

文法

以下は、パーセント記号 % とアンダースコア _を含む LIKE 句を使用して データベースからデータをフェッチするための一般的な構文です。

SELECT FROM table_name WHERE column LIKE 'XXXX%';
--或者
SELECT FROM table_name WHERE column LIKE '%XXXX%';
--或者
SELECT FROM table_name WHERE column LIKE 'XXXX_';
--或者
SELECT FROM table_name WHERE column LIKE '_XXXX';
--或者
SELECT FROM table_name WHERE column LIKE '_XXXX_';

WHERE 句には任意の条件を指定できます。

AND または OR を使用して 1 つ以上の条件を指定できます。

XXXX に は任意の数字または文字を指定できます。

どこ

PostgreSQL では、指定された条件に従って 1 つまたは複数のテーブルからデータをクエリする必要がある場合、SELECT ステートメントに WHERE 句を追加して、不要なデータをフィルターで除外できます。

WHERE 句は、SELECT ステートメントだけでなく、UPDATE、DELETE などのステートメントでも使用できます。

文法

以下は、SELECT ステートメントの WHERE 句を使用してデータベースからデータを読み取るための一般的な構文です。

SELECT column1, column2, columnN
FROM table_name
WHERE [condition1]

WHERE 句では、>、<、=、LIKE、NOT などの比較演算子または論理演算子を使用できます。

グループ化

PostgreSQL では、GROUP BY ステートメントを SELECT ステートメントと一緒に使用して、同じデータをグループ化します。

GROUP BY は、SELECT ステートメントの WHRER 句の後、ORDER BY 句の前に配置されます。

文法

以下は、GROUP BY 句の基本構文です-

SELECT column-list
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2....columnN
ORDER BY column1, column2....columnN

GROUP BY 句は、WHERE 句の条件の後、ORDER BY 句の前に配置する必要があります。

GROUP BY 句では、1 つ以上の列をグループ化できますが、グループ化された列は列リストに存在する必要があります。

持っている

HAVING 句を使用すると、グループ化後にデータのグループをフィルタリングできます。

WHERE 句は選択した列に条件を設定し、HAVING 句は GROUP BY 句によって作成されたグループに条件を設定します。

文法

SELECT クエリ内の HAVING 句の場所は次のとおりです。

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY

HAVING 句は、GROUP BY 句の後、ORDER BY 句の前に配置する必要があります。SELECT ステートメントの HAVING 句の基本構文は次のとおりです。

SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2

例:

COMPANY テーブルのレコードは次のとおりです。

id | name  | age | address      | salary
 ----+-------+-----+--------------+--------
   1 | Paul  |  32 | California   |  20000
   2 | Allen |  25 | Texas        |  15000
   3 | Teddy |  23 | Norway       |  20000
   4 | Mark  |  25 | Rich-Mond    |  65000
   5 | David |  27 | Texas        |  85000
   6 | Kim   |  22 | South-Hall   |  45000
   7 | James |  24 | Houston      |  10000
   8 | Paul  |  24 | Houston      |  20000
   9 | James |  44 | Norway       |   5000
  10 | James |  45 | Texas        |   5000
(10 rows)

次の例では、name フィールドの値に従ってグループ化され、名前の数が 1 より大きいデータを検索します。

SELECT NAME FROM COMPANY GROUP BY name HAVING count(name) > 1;

結果は次のとおりです。

 name
-------
 Paul
 James
(2 rows)

注文方法

PostgreSQL では、ORDER BY を 使用して 1 つ以上の列のデータを昇順 (ASC) または降順 (DESC) で並べ替えます。

文法

ORDER BY 句の基本的な構文は次のとおりです。

SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

ORDER BY では 1 つ以上の列を使用できますが、並べ替える列が存在することを確認する必要があります。

ASC は 昇順、DESC は 降順を意味します。

例:

COMPANY テーブルを作成します。データの内容は次のとおりです。

 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

次の例では、NAME フィールドの値と SALARY フィールドの値に従って結果を昇順に並べ替えます。

SELECT * FROM COMPANY ORDER BY NAME, SALARY ASC;

次の結果が得られます。

 id | name  | age |                      address                       | salary 
----+-------+-----+----------------------------------------------------+--------
  2 | Allen |  25 | Texas                                              |  15000
  5 | David |  27 | Texas                                              |  85000
  7 | James |  24 | Houston                                            |  10000
  6 | Kim   |  22 | South-Hall                                         |  45000
  4 | Mark  |  25 | Rich-Mond                                          |  65000
  1 | Paul  |  32 | California                                         |  20000
  3 | Teddy |  23 | Norway                                             |  20000
(7 rows)

おすすめ

転載: blog.csdn.net/yeyaozhifengqi/article/details/130390287