Transact-SQL, thường được viết tắt thành T-SQL hoặc thậm chí TSQL, là phần mở rộng độc quyền của Microsoft và Sybase cho SQL. Transact-SQL mở rộng trên tiêu chuẩn SQL để bao gồm các tính năng bổ sung không có trong tiêu chuẩn SQL.
Dưới đây là một ví dụ về một câu lệnh T-SQL đơn giản:
CREATE DATABASE Movies;
Điều này đơn giản như một ví dụ T-SQL có thể nhận được. Điều này tạo ra một cơ sở dữ liệu mới có tên là Movies
.
Tuy nhiên, T-SQL cung cấp các tùy chọn khác được đưa vào câu lệnh này, chẳng hạn như vị trí đặt tệp cơ sở dữ liệu, kích thước của các tệp đó, kích thước tối đa của chúng, v.v.
Tính năng T-SQL
Một số tính năng của T-SQL bao gồm:
- Lập trình theo thủ tục
- Các biến cục bộ
- Các chức năng hỗ trợ khác nhau để xử lý chuỗi, xử lý ngày tháng, toán học, v.v.
- Các thay đổi đối với
DELETE
vàUPDATE
các câu lệnh. Đặc biệt, chúng cho phép thêm mệnh đề FROM, điều này cho phép bao gồm các phép nối. - T-SQL có
BULK INSERT
câu lệnh cho phép bạn nhập tệp dữ liệu vào bảng hoặc chế độ xem cơ sở dữ liệu ở định dạng do người dùng chỉ định.
Một trong những lợi ích chính của các tiện ích mở rộng trên là bạn có nhiều khả năng lập trình hơn khi sử dụng T-SQL vs SQL. Ví dụ:các thủ tục được lưu trữ cho phép bạn kết hợp logic lập trình vào cơ sở dữ liệu của mình. Bạn có thể chuyển một hoặc nhiều tham số cho một thủ tục được lưu trữ và thủ tục được lưu trữ sẽ trả về một kết quả đầu ra khác nhau tùy thuộc vào giá trị của các tham số.
T-SQL cũng bao gồm một số lượng lớn các hàm tích hợp, cũng như hỗ trợ các hàm do người dùng định nghĩa.
Ví dụ về một hàm tích hợp
Đây là một ví dụ cơ bản khác, lần này sử dụng một trong các hàm tích hợp của T-SQL:
SELECT GETDATE();
Kết quả:
2018-05-06 23:30:37.003
Trong trường hợp này, chúng tôi sử dụng GETDATE()
của T-SQL chức năng trả về ngày và giờ hiện tại. Điều này được sử dụng cùng với SELECT
, là một câu lệnh SQL phổ biến để trả về dữ liệu.
Chúng ta cũng có thể sử dụng hàm đó làm đối số cho một hàm khác. Đây là một ví dụ:
SELECT FORMAT(GETDATE(), 'MMM');
Kết quả:
May
Trong trường hợp này, chúng tôi sử dụng T-SQL FORMAT()
chức năng chỉ trích xuất phần tháng của ngày và trình bày nó ở một định dạng nhất định. Bạn có thể xem thêm các ví dụ về ngày / giờ tại Cách Định dạng Ngày và Giờ trong SQL Server.
Lịch sử của T-SQL
Mặc dù Transact-SQL (và SQL Server) thường được biết đến như một thứ của Microsoft, nó thực sự là kết quả của sự hợp tác giữa Microsoft và Sybase bắt đầu vào năm 1987. Mối quan hệ hợp tác này đã bị giải thể vào năm 1994.
Sau đó, T-SQL tiếp tục được hỗ trợ bởi các sản phẩm cơ sở dữ liệu do cả hai công ty phát hành, tuy nhiên, mỗi công ty lại phát triển các sản phẩm cơ sở dữ liệu của mình theo hướng riêng của mình. Do đó, có một số khác biệt giữa Sybase T-SQL và Microsoft T-SQL.
Công cụ T-SQL và GUI
Transact-SQL là trung tâm của SQL Server. Hầu hết các hoạt động trong SQL Server được thực hiện bằng T-SQL. Điều này đúng ngay cả khi bạn sử dụng công cụ GUI (chẳng hạn như SSMS hoặc DBeaver) và bạn không thực sự thực hiện bất kỳ lập trình nào. Bất kỳ khi nào bạn sử dụng ứng dụng để tương tác với SQL Server, ứng dụng đó sẽ sử dụng T-SQL ở hậu trường để thực hiện tác vụ được chỉ định.
Nhưng SQL Server không phải là hệ quản trị cơ sở dữ liệu duy nhất hỗ trợ Transact-SQL. Cơ sở dữ liệu Microsoft Azure SQL cũng hỗ trợ T-SQL. Hầu hết các tính năng T-SQL mà các ứng dụng sử dụng đều được hỗ trợ đầy đủ trong cả Microsoft SQL Server và Azure SQL Database (mặc dù có một số ngoại lệ).
Giới thiệu về Lệnh GO
Bất kỳ ai đã sử dụng T-SQL có lẽ sẽ quen thuộc với GO
yêu cầu. Từ khóa này thường được đặt ở cuối một loạt câu lệnh. Ví dụ:ví dụ đầu tiên ở trên cũng có thể được viết như thế này:
CREATE DATABASE Movies; GO
Tuy nhiên, GO
lệnh không thực sự là một phần của Transact-SQL. Trên thực tế, GO
lệnh thậm chí không thể chiếm cùng dòng với câu lệnh Transact-SQL.
GO
là một trong những lệnh được sqlcmd nhận dạng và osql cũng như SQL Server Management Studio Code Editor để hỗ trợ khả năng đọc và thực thi các lô và tập lệnh. GO
lệnh báo hiệu sự kết thúc của một loạt câu lệnh Transact-SQL tới các tiện ích SQL Server.
Các tiện ích SQL Server diễn giải GO
như một tín hiệu rằng họ nên gửi loạt câu lệnh Transact-SQL hiện tại đến một phiên bản của SQL Server. Lô câu lệnh hiện tại bao gồm tất cả các câu lệnh đã nhập kể từ GO
cuối cùng hoặc kể từ khi bắt đầu phiên hoặc tập lệnh đặc biệt nếu đây là GO
đầu tiên .
Các tiện ích mở rộng SQL độc quyền khác
Transact-SQL không phải là phần mở rộng duy nhất cho tiêu chuẩn SQL. Các hệ thống cơ sở dữ liệu khác nhau có phần mở rộng của riêng chúng. Ví dụ:Oracle sử dụng ngôn ngữ thủ tục độc quyền được gọi là PL / SQL và PostgreSQL sử dụng ngôn ngữ thủ tục được gọi là PL / pgSQL.
Mặc dù các phần mở rộng SQL độc quyền có những ưu điểm của chúng (chẳng hạn như chức năng mở rộng), nhưng chúng cũng có những nhược điểm. Một nhược điểm lớn là chúng có thể gây khó khăn nếu bạn cần chuyển cơ sở dữ liệu từ hệ thống này sang hệ thống khác. Ví dụ:nếu tổ chức của bạn đột nhiên quyết định rằng sẽ sử dụng Oracle thay vì SQL Server, bạn có thể cần phải xem qua tất cả mã SQL Server và viết lại nó cho Oracle. Điều này cũng đòi hỏi bạn phải bắt kịp cú pháp của cả hai hệ thống.