🎯 Mục tiêu bài học
Sau bài học này, bạn sẽ:
✅ Cài đặt SQL Server Express 2022 và SSMS thành công
✅ Restore database mẫu AdventureWorks
✅ Khám phá cấu trúc schemas, tables, columns của AdventureWorks
✅ Đọc hiểu Data Dictionary và ERD của AdventureWorks
✅ Viết được câu truy vấn SELECT đầu tiên
Thời gian: 1 giờ | Độ khó: Beginner | Yêu cầu: Bài 1 "Database Fundamentals"
📖 Bảng Thuật Ngữ Quan Trọng
| Thuật ngữ | Tiếng Việt | Mô tả |
|---|---|---|
| SQL Server Express | Phiên bản miễn phí | SQL Server giới hạn 10GB, đủ để học |
| SSMS | SQL Server Management Studio | Công cụ GUI chính để viết và chạy SQL |
| T-SQL | Transact-SQL | Ngôn ngữ SQL mở rộng của Microsoft |
| Backup (.bak) | File sao lưu | File chứa toàn bộ database để restore |
| Restore | Phục hồi | Khôi phục database từ file backup |
| Object Explorer | Duyệt đối tượng | Panel bên trái SSMS, hiển thị cấu trúc database |
| Query Editor | Trình soạn truy vấn | Vùng viết và chạy SQL trong SSMS |
| Result Grid | Kết quả dạng bảng | Vùng hiển thị kết quả query bên dưới |
Checkpoint
SSMS là công cụ GUI, T-SQL là ngôn ngữ. Bạn dùng SSMS để viết và chạy T-SQL. Hai khái niệm này khác nhau — bạn phân biệt được chưa?
💻 1. Cài đặt SQL Server Express 2022
📚 Định nghĩa
- SQL Server là hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) của Microsoft, được sử dụng rộng rãi nhất trong các doanh nghiệp. T-SQL (Transact-SQL) là ngôn ngữ SQL mở rộng của Microsoft dùng trên SQL Server.
- SQL Server Express là phiên bản miễn phí của SQL Server, giới hạn 10GB/database và 1GB RAM, nhưng có đầy đủ tính năng SQL cần cho học tập và dự án nhỏ.
- SSMS (SQL Server Management Studio) là ứng dụng GUI chính thức để kết nối, truy vấn và quản lý SQL Server — nơi bạn viết T-SQL, duyệt cấu trúc database, và xem kết quả.
💡 Ý nghĩa
SQL Server + SSMS là bộ công cụ tiêu chuẩn trong ngành cho Data Analyst ở Việt Nam:
- Hầu hết doanh nghiệp lớn (ngân hàng, viễn thông, bán lẻ) dùng SQL Server
- SSMS cung cấp Object Explorer để duyệt database trực quan + Query Editor để viết SQL
- T-SQL có nhiều functions mạnh cho analytics mà ANSI SQL không có (PIVOT, TRY_CONVERT, STRING_AGG...)
🏢 Ứng dụng
| Công cụ | Bạn dùng để... |
|---|---|
| SQL Server Express | Chạy database trên máy cá nhân để thực hành |
| SSMS | Viết queries, duyệt tables, xem ERD, quản lý database |
| T-SQL | Truy vấn, phân tích, tạo báo cáo từ dữ liệu |
1.1 Tại sao dùng SQL Server Express?
| Edition | Giá | Giới hạn | Phù hợp |
|---|---|---|---|
| Express | 🆓 Miễn phí | DB ≤ 10GB, RAM ≤ 1GB | ✅ Học tập, dự án nhỏ |
| Developer | 🆓 Miễn phí | Đầy đủ tính năng | Development/Testing |
| Standard | $$$ | Enterprise features | Doanh nghiệp vừa |
| Enterprise | $$$$$ | Không giới hạn | Doanh nghiệp lớn |
Express đủ cho khóa học này — AdventureWorks chỉ khoảng 200MB.
1.2 Các bước cài đặt
Bước 1: Download SQL Server 2022 Express
Truy cập: https://www.microsoft.com/en-us/sql-server/sql-server-downloads
Kéo xuống mục Express → Click Download now
Bước 2: Chạy Installer
- Mở file
SQL2022-SSEI-Expr.exevừa tải - Chọn Basic (cài đặt nhanh, cấu hình mặc định)
- Chấp nhận License Terms → Click Install
- Đợi quá trình cài đặt hoàn tất (5-15 phút)
Bước 3: Ghi nhớ thông tin kết nối
Sau khi cài xong, màn hình sẽ hiển thị:
1Instance Name: SQLEXPRESS2Connection String: Server=localhost\SQLEXPRESS;...Instance Name mặc định là localhost\SQLEXPRESS. Bạn cần thông tin này khi kết nối từ SSMS. Nếu chọn Default Instance thì chỉ cần localhost.
1.3 Cài đặt SSMS (SQL Server Management Studio)
SSMS là công cụ chính để:
- Viết và chạy queries (T-SQL)
- Duyệt cấu trúc database (Object Explorer)
- Quản lý users, permissions, backups
Cài đặt:
- Truy cập: https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms
- Click Download SSMS
- Chạy file installer → Next → Install
- Khởi động lại máy nếu được yêu cầu
1.4 Kết nối lần đầu
Mở SSMS → Cửa sổ Connect to Server:
| Field | Giá trị |
|---|---|
| Server type | Database Engine |
| Server name | localhost\SQLEXPRESS |
| Authentication | Windows Authentication |
Click Connect → Nếu thành công, bạn sẽ thấy Object Explorer bên trái.
Checkpoint
Bạn đã cài SQL Server Express + SSMS + kết nối thành công chưa? Nếu gặp lỗi kết nối, kiểm tra: (1) SQL Server service đang chạy, (2) Server name đúng (localhost\SQLEXPRESS).
📦 2. Restore AdventureWorks Database
📚 Định nghĩa
- Database Backup (.bak) là bản sao lưu toàn bộ cấu trúc và dữ liệu của database vào 1 file. Đây là cơ chế bảo vệ dữ liệu quan trọng nhất.
- Restore là quá trình khôi phục database từ file backup — tạo lại toàn bộ tables, data, indexes, constraints.
- Sample Database là database mẫu chứa dữ liệu giả lập, được thiết kế để học tập và demo.
💡 Ý nghĩa
Thay vì tự tạo dữ liệu (mất hàng giờ + thiếu thực tế), sample database cho bạn dữ liệu phong phú ngay lập tức: đơn hàng, khách hàng, sản phẩm, nhân sự — giống hệt môi trường doanh nghiệp thật. AdventureWorks là sample database nổi tiếng nhất trong SQL Server ecosystem.
2.1 AdventureWorks là gì?
AdventureWorks là database mẫu chính thức của Microsoft, mô phỏng công ty Adventure Works Cycles — nhà sản xuất và phân phối xe đạp.
| Đặc điểm | Chi tiết |
|---|---|
| Lĩnh vực | Sản xuất, bán hàng xe đạp |
| Bộ phận | HR, Sales, Production, Purchasing, Person |
| Kích thước | ~200MB, ~70 tables |
| Records | ~31,000 đơn hàng, 290 nhân viên, 500 sản phẩm |
| Ưu điểm | Dữ liệu thực tế, relationships phức tạp, đủ lớn để thực hành |
2.2 Download file Backup
Tải file .bak:
2.3 Restore bằng SSMS (GUI) — Cách dễ nhất
- Mở SSMS, kết nối SQL Server
- Trong Object Explorer, right-click "Databases" → Restore Database...
- Chọn Device → Click ... (Browse)
- Click Add → Tìm đến file
AdventureWorks2022.bakđã download - Click OK → OK → Đợi restore hoàn tất
2.4 Restore bằng T-SQL
1-- Kiểm tra nội dung file backup2RESTORE FILELISTONLY3FROM DISK = N'C:\Downloads\AdventureWorks2022.bak';45-- Restore database6-- Thay đổi đường dẫn cho phù hợp máy bạn7RESTORE DATABASE AdventureWorks20228FROM DISK = N'C:\Downloads\AdventureWorks2022.bak'9WITH10 MOVE 'AdventureWorks2022'11 TO N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022.mdf',12 MOVE 'AdventureWorks2022_log'13 TO N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022_log.ldf',14 RECOVERY;"Operating system error 5 (Access denied)": Copy file .bak vào thư mục SQL Server có quyền truy cập, ví dụ: C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\
"Cannot open backup device": Kiểm tra lại đường dẫn file .bak, dùng đường dẫn tuyệt đối.
2.5 Xác nhận restore thành công
1-- Kiểm tra database đã restore2SELECT name, state_desc, create_date3FROM sys.databases4WHERE name = 'AdventureWorks2022';56-- Đếm số tables7SELECT COUNT(*) AS TotalTables8FROM AdventureWorks2022.INFORMATION_SCHEMA.TABLES9WHERE TABLE_TYPE = 'BASE TABLE';10-- Kết quả: khoảng 71 tablesCheckpoint
Sau khi restore, chạy query kiểm tra ở trên. Nếu thấy khoảng 71 tables → thành công! Nếu không thấy AdventureWorks2022 trong Object Explorer, bấm Refresh (F5).
🗺️ 3. Khám phá cấu trúc AdventureWorks
📚 Định nghĩa
- Object Explorer là panel phía trái trong SSMS, cho phép duyệt trực quan toàn bộ cấu trúc database: tables, columns, keys, indexes, stored procedures.
- INFORMATION_SCHEMA là tập hợp các system views theo chuẩn ANSI SQL, cho phép truy vấn metadata (thông tin về cấu trúc database) bằng T-SQL.
💡 Ý nghĩa
Trước khi viết bất kỳ câu SQL nào, bạn cần hiểu cấu trúc database: có những tables nào? Columns gì? Data types gì? Có 2 cách khám phá:
- Object Explorer (GUI) — nhanh, trực quan, phù hợp khi mới bắt đầu
- INFORMATION_SCHEMA (T-SQL) — có thể lập trình, tự động hóa, export kết quả
🏢 Ứng dụng
- Onboarding: Data Analyst mới vào công ty dùng Object Explorer + INFORMATION_SCHEMA để hiểu database
- Data Dictionary tự động: Dùng INFORMATION_SCHEMA để generate tài liệu cấu trúc database
- Data quality check: Kiểm tra data types, nullable columns, missing constraints
3.1 Schemas — Phân nhóm chức năng
AdventureWorks dùng 5 schemas chính để tổ chức 71 tables:
| Schema | Ý nghĩa | Số tables | Dùng cho |
|---|---|---|---|
| HumanResources | Nhân sự | ~6 | Nhân viên, phòng ban, ca làm việc |
| Sales | Bán hàng | ~18 | Đơn hàng, khách hàng, vùng bán hàng |
| Production | Sản xuất | ~25 | Sản phẩm, danh mục, kho, đơn sản xuất |
| Purchasing | Mua hàng | ~5 | Nhà cung cấp, đơn mua hàng |
| Person | Thông tin cá nhân | ~13 | Họ tên, địa chỉ, email, SĐT |
3.2 Khám phá bằng Object Explorer
Trong SSMS, mở rộng:
Object Explorer — AdventureWorks2022
3.3 Khám phá bằng T-SQL
1-- Liệt kê tất cả schemas2SELECT DISTINCT TABLE_SCHEMA3FROM AdventureWorks2022.INFORMATION_SCHEMA.TABLES4ORDER BY TABLE_SCHEMA;56-- Liệt kê tables trong schema HumanResources7SELECT TABLE_NAME8FROM AdventureWorks2022.INFORMATION_SCHEMA.TABLES9WHERE TABLE_SCHEMA = 'HumanResources'10 AND TABLE_TYPE = 'BASE TABLE'11ORDER BY TABLE_NAME;1213-- Xem cấu trúc columns của table Employee14SELECT15 COLUMN_NAME AS [Column],16 DATA_TYPE AS [DataType],17 CHARACTER_MAXIMUM_LENGTH AS [MaxLength],18 IS_NULLABLE AS [Nullable]19FROM AdventureWorks2022.INFORMATION_SCHEMA.COLUMNS20WHERE TABLE_SCHEMA = 'HumanResources'21 AND TABLE_NAME = 'Employee'22ORDER BY ORDINAL_POSITION;Kết quả (trích):
| Column | DataType | MaxLength | Nullable |
|---|---|---|---|
| BusinessEntityID | int | NULL | NO |
| NationalIDNumber | nvarchar | 15 | NO |
| LoginID | nvarchar | 256 | NO |
| OrganizationNode | hierarchyid | 892 | YES |
| JobTitle | nvarchar | 50 | NO |
| BirthDate | date | NULL | NO |
| MaritalStatus | nchar | 1 | NO |
| Gender | nchar | 1 | NO |
| HireDate | date | NULL | NO |
| SalariedFlag | bit | NULL | NO |
| VacationHours | smallint | NULL | NO |
| SickLeaveHours | smallint | NULL | NO |
| CurrentFlag | bit | NULL | NO |
Nhớ bài Data Types? Hãy nhìn kết quả trên: nvarchar(50) cho tên (Unicode, tối đa 50 ký tự), date cho ngày sinh, bit cho cờ True/False, smallint cho số giờ phép. Chọn đúng data type cho đúng mục đích!
Checkpoint
Bạn đã xem được cấu trúc tables qua Object Explorer hoặc INFORMATION_SCHEMA chưa? Hãy thử xem columns của table Sales.SalesOrderHeader để xem đơn hàng có những thông tin gì.
📊 4. Data Dictionary — AdventureWorks chính
4.1 Tables quan trọng nhất (sẽ dùng xuyên suốt khóa học)
HumanResources.Employee — Nhân viên
| Column | Type | Ý nghĩa | Ghi chú |
|---|---|---|---|
| BusinessEntityID | INT | ID nhân viên | PK, FK → Person.Person |
| NationalIDNumber | NVARCHAR(15) | Số CMND | UNIQUE |
| LoginID | NVARCHAR(256) | Tên đăng nhập | |
| JobTitle | NVARCHAR(50) | Chức danh | VD: "Design Engineer" |
| BirthDate | DATE | Ngày sinh | |
| MaritalStatus | NCHAR(1) | Tình trạng hôn nhân | M=Married, S=Single |
| Gender | NCHAR(1) | Giới tính | M=Male, F=Female |
| HireDate | DATE | Ngày vào làm | |
| SalariedFlag | BIT | Loại lương | 1=cố định, 0=theo giờ |
| VacationHours | SMALLINT | Giờ phép năm | |
| SickLeaveHours | SMALLINT | Giờ phép ốm | |
| CurrentFlag | BIT | Còn làm việc | 1=đang làm, 0=đã nghỉ |
Sales.SalesOrderHeader — Đơn hàng
| Column | Type | Ý nghĩa | Ghi chú |
|---|---|---|---|
| SalesOrderID | INT | ID đơn hàng | PK |
| OrderDate | DATETIME | Ngày đặt hàng | |
| DueDate | DATETIME | Hạn giao | |
| ShipDate | DATETIME | Ngày giao thực tế | Có thể NULL |
| Status | TINYINT | Trạng thái | 1-6: In progress → Shipped |
| CustomerID | INT | Khách hàng | FK → Sales.Customer |
| SalesPersonID | INT | Nhân viên sales | FK → Sales.SalesPerson |
| TerritoryID | INT | Vùng bán hàng | FK → Sales.SalesTerritory |
| SubTotal | MONEY | Tổng trước thuế | |
| TaxAmt | MONEY | Thuế | |
| TotalDue | MONEY | Tổng phải trả | SubTotal + TaxAmt + Freight |
Production.Product — Sản phẩm
| Column | Type | Ý nghĩa | Ghi chú |
|---|---|---|---|
| ProductID | INT | ID sản phẩm | PK |
| Name | NVARCHAR(50) | Tên sản phẩm | |
| ProductNumber | NVARCHAR(25) | Mã sản phẩm | UNIQUE |
| Color | NVARCHAR(15) | Màu sắc | Có thể NULL |
| StandardCost | MONEY | Giá gốc | |
| ListPrice | MONEY | Giá bán | |
| Size | NVARCHAR(5) | Kích thước | S, M, L, XL |
| Weight | DECIMAL(8,2) | Cân nặng (kg) | |
| ProductSubcategoryID | INT | Phân loại | FK → Production.ProductSubcategory |
| SellStartDate | DATETIME | Ngày bắt đầu bán | |
| SellEndDate | DATETIME | Ngày ngừng bán | NULL = còn bán |
4.2 Relationships chính
Person & HR:
| Bảng gốc | Quan hệ | Bảng liên kết |
|---|---|---|
| Person.Person | 1:1 | HumanResources.Employee |
| Person.Person | 1:N | Person.EmailAddress |
| Person.Person | 1:N | Person.PersonPhone |
| Person.Person | 1:N | Person.BusinessEntityAddress |
Sales & Production:
| Bảng gốc | Quan hệ | Bảng liên kết | FK |
|---|---|---|---|
| Sales.Customer | 1:N | Sales.SalesOrderHeader | |
| SalesOrderHeader | 1:N | SalesOrderDetail | SalesPersonID, TerritoryID |
| SalesOrderDetail | N:1 | Production.Product | ProductID |
| Production.Product | N:1 | ProductSubcategory | SubcategoryID |
| Production.Product | N:1 | ProductModel | ModelID |
Khi viết query liên quan đến nhiều tables, hãy vẽ sơ đồ relationships trước. Ví dụ: "Lấy tên khách hàng + sản phẩm đã mua" → Customer → SalesOrderHeader → SalesOrderDetail → Product.
✍️ 5. Truy vấn SELECT đầu tiên
5.1 Định nghĩa
SELECT là câu lệnh T-SQL dùng để lấy dữ liệu từ database. Đây là câu lệnh bạn sẽ dùng nhiều nhất (>90% công việc DA).
💡 Ý nghĩa
SELECT là cửa ngõ duy nhất để truy xuất dữ liệu từ database. Khác với Excel (mở file → thấy data), dữ liệu trong SQL Server chỉ có thể xem thông qua SELECT. Đây là bước đầu tiên bạn thực hiện trong mọi task phân tích.
🏢 Ứng dụng
| Mục đích | Query mẫu |
|---|---|
| Xem dữ liệu | SELECT * FROM HumanResources.Department |
| Tính toán | SELECT VacationHours + SickLeaveHours AS TotalLeave FROM ... |
| Đổi tên cột | SELECT Name AS [Tên Phòng Ban] FROM ... |
5.2 Cú pháp cơ bản
1-- Lấy tất cả columns2SELECT *3FROM Schema.TableName;45-- Lấy columns cụ thể6SELECT Column1, Column2, Column37FROM Schema.TableName;5.3 Ví dụ thực hành
1-- Xem tất cả phòng ban2SELECT *3FROM HumanResources.Department;| DepartmentID | Name | GroupName | ModifiedDate |
|---|---|---|---|
| 1 | Engineering | Research and Development | 2008-04-30 |
| 2 | Tool Design | Research and Development | 2008-04-30 |
| 3 | Sales | Sales and Marketing | 2008-04-30 |
| 4 | Marketing | Sales and Marketing | 2008-04-30 |
| ... | ... | ... | ... |
1-- Chỉ lấy tên và nhóm2SELECT Name, GroupName3FROM HumanResources.Department;5.4 Column Alias — Đổi tên cột
Ý nghĩa: Alias giúp kết quả dễ đọc hơn, đặc biệt khi cột có tên dài hoặc khi tính toán.
1SELECT2 Name AS [Tên Phòng Ban],3 GroupName AS [Nhóm]4FROM HumanResources.Department;| Tên Phòng Ban | Nhóm |
|---|---|
| Engineering | Research and Development |
| Tool Design | Research and Development |
5.5 SELECT với biểu thức tính toán
1-- Tính giờ nghỉ tổng cộng2SELECT3 BusinessEntityID AS [Mã NV],4 JobTitle AS [Chức danh],5 VacationHours AS [Phép năm],6 SickLeaveHours AS [Phép ốm],7 VacationHours + SickLeaveHours AS [Tổng giờ nghỉ]8FROM HumanResources.Employee;| Mã NV | Chức danh | Phép năm | Phép ốm | Tổng giờ nghỉ |
|---|---|---|---|---|
| 1 | Chief Executive Officer | 99 | 69 | 168 |
| 2 | Vice President of Engineering | 1 | 20 | 21 |
| 3 | Engineering Manager | 2 | 21 | 23 |
SELECT * lấy tất cả columns — tiện khi khám phá dữ liệu, nhưng tránh dùng trong production vì: (1) Chậm hơn khi table có nhiều columns, (2) Khó đọc output, (3) Có thể lấy dữ liệu nhạy cảm. Best practice: Luôn liệt kê columns cụ thể.
Checkpoint
Bạn đã chạy thành công ít nhất 1 câu SELECT trên AdventureWorks chưa? Hãy thử: SELECT TOP 5 * FROM Production.Product; để xem 5 sản phẩm đầu tiên.
🏋️ 6. Thực hành khám phá
Hãy viết các câu SQL sau và chạy trên AdventureWorks:
Exercise 1: Khám phá bảng
1-- 1. Xem cấu trúc table Sales.SalesOrderHeader2-- Dùng INFORMATION_SCHEMA hoặc Object Explorer34-- 2. Đếm số lượng đơn hàng5SELECT COUNT(*) AS TotalOrders6FROM Sales.SalesOrderHeader;78-- 3. Đếm số nhân viên đang làm việc9SELECT COUNT(*) AS ActiveEmployees10FROM HumanResources.Employee11WHERE CurrentFlag = 1;Exercise 2: SELECT cơ bản
Viết query cho mỗi yêu cầu sau:
Câu 1: Lấy tên (Name), màu (Color), giá bán (ListPrice) của tất cả sản phẩm
💡 Xem đáp án
1SELECT2 Name AS [Tên sản phẩm],3 Color AS [Màu],4 ListPrice AS [Giá bán]5FROM Production.Product;Câu 2: Lấy 10 đơn hàng gần nhất (OrderDate, CustomerID, TotalDue)
💡 Xem đáp án
1SELECT TOP 102 SalesOrderID AS [Mã đơn hàng],3 OrderDate AS [Ngày đặt],4 CustomerID AS [Mã KH],5 TotalDue AS [Tổng tiền]6FROM Sales.SalesOrderHeader7ORDER BY OrderDate DESC;Câu 3: Tính profit margin (ListPrice - StandardCost) cho mỗi sản phẩm
💡 Xem đáp án
1SELECT2 Name AS [Sản phẩm],3 StandardCost AS [Giá gốc],4 ListPrice AS [Giá bán],5 ListPrice - StandardCost AS [Lợi nhuận],6 CASE7 WHEN ListPrice > 08 THEN ROUND((ListPrice - StandardCost) / ListPrice * 100, 1)9 ELSE 010 END AS [Margin %]11FROM Production.Product12WHERE ListPrice > 0;📋 7. Tổng kết & Tiếp theo
Checklist hoàn thành
| ✅ | Mục tiêu |
|---|---|
| ☐ | Cài đặt SQL Server Express 2022 |
| ☐ | Cài đặt SSMS |
| ☐ | Kết nối thành công từ SSMS |
| ☐ | Restore AdventureWorks2022 |
| ☐ | Duyệt schemas & tables trong Object Explorer |
| ☐ | Chạy query INFORMATION_SCHEMA |
| ☐ | Viết ít nhất 3 câu SELECT |
Lưu ý quan trọng
- Luôn chỉ định Schema khi truy cập table:
HumanResources.Employee, không chỉEmployee - Dùng Alias để kết quả dễ đọc
- Xem Data Dictionary trước khi viết query mới
- Tránh SELECT* trong thực tế, liệt kê columns cụ thể
Bài tiếp theo
Bài tiếp theo: SELECT, WHERE, ORDER BY — Bạn sẽ học cách lọc dữ liệu (WHERE), sắp xếp (ORDER BY), loại trùng (DISTINCT), và các operators: LIKE, IN, BETWEEN, IS NULL.
Câu hỏi tự kiểm tra
- Khi kết nối SSMS với SQL Server Express, Server Name cần nhập như thế nào? Authentication Type nào được dùng?
- Tại sao nên luôn chỉ định Schema khi truy cập table (ví dụ:
HumanResources.Employeethay vì chỉEmployee)? - Database AdventureWorks có những schema chính nào? Mỗi schema chứa loại dữ liệu gì?
INFORMATION_SCHEMA.TABLESvàINFORMATION_SCHEMA.COLUMNScung cấp thông tin gì? Khi nào bạn cần dùng chúng?
🎉 Tuyệt vời! Bạn đã hoàn thành bài học Cài đặt SQL Server & Khám phá AdventureWorks!
Tiếp theo: Bạn sẽ viết những câu truy vấn SELECT đầu tiên với WHERE, ORDER BY và các operators quan trọng.
