PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Giải thích lệnh PostgreSQL VALUES

Trong PostgreSQL, VALUES lệnh trả về một tập hợp một hoặc nhiều hàng dưới dạng bảng. Nó là một hàm tạo giá trị bảng có thể được sử dụng như một phần của lệnh lớn hơn hoặc như một câu lệnh SQL độc lập.

Cú pháp

Cú pháp chính thức như sau:

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

Ví dụ

Dưới đây là một ví dụ đơn giản để chứng minh cách nó hoạt động:

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

Kết quả:

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

Các cột kết quả được đặt tên ngầm định là column1 , column2 , column3 và v.v. (mặc dù, điều này có thể được thay đổi - xem SELECT tùy chọn câu lệnh ở phần sau của bài viết này).

Mỗi hàng được xác định bởi một hoặc nhiều giá trị được đặt trong dấu ngoặc đơn. Khi nhiều hơn một hàng được chỉ định, tất cả các hàng phải có cùng số phần tử

Đây là một ví dụ khác:

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

Kết quả:

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

ORDER BY Mệnh đề

Cú pháp cho phép sử dụng ORDER BY mệnh đề để sắp xếp các kết quả.

Ví dụ:

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

Kết quả:

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

LIMIT Mệnh đề

Chúng tôi có thể sử dụng LIMIT mệnh đề giới hạn số hàng được xuất:

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

Kết quả:

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

OFFSET Mệnh đề

Dưới đây là một ví dụ về việc sử dụng OFFSET mệnh đề với VALUES lệnh:

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

Kết quả:

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

FETCH Mệnh đề

Dưới đây là một ví dụ về việc sử dụng FETCH mệnh đề:

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

Kết quả:

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

Trong một SELECT Tuyên bố

Chúng tôi cũng có thể sử dụng VALUES câu lệnh trong SELECT câu lệnh, như thể VALUES hàm tạo bảng là một bảng thực tế:

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

Kết quả:

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

Mỗi khối tạo hàng phải chứa cùng một số giá trị

Mỗi hàm tạo hàng trong cùng một VALUES câu lệnh phải có cùng số lượng giá trị trong danh sách giá trị của nó.

Do đó, chúng tôi không thể làm điều này:

VALUES (1, 2), (3);

Kết quả:

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

Sử dụng VALUES để Chèn dữ liệu

Chúng ta có thể sử dụng VALUES câu lệnh kết hợp với INSERT câu lệnh để chèn dữ liệu vào bảng.

Ví dụ:

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

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

Điều đó đã tạo ra một bảng có tên là Idiots và chèn ba hàng vào đó.

Bây giờ chúng ta có thể sử dụng SELECT để xem các giá trị mới trong bảng:

SELECT * FROM Idiots;

Kết quả:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chế độ postgresql H2 dường như không hoạt động với tôi

  2. Chạy nhiều phiên bản PostgreSQL trên một máy chủ duy nhất

  3. Tổng hợp một cột duy nhất trong truy vấn với nhiều cột

  4. Làm gì với giá trị null khi lập mô hình và chuẩn hóa?

  5. Postgresql DROP TABLE không hoạt động