Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Sự khác biệt giữa SQL và T-SQL (Transact-SQL)

SQL (Structured Query Language) là ngôn ngữ chuẩn ANSI/ISO cho cơ sở dữ liệu quan hệ — phi thủ tục, khai báo cái gì (what). T-SQL (Transact-SQL) là phần mở rộng thủ tục (procedural extension) của Microsoft cho SQL Server — thêm biến, vòng lặp, xử lý lỗi, transaction, cho phép viết như thế nào (how).

Bảng so sánh

#Tiêu chíSQL (Chuẩn)T-SQL (SQL Server)
1Loại ngôn ngữPhi thủ tục (Non-procedural / Declarative)Thủ tục (Procedural)
2Khả năng mở rộngChỉ DML, DDL, DQL cơ bảnViết Procedure, Function, biến cục bộ, điều khiển luồng
3Tính độc quyềnMở, chung cho mọi RDBMSĐộc quyền (Proprietary) của Microsoft SQL Server
4Thực thi truy vấnGửi từng câu lệnh mộtGửi hàng loạt (batch) nhiều câu lệnh cùng lúc
5Tính năng bổ sungDDL, DML, DQLTransaction control, Exception handling, Dynamic SQL, Table variables, ...

Chi tiết các khác biệt chính

1. Biến và điều khiển luồng

-- Chỉ có trong T-SQL
BEGIN TRY
    INSERT INTO Table1 VALUES (1);
    INSERT INTO Table2 VALUES (2); -- Có thể lỗi
END TRY
BEGIN CATCH
    ROLLBACK TRANSACTION;
    PRINT ERROR_MESSAGE();
END CATCH;

3. Dynamic SQL

-- T-SQL đặc thù
DECLARE @temp TABLE (Id INT, Name VARCHAR(50));
INSERT INTO @temp SELECT Id, Name FROM Users WHERE Active = 1;

Tương đương ở các RDBMS khác

RDBMSNgôn ngữ thủ tục
OraclePL/SQL
PostgreSQLPL/pgSQL
MySQLMySQL Stored Program Language (SQL/PSM)
DB2SQL PL

Khi nào dùng T-SQL thay vì SQL thuần?

  • Logic nghiệp vụ phức tạp cần chạy gần dữ liệu (giảm network round-trip).
  • Cần transaction, xử lý lỗi, vòng lặp, điều kiện.
  • Báo cáo, ETL, maintenance jobs chạy định kỳ trên SQL Server.

Lưu ý: Code T-SQL không thể chạy trực tiếp trên MySQL, PostgreSQL, Oracle — phải viết lại theo dialect của từng hệ (PL/pgSQL, PL/SQL, v.v.).