Đăng ký để xem nội dung này
Tạo tài khoản miễn phí và đăng ký gói học để truy cập toàn bộ bài học, video và tài liệu độc quyền.
Đăng ký ngay — Miễn phí Đã có tài khoản? Đăng nhậpCác cấu trúc lệnh hay sử dụng
1️⃣ Khai báo & sử dụng biến
📖 Ý nghĩa
-
Biến trong T-SQL giúp lưu giá trị tạm thời trong quá trình xử lý.
-
Giống biến trong các ngôn ngữ lập trình khác.
🎯 Khi nào dùng?
-
Khi cần lưu giá trị tính toán trung gian, kiểm tra điều kiện hoặc gán giá trị từ SELECT.
🛠 Ví dụ
DECLARE @TongHocPhi FLOAT
SET @TongHocPhi = 0
SELECT @TongHocPhi = SUM(HocPhi)
FROM DangKyKhoaHoc
WHERE idKhoaHoc = 1
PRINT 'Tổng học phí: ' + CAST(@TongHocPhi AS NVARCHAR(50))
➡ Áp dụng: Tính tổng học phí của một khóa học để báo cáo.
2️⃣ IF...ELSE & CASE WHEN
📖 Ý nghĩa
-
Giúp rẽ nhánh xử lý, kiểm tra điều kiện trong quá trình chạy SQL.
-
IF...ELSE: Điều kiện logic. -
CASE: Được dùng trong SELECT để phân loại.
🎯 Khi nào dùng?
-
Kiểm tra trạng thái, phân loại dữ liệu (ví dụ đang active / inactive).
-
Thay đổi luồng xử lý theo điều kiện.
🛠 Ví dụ
IF @isCongKhai = 1
PRINT 'Khóa học đang được công khai'
ELSE
PRINT 'Khóa học chưa được công khai'
SELECT
TenKhoaHoc,
CASE
WHEN isCongKhai = 1 THEN N'Công khai'
ELSE N'Riêng tư'
END AS TrangThai
FROM KhoaHoc
➡ Áp dụng: Hiển thị trạng thái công khai hay không cho danh sách khóa học.
3️⃣ WHILE loop
📖 Ý nghĩa
-
Cho phép lặp đi lặp lại một khối lệnh cho đến khi điều kiện không còn thỏa mãn.
🎯 Khi nào dùng?
-
Dùng khi không thực hiện được hoàn toàn với set-based query.
-
Ví dụ lặp qua danh sách ID theo từng batch để xử lý.
🛠 Ví dụ
DECLARE @i INT = 1
WHILE @i <= 5
BEGIN
PRINT 'ID: ' + CAST(@i AS NVARCHAR(10))
SET @i = @i + 1
END
➡ Áp dụng: Xử lý từng bước, ví dụ batch gửi email cho 100 user 1 lần.
4️⃣ Bảng tạm & biến bảng
📖 Ý nghĩa
-
Giúp lưu tạm dữ liệu dạng bảng trong quá trình xử lý.
-
#TempTable: tồn tại trong session (vượt qua thủ tục). -
@TableVariable: gọn, nhanh, tồn tại trong batch.
🎯 Khi nào dùng?
-
Khi cần lọc, tổng hợp dữ liệu tạm, hoặc lưu dữ liệu trung gian rồi xử lý tiếp.
🛠 Ví dụ
CREATE TABLE #VideoTemp (ID INT, TieuDe NVARCHAR(500))
INSERT INTO #VideoTemp
SELECT ID, TieuDe FROM Video WHERE idKhoaHoc = 1
SELECT * FROM #VideoTemp
DROP TABLE #VideoTemp
➡ Áp dụng: Chuẩn bị dữ liệu để insert qua nhiều bảng, hay tạo report.
5️⃣ Transaction (BEGIN TRAN, COMMIT, ROLLBACK)
📖 Ý nghĩa
-
Giúp nhóm nhiều thao tác thành một khối đồng bộ.
-
Nếu 1 thao tác lỗi, rollback hết, đảm bảo toàn vẹn dữ liệu (ACID).
🎯 Khi nào dùng?
-
Cập nhật nhiều bảng cùng lúc: Insert đăng ký, update tồn kho.
-
Giao dịch tiền, ghi log.
🛠 Ví dụ
BEGIN TRAN
BEGIN TRY
-- nhiều câu lệnh
COMMIT
END TRY
BEGIN CATCH
ROLLBACK
END CATCH
➡ Áp dụng: Đăng ký khóa học và ghi log thanh toán.
6️⃣ CURSOR
📖 Ý nghĩa
-
Cho phép duyệt từng dòng, giống vòng lặp từng record.
🎯 Khi nào dùng?
-
Khi bắt buộc phải xử lý từng dòng, ví dụ gửi email từng user.
🛠 Ví dụ
DECLARE cur CURSOR FOR
SELECT TenKhoaHoc FROM KhoaHoc
OPEN cur
FETCH NEXT FROM cur INTO @TenKhoaHoc
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @TenKhoaHoc
FETCH NEXT FROM cur INTO @TenKhoaHoc
END
CLOSE cur
DEALLOCATE cur
➡ Áp dụng: Gửi email cho từng học viên đăng ký.
7️⃣ MERGE & OUTPUT
📖 Ý nghĩa
-
MERGE: xử lý INSERT, UPDATE, DELETE trong một lệnh duy nhất, tránh viết nhiều bước. -
OUTPUT: trả lại dòng vừa bị INSERT/UPDATE/DELETE.
🎯 Khi nào dùng?
-
Upsert dữ liệu. Ví dụ cập nhật lượt xem: nếu có thì cộng, chưa có thì thêm.
-
Lấy ID mới insert.
🛠 Ví dụ
MERGE INTO LuotXemVideo AS target
USING (SELECT 1 AS idVideo, 10 AS LuotXemMoi) AS source
ON target.idVideo = source.idVideo
WHEN MATCHED THEN
UPDATE SET target.LuotXem += source.LuotXemMoi
WHEN NOT MATCHED THEN
INSERT (idVideo, LuotXem) VALUES (source.idVideo, source.LuotXemMoi);
➡ Áp dụng: Thống kê video được xem.
8️⃣ ROW_NUMBER(), RANK()
📖 Ý nghĩa
-
Cung cấp thứ tự dòng hoặc xếp hạng dựa trên giá trị.
🎯 Khi nào dùng?
-
Phân trang dữ liệu, top N video xem nhiều.
🛠 Ví dụ
SELECT
ROW_NUMBER() OVER (ORDER BY LuotXem DESC) AS STT,
ID, TieuDe
FROM Video
WHERE idKhoaHoc = 1
➡ Áp dụng: Hiển thị top 10 video xem nhiều nhất.
✅ Tổng kết
| Chủ đề | Ý nghĩa | Tình huống áp dụng |
|---|---|---|
| Biến | Lưu giá trị tạm | Tính tổng, kiểm tra |
| IF/CASE | Rẽ nhánh | Xác định trạng thái |
| WHILE | Lặp | Chia batch |
| Bảng tạm | Lưu bảng trung gian | Chuẩn bị dữ liệu |
| Transaction | Đồng bộ | Giao dịch tiền |
| CURSOR | Duyệt từng dòng | Gửi email |
| MERGE | Upsert | Thêm hoặc cập nhật thống kê |
| ROW_NUMBER | Xếp hạng | Top video |
Hãy tóm tắt lại các kiến thức bạn đã học được ở môn hệ quản trị cơ sở dữ liệu.
Nếu có ý kiến thêm, các bạn hãy gửi nội dung lên đây nhé