Chapter 4. 問い合わせ

Table of Contents
4.1. 概要
4.2. テーブル式
4.2.1. FROM 句
4.2.2. WHERE 句
4.2.3. GROUP BY 句と HAVING 句
4.3. 選択リスト
4.3.1. 選択リスト項目
4.3.2. 列ラベル
4.3.3. DISTINCT
4.4. 問い合わせの結合
4.5. 行の並べ換え
4.6. LIMITとOFFSET

前の章では、テーブルを作成し、これにデータを挿入し、さらに挿入したデータを操作する方法について説明しました。 この章では、データベースからデータを取り出す方法について説明します。

4.1. 概要

データベースからデータを取り出す処理、または取り出すためのコマンドを問い合わせと言います。SQLでは、SELECTコマンドを、問い合わせを特定するために使います。SELECTコマンドの一般的な構文は次のとおりです。

SELECT select_list FROM table_expression [sort_specification]

以降の節では、選択リスト、テーブル式、ソートの仕様について詳細に説明します。

最も単純な問い合わせの形式は、次のようなものです。

SELECT * FROM table1;

table1 というテーブルがあるとして、このコマンドは table1 からすべての行のすべての列を取り出します (抽出する手段はクライアントアプリケーションによって異なります。 たとえば、psql プログラムでは、アスキー文字によるテキスト図で画面上にテーブルを表示し、クライアントライブラリが個々の行と列を取り出す機能を提供します)。選択リストの指定で*は、テーブルが持っているすべての列を意味します。 選択リストでは、選択可能な列のサブセットを選択することも、選択可能な列を使用して計算することもできます。 たとえば、table1 に、abc という名前の列がある場合 (他の列もあってかまいません)、以下のような問い合わせができます。

SELECT a, b + c FROM table1;

(ここでは、b および c は数値型のデータであると仮定します) 詳細については Section 4.3 を参照してください。

FROM table1 は、特に単純な形のテーブル式で、読み込むテーブルは 1 つだけです。一般に基本テーブルや結合そして副問い合わせなどで、テーブル式は複雑になることがあります。 しかし、テーブル式を省略し、SELECT コマンドを電卓として使用することもできます。

SELECT 3 * 4;

選択リストの式がさまざまな結果を返す場合、これはさらに有用です。 たとえば、関数を次のように呼び出すことができます。

SELECT random();