sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL VALUES Kommando förklaras

I PostgreSQL, VALUES kommandot returnerar en uppsättning av en eller flera rader som en tabell. Det är en tabellvärdekonstruktor som kan användas som en del av ett större kommando, eller som en fristående SQL-sats.

Syntax

Den officiella syntaxen ser ut så här:

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

Exempel

Här är ett enkelt exempel för att visa hur det fungerar:

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

Resultat:

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

De resulterande kolumnerna heter implicit column1 , column2 , column3 och så vidare (även om detta kan ändras – se SELECT uttalande alternativ senare i denna artikel).

Varje rad definieras av ett eller flera värden inom parentes. När mer än en rad anges måste alla rader ha samma antal element

Här är ett annat exempel:

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

Resultat:

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

ORDER BY Klausul

Syntaxen tillåter användning av ORDER BY klausul för att ordna resultaten.

Exempel:

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

Resultat:

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

LIMIT Klausul

Vi kan använda LIMIT sats för att begränsa antalet rader som matas ut:

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

Resultat:

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

OFFSET Klausul

Här är ett exempel på hur du använder OFFSET sats med VALUES kommando:

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

Resultat:

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

FETCH Klausul

Här är ett exempel på hur du använder FETCH klausul:

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

Resultat:

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

Inom en SELECT Uttalande

Vi kan också använda VALUES sats i en SELECT uttalande, som om VALUES Tabellkonstruktören var en faktisk tabell:

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

Resultat:

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

Varje radkonstruktör måste innehålla samma antal värden

Varje radkonstruktor i samma VALUES uttalandet måste ha samma antal värden i sin värdelista.

Därför kan vi inte göra detta:

VALUES (1, 2), (3);

Resultat:

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

Använda VALUES för att infoga data

Vi kan använda VALUES sats i kombination med INSERT för att infoga data i en tabell.

Exempel:

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

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

Det skapade en tabell som heter Idiots och infogade tre rader i den.

Vi kan nu använda en SELECT uttalande för att se de nya värdena i tabellen:

SELECT * FROM Idiots;

Resultat:

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

  1. Oracle sql handledning:Begränsning av datamängden

  2. Använda JavaFX-tabeller för att organisera data

  3. Hur man ansluter till SQL Server Instance genom att använda Windows-autentisering eller SQL Server-autentisering - SQL Server / T-SQL Tutorial Del 3

  4. Åtkomst nekad för användaren 'root'@'localhost' när han försökte bevilja privilegier. Hur beviljar jag privilegier?