Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

1. Nền Tảng SQL Server

Giới thiệu

Phần này trình bày các kiến thức nền tảng về SQL Server và T-SQL, từ kiến trúc hệ thống đến các câu lệnh cơ bản nhất. Đây là nền tảng bắt buộc để hiểu sâu hơn về hiệu suất, indexing và các chủ đề nâng cao.

Nội dung chính

Kiến trúc SQL Server

Kiểu dữ liệu

  • Kiểu Dữ liệu - Numeric, String, DateTime, Binary types; Unicode vs non-Unicode; type conversion

DDL - Data Definition Language

  • DDL - CREATE/ALTER/DROP cho database objects, constraints, identity, sequences, temporal tables, indexes

DML - Data Manipulation Language

  • DML - INSERT, UPDATE, DELETE, MERGE, BULK operations, OUTPUT clause, transactions

Câu hỏi phỏng vấn (Sắp xếp từ dễ đến khó)

Mức độ: Dễ (Junior)

  1. SQL Server là gì? Sự khác biệt giữa SQL Server instance và database là gì?
  2. Các file database trong SQL Server có những loại nào? (.mdf, .ndf, .ldf)
  3. SELECT, WHERE, ORDER BY, GROUP BY khác nhau như thế nào về mục đích sử dụng?
  4. HAVINGWHERE khác nhau như thế nào?
  5. Sự khác biệt giữa INNER JOIN, LEFT JOIN, RIGHT JOIN, và FULL OUTER JOIN?
  6. NULL trong SQL Server là gì? Cách xử lý NULL với IS NULL, ISNULL(), COALESCE()?
  7. DISTINCT dùng để làm gì? Ví dụ thực tế?
  8. Sự khác biệt giữa charvarchar? Giữa varcharnvarchar?
  9. int, bigint, smallint, tinyint khác nhau ở điểm gì?
  10. PRIMARY KEYUNIQUE constraint khác nhau như thế nào?
  11. NOT NULL constraint hoạt động như thế nào?
  12. DEFAULT constraint dùng để làm gì?
  13. Câu lệnh INSERT INTO...VALUES cơ bản viết như thế nào?
  14. Sự khác biệt giữa DELETETRUNCATE TABLE?
  15. IDENTITY column là gì? Cú pháp khai báo như thế nào?

Mức độ: Trung bình (Mid-level)

  1. CASE expression (simple và searched) hoạt động như thế nào? Ví dụ thực tế?
  2. TOP NOFFSET-FETCH khác nhau như thế nào? Cái nào nên dùng cho phân trang?
  3. Các hàm xử lý chuỗi phổ biến: LEN, SUBSTRING, CHARINDEX, REPLACE, TRIM?
  4. Sự khác biệt giữa GETDATE(), GETUTCDATE(), SYSDATETIME(), và SYSUTCDATETIME()?
  5. DATEADD, DATEDIFF, DATEPART dùng như thế nào?
  6. decimal vs float vs money - khi nào dùng cái nào? Tại sao không nên dùng float cho tiền tệ?
  7. datetime vs datetime2 vs datetimeoffset - sự khác biệt và khi nào dùng?
  8. CAST vs CONVERT vs TRY_CAST vs TRY_CONVERT - khác nhau như thế nào?
  9. FOREIGN KEY constraint là gì? ON DELETE CASCADE hoạt động như thế nào?
  10. CHECK constraint dùng để làm gì? Ví dụ thực tế?
  11. UPDATE với JOIN viết như thế nào?
  12. DELETE với JOIN viết như thế nào?
  13. MERGE statement (upsert) dùng để làm gì? Cú pháp cơ bản?
  14. OUTPUT clause trong DML dùng để làm gì?
  15. Computed column là gì? Sự khác biệt giữa persisted và non-persisted?
  16. Schemas trong SQL Server là gì? Tại sao nên dùng schemas thay vì tất cả trong dbo?

Mức độ: Khó (Senior)

  1. SQL Server Buffer Pool hoạt động như thế nào? Tại sao memory management quan trọng?
  2. PagesExtents trong SQL Server là gì? Ảnh hưởng đến hiệu năng như thế nào?
  3. Plan Cache hoạt động như thế nào? Parameter sniffing là gì và khi nào gây ra vấn đề?
  4. Implicit conversion trong SQL Server là gì? Tại sao có thể gây ra index scan thay vì seek?
  5. Temporal Tables (system-versioned) là gì? Use case thực tế?
  6. SEQUENCE object so với IDENTITY column - ưu nhược điểm?
  7. NEWID() vs NEWSEQUENTIALID() vs IDENTITY - khi nào dùng cái nào? Tác động đến index fragmentation?
  8. BULK INSERT vs INSERT INTO...SELECT - khi nào dùng cái nào cho hiệu năng tốt nhất?
  9. Set-based operations vs row-by-row (cursor) - vì sao nên tránh cursor trong SQL Server?
  10. nvarchar(MAX) vs nvarchar(4000) - tác động đến hiệu năng và storage?
  11. INDEX trong DDL - Clustered vs Nonclustered, khi nào tạo index trong CREATE TABLE và khi nào tách riêng?
  12. Cascading referential actions (CASCADE, SET NULL, NO ACTION) - tác động đến performance với large datasets?