PostgreSQL में, VALUES
कमांड तालिका के रूप में एक या अधिक पंक्तियों का एक सेट देता है। यह एक टेबल वैल्यू कंस्ट्रक्टर है जिसे बड़े कमांड के हिस्से के रूप में या स्टैंडअलोन एसक्यूएल स्टेटमेंट के रूप में इस्तेमाल किया जा सकता है।
सिंटैक्स
आधिकारिक वाक्य रचना इस प्रकार है:
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);
परिणाम:
+---------+---------+---------+ | column1 | column2 | column3 | +---------+---------+---------+ | 1 | 2 | 3 | | 4 | 5 | 6 | +---------+---------+---------+
परिणामी स्तंभों को परोक्ष रूप से column1
. नाम दिया गया है , column2
, column3
और इसी तरह (हालाँकि, इसे बदला जा सकता है - देखें SELECT
इस लेख में बाद में स्टेटमेंट विकल्प)।
प्रत्येक पंक्ति को कोष्ठक में संलग्न एक या अधिक मानों द्वारा परिभाषित किया गया है। जब एक से अधिक पंक्तियों को निर्दिष्ट किया जाता है, तो सभी पंक्तियों में समान तत्वों की संख्या होनी चाहिए
यहां एक और उदाहरण दिया गया है:
VALUES ('Peter', 'Griffin'), ('Bart', 'Simpson');
परिणाम:
+---------+---------+ | column1 | column2 | +---------+---------+ | Peter | Griffin | | Bart | Simpson | +---------+---------+
ORDER BY
खंड
सिंटैक्स ORDER BY
. के उपयोग की अनुमति देता है परिणाम आदेश देने के लिए खंड।
उदाहरण:
VALUES (1, 2, 3), (4, 5, 6), (7, 8, 9) ORDER BY column1 DESC;
परिणाम:
+---------+---------+---------+ | column1 | column2 | column3 | +---------+---------+---------+ | 7 | 8 | 9 | | 4 | 5 | 6 | | 1 | 2 | 3 | +---------+---------+---------+
LIMIT
खंड
हम LIMIT
. का उपयोग कर सकते हैं आउटपुट वाली पंक्तियों की संख्या को सीमित करने के लिए क्लॉज:
VALUES
('Peter', 'Griffin'),
('Homer', 'Simpson'),
('Ned', 'Flanders')
LIMIT 2;
परिणाम:
+---------+---------+ | column1 | column2 | +---------+---------+ | Peter | Griffin | | Homer | Simpson | +---------+---------+
OFFSET
खंड
यहां OFFSET
. का उपयोग करने का एक उदाहरण दिया गया है VALUES
. के साथ क्लॉज आदेश:
VALUES
(1, 'Peter', 'Griffin'),
(2, 'Homer', 'Simpson'),
(3, 'Ned', 'Flanders'),
(4, 'Barney', 'Rubble'),
(5, 'George', 'Costanza')
OFFSET 3;
परिणाम:
+---------+---------+----------+ | column1 | column2 | column3 | +---------+---------+----------+ | 4 | Barney | Rubble | | 5 | George | Costanza | +---------+---------+----------+
FETCH
खंड
यहां FETCH
. का उपयोग करने का एक उदाहरण दिया गया है खंड:
VALUES
(1, 'Peter', 'Griffin'),
(2, 'Homer', 'Simpson'),
(3, 'Ned', 'Flanders'),
(4, 'Barney', 'Rubble'),
(5, 'George', 'Costanza')
FETCH FIRST 3 ROWS ONLY;
परिणाम:
+---------+---------+----------+ | column1 | column2 | column3 | +---------+---------+----------+ | 1 | Peter | Griffin | | 2 | Homer | Simpson | | 3 | Ned | Flanders | +---------+---------+----------+
एक 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;
परिणाम:
+-----------+----------+ | firstname | lastname | +-----------+----------+ | Homer | Simpson | +-----------+----------+
हर रो कंस्ट्रक्टर में मानों की संख्या समान होनी चाहिए
प्रत्येक पंक्ति निर्माता एक ही VALUES
. में स्टेटमेंट की वैल्यू लिस्ट में मानों की संख्या समान होनी चाहिए।
इसलिए, हम ऐसा नहीं कर सकते:
VALUES (1, 2), (3);
परिणाम:
ERROR: VALUES lists must all be the same length 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;
परिणाम:
+---------+-----------+----------+ | idiotid | firstname | lastname | +---------+-----------+----------+ | 1 | Peter | Griffin | | 2 | Homer | Simpson | | 3 | Ned | Flanders | +---------+-----------+----------+