PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Обяснена команда за PostgreSQL VALUES

В PostgreSQL, VALUES командата връща набор от един или повече редове като таблица. Това е конструктор на стойност на таблица, който може да се използва като част от по-голяма команда или като самостоятелен 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); 

Резултат:

<пред>+--------+--------+--------+| колона1 | колона2 | колона3 |+--------+--------+--------+| 1 | 2 | 3 || 4 | 5 | 6 |+---------+--------+--------+

Получените колони са имплицитно наречени column1 , column2 , column3 и така нататък (въпреки че това може да се промени – вижте SELECT опция за изявление по-късно в тази статия).

Всеки ред е дефиниран от една или повече стойности, затворени в скоби. Когато са посочени повече от един ред, всички редове трябва да имат еднакъв брой елементи

Ето още един пример:

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

Резултат:

+--------+--------+| колона1 | колона 2 |+--------+--------+| Петър | Грифин || Барт | Симпсън |+--------+--------+

ORDER BY Клауза

Синтаксисът позволява използването на ORDER BY клауза, за да подредите резултатите.

Пример:

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

Резултат:

<пред>+--------+--------+--------+| колона1 | колона2 | колона3 |+--------+--------+--------+| 7 | 8 | 9 || 4 | 5 | 6 || 1 | 2 | 3 |+---------+--------+--------+

LIMIT Клауза

Можем да използваме LIMIT клауза за ограничаване на броя на извежданите редове:

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

Резултат:

+--------+--------+| колона1 | колона 2 |+--------+--------+| Петър | Грифин || Омир | Симпсън |+--------+--------+

OFFSET Клауза

Ето пример за използване на OFFSET клауза с VALUES команда:

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

Резултат:

+--------+--------+---------+| колона1 | колона2 | колона3 |+--------+--------+---------+| 4 | Барни | Развалини || 5 | Джордж | Костанца |+---------+---------+---------+

FETCH Клауза

Ето пример за използване на FETCH клауза:

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

Резултат:

+--------+--------+---------+| колона1 | колона2 | колона3 |+--------+--------+---------+| 1 | Петър | Грифин || 2 | Омир | Симпсън || 3 | Нед | Фландрия |+---------+---------+---------+

В рамките на 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; 

Резултат:

+-----------+---------+| име | фамилно име |+-----------+----------+| Омир | Симпсън |+-----------+----------+

Всеки конструктор на ред трябва да съдържа еднакъв брой стойности

Всеки конструктор на ред в едни и същи VALUES изразът трябва да има същия брой стойности в своя списък със стойности.

Следователно не можем да направим това:

VALUES (1, 2), (3); 

Резултат:

ГРЕШКА:всички списъци със VALUES трябва да са с еднаква дължина. 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 и вмъкнах три реда в него.

Вече можем да използваме SELECT оператор, за да видите новите стойности в таблицата:

SELECT * FROM Idiots; 

Резултат:

+--------+-----------+---------+| идиотски | име | фамилно име |+--------+-----------+---------+| 1 | Петър | Грифин || 2 | Омир | Симпсън || 3 | Нед | Фландрия |+---------+-----------+----------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създаване на нови модули с помощта на PostgreSQL Create Extension

  2. 7 неща, за които трябва да внимавате при внедряването на PostgreSQL

  3. psql невалидна команда \N докато възстановяване на sql

  4. Съставният ПЪРВИЧЕН КЛЮЧ налага ограничения NOT NULL върху участващите колони

  5. Как работи LocalTimeStamp() в PostgreSQL