MinAI - Về trang chủ
Thực hành
2/131.5 giờ
Đang tải...

Cài đặt SQL Server & Khám phá AdventureWorks

Hướng dẫn cài đặt SQL Server Express, SSMS, restore AdventureWorks và khám phá cấu trúc database thực tế

0

🎯 Mục tiêu bài học

TB5 min

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"

1

📖 Bảng Thuật Ngữ Quan Trọng

TB5 min
Thuật ngữTiếng ViệtMô tả
SQL Server ExpressPhiên bản miễn phíSQL Server giới hạn 10GB, đủ để học
SSMSSQL Server Management StudioCông cụ GUI chính để viết và chạy SQL
T-SQLTransact-SQLNgôn ngữ SQL mở rộng của Microsoft
Backup (.bak)File sao lưuFile chứa toàn bộ database để restore
RestorePhục hồiKhôi phục database từ file backup
Object ExplorerDuyệt đối tượngPanel bên trái SSMS, hiển thị cấu trúc database
Query EditorTrình soạn truy vấnVùng viết và chạy SQL trong SSMS
Result GridKết quả dạng bảngVù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?

2

💻 1. Cài đặt SQL Server Express 2022

TB5 min

📚 Đị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 ExpressChạy database trên máy cá nhân để thực hành
SSMSViết queries, duyệt tables, xem ERD, quản lý database
T-SQLTruy 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?

EditionGiáGiới hạnPhù 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ăngDevelopment/Testing
Standard$$$Enterprise featuresDoanh nghiệp vừa
Enterprise$$$$$Không giới hạnDoanh 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

  1. Mở file SQL2022-SSEI-Expr.exe vừa tải
  2. Chọn Basic (cài đặt nhanh, cấu hình mặc định)
  3. Chấp nhận License Terms → Click Install
  4. Đợ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ị:

Ví dụ
1Instance Name: SQLEXPRESS
2Connection String: Server=localhost\SQLEXPRESS;...
Ghi nhớ Instance Name!

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:

  1. Truy cập: https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms
  2. Click Download SSMS
  3. Chạy file installer → Next → Install
  4. 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:

FieldGiá trị
Server typeDatabase Engine
Server namelocalhost\SQLEXPRESS
AuthenticationWindows 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).

3

📦 2. Restore AdventureWorks Database

TB5 min

📚 Đị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ểmChi tiết
Lĩnh vựcSản xuất, bán hàng xe đạp
Bộ phậnHR, 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ểmDữ 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:

https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks2022.bak

2.3 Restore bằng SSMS (GUI) — Cách dễ nhất

  1. Mở SSMS, kết nối SQL Server
  2. Trong Object Explorer, right-click "Databases" → Restore Database...
  3. Chọn Device → Click ... (Browse)
  4. Click Add → Tìm đến file AdventureWorks2022.bak đã download
  5. Click OKOK → Đợi restore hoàn tất

2.4 Restore bằng T-SQL

SQL
1-- Kiểm tra nội dung file backup
2RESTORE FILELISTONLY
3FROM DISK = N'C:\Downloads\AdventureWorks2022.bak';
4
5-- Restore database
6-- Thay đổi đường dẫn cho phù hợp máy bạn
7RESTORE DATABASE AdventureWorks2022
8FROM DISK = N'C:\Downloads\AdventureWorks2022.bak'
9WITH
10 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;
Lỗi thường gặp

"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

SQL
1-- Kiểm tra database đã restore
2SELECT name, state_desc, create_date
3FROM sys.databases
4WHERE name = 'AdventureWorks2022';
5
6-- Đếm số tables
7SELECT COUNT(*) AS TotalTables
8FROM AdventureWorks2022.INFORMATION_SCHEMA.TABLES
9WHERE TABLE_TYPE = 'BASE TABLE';
10-- Kết quả: khoảng 71 tables

Checkpoint

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).

4

🗺️ 3. Khám phá cấu trúc AdventureWorks

TB5 min

📚 Đị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ĩaSố tablesDùng cho
HumanResourcesNhân sự~6Nhân viên, phòng ban, ca làm việc
SalesBán hàng~18Đơn hàng, khách hàng, vùng bán hàng
ProductionSản xuất~25Sản phẩm, danh mục, kho, đơn sản xuất
PurchasingMua hàng~5Nhà cung cấp, đơn mua hàng
PersonThông tin cá nhân~13Họ tên, địa chỉ, email, SĐT

3.2 Khám phá bằng Object Explorer

Trong SSMS, mở rộng:

Object Explorer — AdventureWorks2022

📂AdventureWorks2022
📂Tables → HumanResources.Department
📂Columns: DepartmentID (int, PK) | Name (nvarchar) | GroupName (nvarchar) | ModifiedDate (datetime)
📂Keys: PK_Department_DepartmentID (Primary Key)
📂Constraints
📂Indexes

3.3 Khám phá bằng T-SQL

SQL
1-- Liệt kê tất cả schemas
2SELECT DISTINCT TABLE_SCHEMA
3FROM AdventureWorks2022.INFORMATION_SCHEMA.TABLES
4ORDER BY TABLE_SCHEMA;
5
6-- Liệt kê tables trong schema HumanResources
7SELECT TABLE_NAME
8FROM AdventureWorks2022.INFORMATION_SCHEMA.TABLES
9WHERE TABLE_SCHEMA = 'HumanResources'
10 AND TABLE_TYPE = 'BASE TABLE'
11ORDER BY TABLE_NAME;
12
13-- Xem cấu trúc columns của table Employee
14SELECT
15 COLUMN_NAME AS [Column],
16 DATA_TYPE AS [DataType],
17 CHARACTER_MAXIMUM_LENGTH AS [MaxLength],
18 IS_NULLABLE AS [Nullable]
19FROM AdventureWorks2022.INFORMATION_SCHEMA.COLUMNS
20WHERE TABLE_SCHEMA = 'HumanResources'
21 AND TABLE_NAME = 'Employee'
22ORDER BY ORDINAL_POSITION;

Kết quả (trích):

ColumnDataTypeMaxLengthNullable
BusinessEntityIDintNULLNO
NationalIDNumbernvarchar15NO
LoginIDnvarchar256NO
OrganizationNodehierarchyid892YES
JobTitlenvarchar50NO
BirthDatedateNULLNO
MaritalStatusnchar1NO
Gendernchar1NO
HireDatedateNULLNO
SalariedFlagbitNULLNO
VacationHourssmallintNULLNO
SickLeaveHourssmallintNULLNO
CurrentFlagbitNULLNO
Áp dụng bài 1!

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ì.

5

📊 4. Data Dictionary — AdventureWorks chính

TB5 min

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

ColumnTypeÝ nghĩaGhi chú
BusinessEntityIDINTID nhân viênPK, FK → Person.Person
NationalIDNumberNVARCHAR(15)Số CMNDUNIQUE
LoginIDNVARCHAR(256)Tên đăng nhập
JobTitleNVARCHAR(50)Chức danhVD: "Design Engineer"
BirthDateDATENgày sinh
MaritalStatusNCHAR(1)Tình trạng hôn nhânM=Married, S=Single
GenderNCHAR(1)Giới tínhM=Male, F=Female
HireDateDATENgày vào làm
SalariedFlagBITLoại lương1=cố định, 0=theo giờ
VacationHoursSMALLINTGiờ phép năm
SickLeaveHoursSMALLINTGiờ phép ốm
CurrentFlagBITCòn làm việc1=đang làm, 0=đã nghỉ

Sales.SalesOrderHeader — Đơn hàng

ColumnTypeÝ nghĩaGhi chú
SalesOrderIDINTID đơn hàngPK
OrderDateDATETIMENgày đặt hàng
DueDateDATETIMEHạn giao
ShipDateDATETIMENgày giao thực tếCó thể NULL
StatusTINYINTTrạng thái1-6: In progress → Shipped
CustomerIDINTKhách hàngFK → Sales.Customer
SalesPersonIDINTNhân viên salesFK → Sales.SalesPerson
TerritoryIDINTVùng bán hàngFK → Sales.SalesTerritory
SubTotalMONEYTổng trước thuế
TaxAmtMONEYThuế
TotalDueMONEYTổng phải trảSubTotal + TaxAmt + Freight

Production.Product — Sản phẩm

ColumnTypeÝ nghĩaGhi chú
ProductIDINTID sản phẩmPK
NameNVARCHAR(50)Tên sản phẩm
ProductNumberNVARCHAR(25)Mã sản phẩmUNIQUE
ColorNVARCHAR(15)Màu sắcCó thể NULL
StandardCostMONEYGiá gốc
ListPriceMONEYGiá bán
SizeNVARCHAR(5)Kích thướcS, M, L, XL
WeightDECIMAL(8,2)Cân nặng (kg)
ProductSubcategoryIDINTPhân loạiFK → Production.ProductSubcategory
SellStartDateDATETIMENgày bắt đầu bán
SellEndDateDATETIMENgày ngừng bánNULL = còn bán

4.2 Relationships chính

🔗 Relationships chính trong AdventureWorks

Person & HR:

Bảng gốcQuan hệBảng liên kết
Person.Person1:1HumanResources.Employee
Person.Person1:NPerson.EmailAddress
Person.Person1:NPerson.PersonPhone
Person.Person1:NPerson.BusinessEntityAddress

Sales & Production:

Bảng gốcQuan hệBảng liên kếtFK
Sales.Customer1:NSales.SalesOrderHeader
SalesOrderHeader1:NSalesOrderDetailSalesPersonID, TerritoryID
SalesOrderDetailN:1Production.ProductProductID
Production.ProductN:1ProductSubcategorySubcategoryID
Production.ProductN:1ProductModelModelID
Mẹo thực hành

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.

6

✍️ 5. Truy vấn SELECT đầu tiên

TB5 min

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 đíchQuery mẫu
Xem dữ liệuSELECT * FROM HumanResources.Department
Tính toánSELECT VacationHours + SickLeaveHours AS TotalLeave FROM ...
Đổi tên cộtSELECT Name AS [Tên Phòng Ban] FROM ...

5.2 Cú pháp cơ bản

SQL
1-- Lấy tất cả columns
2SELECT *
3FROM Schema.TableName;
4
5-- Lấy columns cụ thể
6SELECT Column1, Column2, Column3
7FROM Schema.TableName;

5.3 Ví dụ thực hành

SQL
1-- Xem tất cả phòng ban
2SELECT *
3FROM HumanResources.Department;
DepartmentIDNameGroupNameModifiedDate
1EngineeringResearch and Development2008-04-30
2Tool DesignResearch and Development2008-04-30
3SalesSales and Marketing2008-04-30
4MarketingSales and Marketing2008-04-30
............
SQL
1-- Chỉ lấy tên và nhóm
2SELECT Name, GroupName
3FROM 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.

SQL
1SELECT
2 Name AS [Tên Phòng Ban],
3 GroupName AS [Nhóm]
4FROM HumanResources.Department;
Tên Phòng BanNhóm
EngineeringResearch and Development
Tool DesignResearch and Development

5.5 SELECT với biểu thức tính toán

SQL
1-- Tính giờ nghỉ tổng cộng
2SELECT
3 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ã NVChức danhPhép nămPhép ốmTổng giờ nghỉ
1Chief Executive Officer9969168
2Vice President of Engineering12021
3Engineering Manager22123
SELECT * — Nên hay không?

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.

7

🏋️ 6. Thực hành khám phá

TB5 min

Hãy viết các câu SQL sau và chạy trên AdventureWorks:

Exercise 1: Khám phá bảng

SQL
1-- 1. Xem cấu trúc table Sales.SalesOrderHeader
2-- Dùng INFORMATION_SCHEMA hoặc Object Explorer
3
4-- 2. Đếm số lượng đơn hàng
5SELECT COUNT(*) AS TotalOrders
6FROM Sales.SalesOrderHeader;
7
8-- 3. Đếm số nhân viên đang làm việc
9SELECT COUNT(*) AS ActiveEmployees
10FROM HumanResources.Employee
11WHERE 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
SQL
1SELECT
2 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
SQL
1SELECT TOP 10
2 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.SalesOrderHeader
7ORDER BY OrderDate DESC;

Câu 3: Tính profit margin (ListPrice - StandardCost) cho mỗi sản phẩm

💡 Xem đáp án
SQL
1SELECT
2 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 CASE
7 WHEN ListPrice > 0
8 THEN ROUND((ListPrice - StandardCost) / ListPrice * 100, 1)
9 ELSE 0
10 END AS [Margin %]
11FROM Production.Product
12WHERE ListPrice > 0;
8

📋 7. Tổng kết & Tiếp theo

TB5 min

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

  1. 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?
  2. Tại sao nên luôn chỉ định Schema khi truy cập table (ví dụ: HumanResources.Employee thay vì chỉ Employee)?
  3. Database AdventureWorks có những schema chính nào? Mỗi schema chứa loại dữ liệu gì?
  4. INFORMATION_SCHEMA.TABLESINFORMATION_SCHEMA.COLUMNS cung 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.