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 | +---------+-----------+----------+