Row constructor là gì?

Phrase Database SQL

SQL cho phép chúng ta sử dụng ký hiệu (v1, v2,…, vn) để biểu thị một tuple có arity là n chứa các giá trị v1, v2,…, vn; ký hiệu đó được gọi là row constructor.

Row constructor có thể được sử dụng trong các toán tử so sánh trên các tuple. Ví dụ, (a1, a2)


select name, course id from instructor, teaches where instructor.ID= teaches.ID and dept name = 'Biology';

có thể viết lại như sau:


select name, course id from instructor, teaches where (instructor.ID, dept name) = (teaches.ID, 'Biology');

Noun Database SQL Server
rable value constructor

Với SQL server 2008, tính năng mới đã được giới thiệu trong đó là chèn nhiều hàng (row) bằng cách viết một câu lệnh INSERT duy nhất và nó được gọi là row constructor. Nó tiết kiệm rất nhiều thời gian khi chúng ta chèn nhiều bản ghi (record) vào một bảng (table).

Row constructor hoặc table value constructor có nghĩa là tạo nhiều hàng bằng cách sử dụng mệnh đề VALUES(). Điều này cho phép nhiều hàng dữ liệu được chỉ định trong một câu lệnh DML. Và mệnh đề VALUES() này có thể được sử dụng với các câu lệnh SELECT, INSERT và MERGE.

Trước khi giới thiệu row constructor trong SQL serveL, khi chúng ta phải thêm giá trị vào nhiều giá trị, bạn phải chạy truy vấn SQL như bên dưới:


-- Before SQL Server 2008 – Multiple INSERT statements required.
INSERT INTO dbo.StudentTable (StudentName, StudentRollNumber)
VALUES ('Sara', 32)
 
INSERT INTO dbo.StudentTable (StudentName, StudentRollNumber)
VALUES ('Shekhar', 35)
 
INSERT INTO dbo.StudentTable (StudentName, StudentRollNumber)
VALUES ('John', 33)

Nhưng sau khi giới thiệu row constructor trong SQL server 2008, việc thêm nhiều hàng trở nên dễ dàng và chúng ta có thể thực hiện thao tác tương tự như trên trong một truy vấn chỉ như bên dưới


-- SQL Server 2008 and after (Row constructors)
INSERT INTO dbo.StudentTable (StudentName, StudentRollNumber) -- Single INSERT statement.
VALUES ('Sara', 32), -- Row 1
       ('Shekhar', 35),  -- Row 2
       ('John', 33) -- Row 3

Ngoài ra row constructor còn được sử dụng để tạo một tập hợp các hàng đơn giản bằng câu lệnh SELECT FROM


SELECT * 
FROM (
VALUES
    ('John',1),
    ('Sara',2),
    ('Chandra',3)
   
) AS Stu (StudentName, StudentRollNumber);
                                
Learning English Everyday