sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLVALUESコマンドの説明

    PostgreSQLでは、 VALUES コマンドは、1つ以上の行のセットをテーブルとして返します。これは、より大きなコマンドの一部として、またはスタンドアロンのSQLステートメントとして使用できるテーブル値コンストラクターです。

    構文

    公式の構文は次のようになります:

    VALUES ( expression [, ...] ) [, ...]
        [ ORDER BY sort_expression [ ASC | DESC | USING operator ] [, ...] ]
        [ LIMIT { count | ALL } ]
        [ OFFSET start [ ROW | ROWS ] ]
        [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]

    これがどのように機能するかを示す簡単な例です:

    VALUES (1, 2, 3), (4, 5, 6);

    結果:

    +---------+---------+---------+
    | column1 | column2 | column3 |
    +---------+---------+---------+
    |       1 |       2 |       3 |
    |       4 |       5 |       6 |
    +---------+---------+---------+

    結果の列には、暗黙的に column1という名前が付けられます 、 column2 column3 など(ただし、これは変更できます。 SELECTを参照してください。 この記事の後半にあるステートメントオプション)。

    各行は、括弧で囲まれた1つ以上の値で定義されます。複数の行を指定する場合は、すべての行に同じ数の要素が含まれている必要があります

    別の例を次に示します。

    VALUES ('Peter', 'Griffin'), ('Bart', 'Simpson');

    結果:

    +---------+---------+
    | column1 | column2 |
    +---------+---------+
    | Peter   | Griffin |
    | Bart    | Simpson |
    +---------+---------+

    ORDER BY 条項

    この構文では、 ORDER BYを使用できます。 結果を並べ替えるための句。

    例:

    VALUES (1, 2, 3), (4, 5, 6), (7, 8, 9) ORDER BY column1 DESC;

    結果:

    +---------+---------+---------+
    | column1 | column2 | column3 |
    +---------+---------+---------+
    |       7 |       8 |       9 |
    |       4 |       5 |       6 |
    |       1 |       2 |       3 |
    +---------+---------+---------+

    LIMIT 条項

    LIMITを使用できます 出力される行数を制限する句:

    VALUES 
        ('Peter', 'Griffin'), 
        ('Homer', 'Simpson'), 
        ('Ned', 'Flanders')
    LIMIT 2;

    結果:

    +---------+---------+
    | column1 | column2 |
    +---------+---------+
    | Peter   | Griffin |
    | Homer   | Simpson |
    +---------+---------+
    オフセット 条項

    OFFSETの使用例を次に示します。 VALUESを含む句 コマンド:

    VALUES 
        (1, 'Peter', 'Griffin'), 
        (2, 'Homer', 'Simpson'), 
        (3, 'Ned', 'Flanders'), 
        (4, 'Barney', 'Rubble'), 
        (5, 'George', 'Costanza')
    OFFSET 3;

    結果:

    +---------+---------+----------+
    | column1 | column2 | column3  |
    +---------+---------+----------+
    |       4 | Barney  | Rubble   |
    |       5 | George  | Costanza |
    +---------+---------+----------+

    FETCH 条項

    FETCHの使用例を次に示します。 条項:

    VALUES 
        (1, 'Peter', 'Griffin'), 
        (2, 'Homer', 'Simpson'), 
        (3, 'Ned', 'Flanders'), 
        (4, 'Barney', 'Rubble'), 
        (5, 'George', 'Costanza')
    FETCH FIRST 3 ROWS ONLY; 

    結果:

    +---------+---------+----------+
    | column1 | column2 | column3  |
    +---------+---------+----------+
    |       1 | Peter   | Griffin  |
    |       2 | Homer   | Simpson  |
    |       3 | Ned     | Flanders |
    +---------+---------+----------+

    SELECT内 ステートメント

    VALUESを使用することもできます SELECT内のステートメント VALUESのようにステートメント テーブルコンストラクタは実際のテーブルでした:

    SELECT
       FirstName,
       LastName
    FROM
       (VALUES 
            (1, 'Peter', 'Griffin'), 
            (2, 'Homer', 'Simpson'), 
            (3, 'Ned', 'Flanders')
       ) AS Idiots(IdiotId, FirstName, LastName)
    WHERE IdiotId = 2;

    結果:

    +-----------+----------+
    | firstname | lastname |
    +-----------+----------+
    | Homer     | Simpson  |
    +-----------+----------+
    各行コンストラクターには同じ数の値が含まれている必要があります

    同じVALUES内の各行コンストラクター ステートメントの値リストには、同じ数の値が含まれている必要があります。

    したがって、これを行うことはできません:

    VALUES (1, 2), (3);

    結果:

    ERROR:  VALUES lists must all be the same length
    LINE 1: VALUES (1, 2), (3);
                            ^

    VALUESの使用 データを挿入するには

    VALUESを使用できます INSERTと組み合わせたステートメント テーブルにデータを挿入するステートメント。

    例:

    CREATE TABLE Idiots (
        IdiotId int,
        FirstName varchar(50),
        LastName varchar(50)
        );
    
    INSERT INTO Idiots VALUES 
        (1, 'Peter', 'Griffin'), 
        (2, 'Homer', 'Simpson'), 
        (3, 'Ned', 'Flanders');

    これにより、 Idiotsというテーブルが作成されました それに3行挿入しました。

    これで、 SELECTを使用できます テーブルの新しい値を確認するステートメント:

    SELECT * FROM Idiots;

    結果:

    +---------+-----------+----------+
    | idiotid | firstname | lastname |
    +---------+-----------+----------+
    |       1 | Peter     | Griffin  |
    |       2 | Homer     | Simpson  |
    |       3 | Ned       | Flanders |
    +---------+-----------+----------+

    1. PostgreSQLでパーセンテージとして数値をフォーマットする3つの方法

    2. MySQLデータベースをPHPWebサイトに接続する方法

    3. SQL ServerでのSIN()の例

    4. MySQLデータベースとテーブルを修復する方法