Di PostgreSQL, VALUES perintah mengembalikan satu set satu atau lebih baris sebagai tabel. Ini adalah konstruktor nilai tabel yang dapat digunakan sebagai bagian dari perintah yang lebih besar, atau sebagai pernyataan SQL mandiri.
Sintaks
Sintaks resminya seperti ini:
VALUES ( expression [, ...] ) [, ...]
[ ORDER BY sort_expression [ ASC | DESC | USING operator ] [, ...] ]
[ LIMIT { count | ALL } ]
[ OFFSET start [ ROW | ROWS ] ]
[ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ] Contoh
Berikut adalah contoh sederhana untuk mendemonstrasikan cara kerjanya:
VALUES (1, 2, 3), (4, 5, 6); Hasil:
+---------+---------+---------+ | column1 | column2 | column3 | +---------+---------+---------+ | 1 | 2 | 3 | | 4 | 5 | 6 | +---------+---------+---------+
Kolom yang dihasilkan secara implisit bernama column1 , column2 , column3 dan seterusnya (walaupun, ini dapat diubah – lihat SELECT opsi pernyataan nanti di artikel ini).
Setiap baris didefinisikan oleh satu atau lebih nilai yang diapit dalam tanda kurung. Ketika lebih dari satu baris ditentukan, semua baris harus memiliki jumlah elemen yang sama
Ini contoh lain:
VALUES ('Peter', 'Griffin'), ('Bart', 'Simpson'); Hasil:
+---------+---------+ | column1 | column2 | +---------+---------+ | Peter | Griffin | | Bart | Simpson | +---------+---------+
The ORDER BY Klausa
Sintaksnya memungkinkan penggunaan ORDER BY klausa untuk mengurutkan hasil.
Contoh:
VALUES (1, 2, 3), (4, 5, 6), (7, 8, 9) ORDER BY column1 DESC; Hasil:
+---------+---------+---------+ | column1 | column2 | column3 | +---------+---------+---------+ | 7 | 8 | 9 | | 4 | 5 | 6 | | 1 | 2 | 3 | +---------+---------+---------+
LIMIT Klausa
Kita dapat menggunakan LIMIT klausa untuk membatasi jumlah baris yang dihasilkan:
VALUES
('Peter', 'Griffin'),
('Homer', 'Simpson'),
('Ned', 'Flanders')
LIMIT 2; Hasil:
+---------+---------+ | column1 | column2 | +---------+---------+ | Peter | Griffin | | Homer | Simpson | +---------+---------+
OFFSET Klausa
Berikut adalah contoh penggunaan OFFSET klausa dengan VALUES perintah:
VALUES
(1, 'Peter', 'Griffin'),
(2, 'Homer', 'Simpson'),
(3, 'Ned', 'Flanders'),
(4, 'Barney', 'Rubble'),
(5, 'George', 'Costanza')
OFFSET 3; Hasil:
+---------+---------+----------+ | column1 | column2 | column3 | +---------+---------+----------+ | 4 | Barney | Rubble | | 5 | George | Costanza | +---------+---------+----------+
FETCH Klausa
Berikut ini contoh penggunaan FETCH klausa:
VALUES
(1, 'Peter', 'Griffin'),
(2, 'Homer', 'Simpson'),
(3, 'Ned', 'Flanders'),
(4, 'Barney', 'Rubble'),
(5, 'George', 'Costanza')
FETCH FIRST 3 ROWS ONLY; Hasil:
+---------+---------+----------+ | column1 | column2 | column3 | +---------+---------+----------+ | 1 | Peter | Griffin | | 2 | Homer | Simpson | | 3 | Ned | Flanders | +---------+---------+----------+
Dalam SELECT Pernyataan
Kami juga dapat menggunakan VALUES pernyataan dalam SELECT pernyataan, seolah-olah VALUES konstruktor tabel adalah tabel yang sebenarnya:
SELECT
FirstName,
LastName
FROM
(VALUES
(1, 'Peter', 'Griffin'),
(2, 'Homer', 'Simpson'),
(3, 'Ned', 'Flanders')
) AS Idiots(IdiotId, FirstName, LastName)
WHERE IdiotId = 2; Hasil:
+-----------+----------+ | firstname | lastname | +-----------+----------+ | Homer | Simpson | +-----------+----------+
Setiap Konstruktor Baris Harus Berisi Jumlah Nilai yang Sama
Setiap konstruktor baris dalam VALUES yang sama pernyataan harus memiliki jumlah nilai yang sama dalam daftar nilainya.
Oleh karena itu, kami tidak dapat melakukan ini:
VALUES (1, 2), (3); Hasil:
ERROR: VALUES lists must all be the same length
LINE 1: VALUES (1, 2), (3);
^ Menggunakan VALUES untuk Memasukkan Data
Kita dapat menggunakan VALUES pernyataan bersama dengan INSERT pernyataan untuk menyisipkan data ke dalam tabel.
Contoh:
CREATE TABLE Idiots (
IdiotId int,
FirstName varchar(50),
LastName varchar(50)
);
INSERT INTO Idiots VALUES
(1, 'Peter', 'Griffin'),
(2, 'Homer', 'Simpson'),
(3, 'Ned', 'Flanders');
Itu membuat tabel bernama Idiots dan memasukkan tiga baris ke dalamnya.
Sekarang kita dapat menggunakan SELECT pernyataan untuk melihat nilai baru dalam tabel:
SELECT * FROM Idiots; Hasil:
+---------+-----------+----------+ | idiotid | firstname | lastname | +---------+-----------+----------+ | 1 | Peter | Griffin | | 2 | Homer | Simpson | | 3 | Ned | Flanders | +---------+-----------+----------+