sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL VALUES-opdracht uitgelegd

In PostgreSQL zijn de VALUES commando retourneert een set van een of meer rijen als een tabel. Het is een tabelwaardeconstructor die kan worden gebruikt als onderdeel van een grotere opdracht of als een op zichzelf staande SQL-instructie.

Syntaxis

De officiële syntaxis gaat als volgt:

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

Voorbeeld

Hier is een eenvoudig voorbeeld om te demonstreren hoe het werkt:

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

Resultaat:

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

De resulterende kolommen hebben impliciet de naam column1 , column2 , column3 enzovoort (hoewel dit kan worden gewijzigd – zie de SELECT verklaringsoptie verderop in dit artikel).

Elke rij wordt gedefinieerd door een of meer waarden tussen haakjes. Als er meer dan één rij is opgegeven, moeten alle rijen hetzelfde aantal elementen hebben

Hier is nog een voorbeeld:

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

Resultaat:

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

De ORDER BY Clausule

De syntaxis maakt het gebruik van de ORDER BY . mogelijk clausule om de resultaten te ordenen.

Voorbeeld:

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

Resultaat:

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

De LIMIT Clausule

We kunnen de LIMIT . gebruiken clausule om het aantal rijen dat wordt uitgevoerd te beperken:

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

Resultaat:

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

De OFFSET Clausule

Hier is een voorbeeld van het gebruik van de OFFSET clausule met de VALUES commando:

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

Resultaat:

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

De FETCH Clausule

Hier is een voorbeeld van het gebruik van de FETCH clausule:

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

Resultaat:

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

Binnen een SELECT Verklaring

We kunnen ook de VALUES . gebruiken statement binnen een SELECT statement, alsof de VALUES table constructor waren een echte tabel:

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

Resultaat:

+-----------+----------+
| firstname | lastname |
+-----------+----------+
| Homer     | Simpson  |
+-----------+----------+

Elke rij-constructor moet hetzelfde aantal waarden bevatten

Elke rijconstructor in dezelfde VALUES statement moet hetzelfde aantal waarden in de lijst met waarden hebben.

Daarom kunnen we dit niet doen:

VALUES (1, 2), (3);

Resultaat:

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

VALUES gebruiken om gegevens in te voegen

We kunnen de VALUES . gebruiken statement in combinatie met de INSERT statement om gegevens in een tabel in te voegen.

Voorbeeld:

CREATE TABLE Idiots (
    IdiotId int,
    FirstName varchar(50),
    LastName varchar(50)
    );

INSERT INTO Idiots VALUES 
    (1, 'Peter', 'Griffin'), 
    (2, 'Homer', 'Simpson'), 
    (3, 'Ned', 'Flanders');

Dat creëerde een tabel met de naam Idiots en voegde er drie rijen in.

We kunnen nu een SELECT . gebruiken statement om de nieuwe waarden in de tabel te zien:

SELECT * FROM Idiots;

Resultaat:

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

  1. Hoe UTF-8-sortering in de SQL Server-database te gebruiken?

  2. Hoe een RDS Postgres-database pg_dumpen?

  3. 4 manieren om rijen te vinden die hoofdletters bevatten in Oracle

  4. Django oracle db-instellingen