Dưới đây là tổng quan nhanh về sự khác biệt giữa SQL và T-SQL (Transact-SQL). Không quá nhiều khác biệt như vậy, nhưng giải thích thêm về T-SQL và vị trí của nó trong mối quan hệ với SQL.
Nếu bạn đã thực hiện bất kỳ phát triển hoặc quản trị cơ sở dữ liệu nào, có thể bạn đã quen thuộc với SQL. SQL, viết tắt của Structured Query Language, là một ngôn ngữ truy vấn tiêu chuẩn để làm việc với cơ sở dữ liệu. Hầu hết các hệ quản trị cơ sở dữ liệu quan hệ chính như MySQL, Oracle, SQL Server, PostgreSQL, v.v. đều hỗ trợ SQL theo cách này hay cách khác.
Tuy nhiên, trong khi tiêu chuẩn SQL cung cấp các thông số kỹ thuật rõ ràng, nó cũng cho phép các nhà cung cấp cơ sở dữ liệu thêm các phần mở rộng của riêng họ. Điều này cho phép các nhà cung cấp cung cấp các tính năng và chức năng bổ sung cho khách hàng của họ mà đối thủ cạnh tranh của họ có thể không cung cấp.
Đây là lúc T-SQL xuất hiện.
Transact-SQL là gì?
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.
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 đượ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. Do đó, có một số khác biệt giữa Sybase T-SQL và Microsoft T-SQL.
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ệ).
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ố.
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.
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 tới 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), chúng cũng có những nhược điểm. Một bất lợi 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 yêu cầu bạn bắt kịp cú pháp của cả hai hệ thống.