So sánh SQL và T-SQL

16:16 11/12/2024

Trong chương trình đào tạo của FPT Polytechnic, MySQL và SQL Server là các bộ công cụ quan trọng được đưa vào 2 môn học bắt buộc là Cơ sở dữ liệu(CSDL) và Quản trị CSDL với SQL Server, tại đây sinh viên được học tập và làm việc với 2 ngôn ngữ phổ biến là SQL và T-SQL. Vậy SQL và T-SQL là gì? Chúng có gì khác nhau? Bài viết sau sẽ là câu trả lời trọn vẹn cho bạn nhé!

Định nghĩa và lịch sử

SQL (Structured Query Language)

  • Được phát triển vào những năm 1970 bởi IBM và sau đó được ANSI chuẩn hóa vào năm 1986.
  • SQL là ngôn ngữ tiêu chuẩn dùng để truy vấn, quản lý, và thao tác dữ liệu trên các DBMS như MySQL, PostgreSQL, Oracle.

T-SQL (Transact-SQL)

  • Được Microsoft phát triển dựa trên SQL và tích hợp trong hệ quản trị cơ sở dữ liệu Microsoft SQL Server.
  • Ra đời nhằm mở rộng khả năng của SQL bằng cách thêm các tính năng LẬP TRÌNH cho CSDL.
  • T-SQL thường được sử dụng trong các ứng dụng doanh nghiệp nơi hiệu suất và khả năng lập trình phức tạp là cần thiết.

Tính năng

SQL

Cung cấp các câu lệnh cơ bản như:

  • SELECT: Truy vấn dữ liệu.
  • INSERT, UPDATE, DELETE: Thao tác dữ liệu.
  • ..JOIN, GROUP BY, ORDER BY, WHERE, HAVING: Logic dữ liệu.

T-SQL:

Kế thừa toàn bộ tính năng của SQL và mở rộng thêm:

  • Biến và biểu thức: Hỗ trợ khai báo biến (DECLARE), gán giá trị cho biến (SET hoặc SELECT).
  • Cấu trúc điều kiện: IF…ELSE, CASE.
  • Vòng lặp WHILE kết hợp với các lệnh nhảy BREAK, CONTINUE.
  • Xử lý lỗi: TRY…CATCH. Trong điều kiện dữ liệu không phù hợp hoặc các trường hợp ngoại lệ, người lập trình có thể sử dụng cấu trúc try..catch để in ra thông báo cho người dùng, hoặc sử dụng những hàm thông báo lỗi có sẵn của T-SQL.
  • Thủ tục (Stored Procedure): Có sẵn các thủ tục, hoặc lập trình viên có thể xây dựng thủ tục và chúng được lưu trữ vào hệ thống của Database.
  • Hàm (Functions): Được xây dựng và tái sử dụng, hàm có thể trả về giá trị nguyên thủy hoặc trả về dạng bảng dữ liệu.

Một số ví dụ so sánh tính năng của SQL và T-SQL

Ví dụ 1: Giả sử ta có table Nhân viên, trong đó có cột Lương, hãy hiển thị những nhân viên có lương cao hơn mức lương trung bình?

Sử dụng truy vấn con (SubQuery) trong SQL:

Select * from NhanVien

Where luong > (select avg(luong) from NhanVien);

Sử dụng biến trong T-SQL:

Declare @AvgLuong int        –Khai báo biến AvgLuong

Select @AvgLuong=avg(luong) from NhanVien–Gán giá trị cho biến

Select * from NhanVien

Where luong > @AvgLuong;  –Sử dụng biến vào điều kiện where

Ví dụ 2: Giả sử có 2 table Phân công và Nhân viên như dưới đây. Hãy hiển thị nhân viên có Tổng thời gian làm việc tại các dự án lớn nhất?

Table phân công

Mã NV Mã DA Thời Gian
001 20 15,3 Table Nhân Viên
001 30 20,5 Mã NV Tên NV
003 1 20 001 Như
003 2 20 002 The
004 3 40,7 003 Tâm KẾT QUẢ
005 3 10 004 Hùng Mã NV Tên NV TotalTime
005 10 10 005 Tùng 009 Tiên 41,4
005 20 10 006 Vinh
006 20 30 007 Hành
007 10 10,7 008 Quang
007 30 30 009 Tiên
008 10 35,2 017 Tiên
008 30 5
009 1 32,5
009 2 8,9

–câu lệnh SQL:

SELECT MaNV, TenNV, sum(ThoiGian) ‘TotalTime’

FROM NhanVien nv inner join PhanCong pc on nv.MaNV=pc.Ma_NVien

GROUP BY MaNV, TenNV

HAVING sum(ThoiGian) <= all (Select sum(ThoiGian)

From PhanCong

Group by Ma_NVien);

–và T-SQL:

DECLARE @MaxTime FLOAT

SELECT @MaxTime= sum(ThoiGian) From PhanCong Group by Ma_Nvien

SELECT MaNV, TenNV, sum(ThoiGian) ‘TotalTime’

FROM NhanVien nv inner join PhanCong pc on nv.MANV=pc.Ma_NVien

GROUP BY MaNV, TenNV

HAVING sum(ThoiGian) =  @MaxTime

Ứng dụng

SQL: Được dùng để truy vấn và thao tác dữ liệu trên nhiều hệ quản trị cơ sở dữ liệu khác nhau.

T-SQL: Được sử dụng trong hệ sinh thái của Microsoft. Phù hợp với các bài toán phức tạp cần xử lý tích hợp, nghiệp vụ logic ngay trong cơ sở dữ liệu thay vì phải lập trình trên các IDE bằng ngôn ngữ lập trình khác (chủ đề này sẽ được thảo luận trong bài viết sau).

Hiệu suất

SQL: Hiệu suất chủ yếu phụ thuộc vào cấu trúc cơ sở dữ liệu và cách viết truy vấn. Đối với các tác vụ phức tạp, SQL thường cần kết hợp với ứng dụng bên ngoài để xử lý, dẫn đến hiệu suất thấp hơn.

T-SQL: Hỗ trợ thực thi song song bởi SQL Server và IDE.

Trong SQL và T-SQL chúng ta có thể gọi các hàm của hệ thống như SUM, AVG, COUNT…Tuy nhiên T-SQL còn có thể cho phép Lập trình viên viết hàm và sử dụng hàm với kiểu trả về là một table ngày trong DBMS, khi đó ứng dụng có thể gọi đến hàm đã được định nghĩa và lưu trữ trong SQL Server, sau đây là một ví dụ:

–Viết hàm trả về bảng các nhân viên của một phòng ban

Create or Alter Function Fn_NhanVien_PB (@MaPB int)

Returns Table

As

Return

   (

     Select * from NhanVien

     where PHG = @MaPB

    )

 — Gọi hàm vừa tạo với tham trị là Mã phòng ban ‘005’

 select * from Fn_NhanVien_PB(5)

Tính mở rộng

SQL: Được hỗ trợ bởi hầu hết các hệ quản trị cơ sở dữ liệu, nên dễ dàng chuyển đổi giữa các nền tảng.

T-SQL: Chỉ có trên SQL Server và các dịch vụ liên quan của Microsoft như Azure, nên không thể mở rộng trên các DBMS khác.

Bảng so sánh SQL và T-SQL dưới đây giúp chúng ta có cái nhìn tổng thể hơn:

Tiêu chí SQL (Structured Query Language) T-SQL (Transact-SQL)
Định nghĩa Ngôn ngữ truy vấn dữ liệu chuẩn. Phần mở rộng của SQL, được phát triển bởi Microsoft.
Phạm vi sử dụng Dùng trong nhiều hệ quản trị CSDL như MySQL, PostgreSQL, Oracle, SQLite. Chỉ hoạt động trên Microsoft SQL Server và Azure SQL Database.
Mục đích chính Quản trị CSDL. Quản trị CSDL, xử lý logic phức tạp và lập trình thủ tục.
Chức năng chính – Truy vấn dữ liệu
– Thao tác dữ liệu.
– Bao gồm tất cả chức năng của SQL.
– Mở rộng với Biến, Cấu trúc, Thủ tục(PROCEDURE) và Hàm (FUNCTION).
Tiêu chuẩn hóa Tuân theo chuẩn quốc tế ANSI/ISO. Không phải chuẩn quốc tế, là đặc trưng của Microsoft.
Lập trình Không hỗ trợ. Hỗ trợ đầy đủ cấu trúc lập trình như: WHILE,  IF…ELSE, CASE.
Xử lý ngoại lệ Không hỗ trợ. Hỗ trợ xử lý lỗi với TRY…CATCH.
Giao dịch (Transaction) Hỗ trợ giao dịch cơ bản thông qua câu lệnh BEGIN TRANSACTION, COMMIT, ROLLBACK. Mở rộng giao dịch phức tạp với kiểm soát giao dịch và xử lý lỗi.
Tích hợp XML/JSON Giới hạn, không có tính năng tích hợp mạnh mẽ. Hỗ trợ mạnh mẽ xử lý XML và JSON trực tiếp.
Tính năng bảo mật Không hỗ trợ. Hỗ trợ bảo mật nâng cao như mã hóa dữ liệu, quyền người dùng.
Tính năng bổ sung Không có tính năng bổ sung. Giao dịch, khóa bảng (LOCK TABLE).
Tính linh hoạt Chỉ giới hạn trong việc truy vấn và thao tác dữ liệu. Hỗ trợ lập trình ngay trong CSDL.

Kết luận

Tóm lại, việc lựa chọn giữa hai ngôn ngữ này phụ thuộc vào nhu cầu cụ thể của dự án và môi trường làm việc, nếu bạn cần một ngôn ngữ chung cho nhiều hệ quản trị cơ sở dữ liệu, SQL sẽ là sự lựa chọn hợp lý. Ngược lại, T-SQL mở rộng khả năng của SQL với các tính năng lập trình như hàm, thủ tục được tích hợp sâu trong DBMS, nên T-SQL của Microsoft SQL Server phù hợp cho các dự án lớn và phức tạp. 

Giảng viên Trần Thế Bảy
Bộ môn Ứng dụng phần mềm
FPT Polytechnic TP HCM

Cùng chuyên mục

Đăng Kí học Fpoly 2024

  • Max. file size: 50 MB.
  • Max. file size: 50 MB.
  • Max. file size: 50 MB.