Giáo Trình Ngôn Ngữ SQL: Từ Cơ Bản Đến Nâng Cao

Tìm hiểu về file goc 770619, cách sử dụng và ứng dụng trong các lĩnh vực khác nhau. Cung cấp thông tin chi tiết và hướng dẫn cần thiết.

Chuyên ngành

Ngôn Ngữ SQL

Người đăng

Ẩn danh

Thể loại

Giáo Trình

2005

177
7
0

Phí lưu trữ

45 Point

Mục lục chi tiết

LỜI MỞ ĐẦU

1. CHƯƠNG 1: SQL CƠ BẢN

1.1. CÁC TRUY VẤN ĐƠN GIẢN TRONG SQL

1.1.1. Phép chiếu trong SQL

1.1.2. Phép chọn trong SQL

1.1.3. So sánh các xâu

1.1.4. Ngày tháng và thời gian

1.1.5. Các giá trị NULL và các so sánh bao hàm NULL

1.1.6. Giá trị lôgic UNKNOWN

1.1.7. Sắp thứ tự dữ liệu ra

1.1.8. Các hàm thông dụng trong SQL

1.2. CÁC TRUY VẤN BAO GỒM NHIỀU HƠN MỘT QUAN HỆ

1.2.1. Tích và nối trong SQL

1.2.2. Làm rõ nghĩa các thuộc tính

1.2.3. Phép hợp, phép giao, phép trừ của các truy vấn

1.3. CÁC TRUY VẤN CON

1.3.1. Các truy vấn con tạo ra các giá trị vô hướng

1.3.2. Các điều kiện có bao hàm các quan hệ

1.3.3. Các điều kiện có bao hàm các bộ

1.3.4. Các truy vấn con tương quan với nhau

1.3.5. Các truy vấn con trong mệnh đề FROM

1.3.6. Các biểu thức nối của SQL

1.3.7. Nối tự nhiên (Natural Join)

1.4. CÁC PHÉP TOÁN QUAN HỆ ĐẦY ĐỦ

1.4.1. Loại bỏ trùng lặp

1.4.2. Trùng lặp trong phép hợp, phép giao và phép trừ

1.4.3. Nhóm và sự kết hợp trong SQL

1.4.4. Các phép toán nhóm

1.5. SỬA ĐỔI CƠ SỞ DỮ LIỆU

1.6. ĐỊNH NGHĨA MỘT LƯỢC ĐỒ QUAN HỆ TRONG SQL

1.6.1. Các kiểu dữ liệu

1.6.2. Các khai báo bảng đơn giản

1.6.3. Các giá trị ngầm định

1.6.4. Nhập môn về việc lựa chọn các chỉ số

1.6.5. Khai báo các khung nhìn

1.6.6. Truy vấn các khung nhìn

1.6.7. Đặt tên lại các thuộc tính

1.6.8. Sửa đổi các khung nhìn

1.6.9. Giải thích các truy vấn có chứa các khung nhìn

1.7. TỔNG KẾT CHƯƠNG I

1.8. MỘT SỐ BÀI TẬP

2. CHƯƠNG II: CÁC RÀNG BUỘC VÀ CÁC TRIGGER

2.1. KHÓA VÀ KHÓA NGOÀI

2.1.1. Mô tả khoá chính

2.1.2. Các khoá được mô tả với UNIQUE

2.1.3. Làm có hiệu lực các ràng buộc khoá

2.1.4. Mô tả các ràng buộc khoá ngoài

2.1.5. Duy trì toàn vẹn tham chiếu

2.1.6. Làm chậm việc kiểm tra ràng buộc

2.2. CÁC RÀNG BUỘC TRÊN CÁC THUỘC TÍNH VÀ CÁC BỘ

2.2.1. Các ràng buộc Not-Null

2.2.2. Các ràng buộc kiểm tra (CHECK) dựa trên thuộc tính

2.2.3. Các ràng buộc kiểm tra (CHECK) dựa trên bộ giá trị

2.3. SỬA ĐỔI CÁC RÀNG BUỘC

2.3.1. Đặt tên cho các ràng buộc

2.3.2. Sửa đổi các ràng buộc trên các bảng

2.4. CÁC RÀNG BUỘC MỨC LƯỢC ĐỒ VÀ CÁC TRIGGER

2.5. TỔNG KẾT CHƯƠNG II

2.6. MỘT SỐ BÀI TẬP

3. CHƯƠNG III: LẬP TRÌNH

3.1. SQL TRONG MÔI TRƯỜNG LẬP TRÌNH

3.1.1. Vấn đề trở ngại không phù hợp

3.1.2. Giao diện ngôn ngữ chủ /SQL

3.1.3. Sử dụng các biến dùng chung

3.1.4. Các câu lệnh Select đơn hàng

3.1.5. Cập nhật bằng con trỏ

3.1.6. Bảo vệ khỏi sự cập nhật đồng thời

3.1.7. Con trỏ cuộn (Scrolling Cursor)

3.2. CÁC THỦ TỤC ĐƯỢC LƯU GIỮ (stored procedure)

3.2.1. Tạo các hàm và các thủ tục PSM

3.2.2. Một vài dạng câu lệnh đơn giản trong PSM

3.2.3. Các câu lệnh rẽ nhánh

3.2.4. Các truy vấn trong PSM

3.2.5. Vòng lặp trong PSM

3.2.6. Vòng lặp for

3.2.7. Những câu lệnh lặp khác

3.3. MÔI TRƯỜNG SQL

3.3.1. Môi trường

3.3.2. Client và Server trong môi trường SQL

3.4. SỬ DỤNG GIAO DIỆN MỨC GỌI (call-level interface)

3.4.1. Nhập môn SQL/CLI

3.4.2. Lấy dữ liệu ra từ kết quả truy vấn

3.5. GIAO TÁC TRONG SQL

3.5.1. Xếp hàng theo thứ tự

3.5.2. Read-Only Transaction

3.5.3. Các mức cô lập khác

3.6. AN TOÀN VÀ CẤP QUYỀN TRONG SQL

3.6.1. Tiến trình kiểm tra đặc quyền

3.6.2. Hủy bỏ các quyền

3.7. TỔNG KẾT CHƯƠNG III

Tóm tắt

I. Tổng quan về Giáo Trình Ngôn Ngữ SQL Hướng Dẫn Cơ Bản

Giáo trình Ngôn ngữ SQL cung cấp kiến thức cơ bản và nâng cao về cách sử dụng SQL trong quản lý cơ sở dữ liệu. SQL, viết tắt của Structured Query Language, là ngôn ngữ tiêu chuẩn để truy vấn và thao tác dữ liệu trong các hệ quản trị cơ sở dữ liệu. Giáo trình này được biên soạn nhằm giúp người học nắm vững các khái niệm và lệnh cơ bản trong SQL, từ đó có thể áp dụng vào thực tiễn.

1.1. Ngôn ngữ SQL là gì và tại sao quan trọng

Ngôn ngữ SQL là công cụ chính để tương tác với cơ sở dữ liệu. Nó cho phép người dùng thực hiện các truy vấn, cập nhật và quản lý dữ liệu một cách hiệu quả. Việc hiểu rõ về SQL là cần thiết cho bất kỳ ai làm việc trong lĩnh vực công nghệ thông tin.

1.2. Các phiên bản của SQL và sự phát triển của nó

SQL đã trải qua nhiều phiên bản khác nhau, từ ANSI SQL đến SQL-99. Mỗi phiên bản đều mang lại những cải tiến và tính năng mới, giúp người dùng dễ dàng hơn trong việc quản lý dữ liệu.

II. Những thách thức khi học Ngôn Ngữ SQL Giải pháp hiệu quả

Học ngôn ngữ SQL có thể gặp nhiều khó khăn, đặc biệt là đối với những người mới bắt đầu. Các vấn đề thường gặp bao gồm việc hiểu các lệnh cơ bản, cách sử dụng các hàm và thao tác với dữ liệu. Tuy nhiên, với sự hướng dẫn đúng đắn, người học có thể vượt qua những thách thức này.

2.1. Khó khăn trong việc hiểu các lệnh SQL cơ bản

Nhiều người học gặp khó khăn trong việc nắm bắt cú pháp và cách sử dụng các lệnh SQL cơ bản như SELECT, INSERT, UPDATE và DELETE. Việc thực hành thường xuyên và tham gia các khóa học trực tuyến có thể giúp cải thiện kỹ năng.

2.2. Thách thức trong việc quản lý cơ sở dữ liệu lớn

Quản lý cơ sở dữ liệu lớn đòi hỏi người dùng phải có kiến thức vững về các ràng buộc và chỉ mục. Việc áp dụng các phương pháp tối ưu hóa truy vấn sẽ giúp cải thiện hiệu suất làm việc với dữ liệu lớn.

III. Phương pháp học Ngôn Ngữ SQL hiệu quả Hướng dẫn chi tiết

Để học ngôn ngữ SQL một cách hiệu quả, người học cần có một phương pháp học tập rõ ràng. Việc kết hợp lý thuyết và thực hành sẽ giúp củng cố kiến thức và kỹ năng sử dụng SQL.

3.1. Học lý thuyết qua tài liệu và giáo trình

Đọc tài liệu và giáo trình là bước đầu tiên quan trọng trong việc học SQL. Các tài liệu này cung cấp kiến thức nền tảng về ngôn ngữ SQL và các lệnh cơ bản.

3.2. Thực hành qua các bài tập và dự án thực tế

Thực hành là cách tốt nhất để nắm vững SQL. Tham gia vào các dự án thực tế hoặc làm bài tập sẽ giúp người học áp dụng lý thuyết vào thực tiễn.

IV. Ứng dụng thực tiễn của Ngôn Ngữ SQL trong doanh nghiệp

Ngôn ngữ SQL được sử dụng rộng rãi trong các doanh nghiệp để quản lý và phân tích dữ liệu. Việc sử dụng SQL giúp doanh nghiệp tối ưu hóa quy trình làm việc và ra quyết định dựa trên dữ liệu.

4.1. Quản lý cơ sở dữ liệu khách hàng

Doanh nghiệp sử dụng SQL để quản lý thông tin khách hàng, từ đó cải thiện dịch vụ và tăng cường mối quan hệ với khách hàng.

4.2. Phân tích dữ liệu để ra quyết định

SQL cho phép doanh nghiệp phân tích dữ liệu một cách nhanh chóng và hiệu quả, giúp đưa ra các quyết định kinh doanh chính xác hơn.

V. Kết luận Tương lai của Ngôn Ngữ SQL trong công nghệ thông tin

Ngôn ngữ SQL vẫn giữ vai trò quan trọng trong lĩnh vực công nghệ thông tin. Với sự phát triển của các công nghệ mới, SQL sẽ tiếp tục được cải tiến và mở rộng để đáp ứng nhu cầu ngày càng cao của người dùng.

5.1. Xu hướng phát triển của SQL trong tương lai

SQL sẽ tiếp tục phát triển với các tính năng mới, giúp người dùng dễ dàng hơn trong việc quản lý và phân tích dữ liệu.

5.2. Tầm quan trọng của việc cập nhật kiến thức về SQL

Người làm trong lĩnh vực công nghệ thông tin cần thường xuyên cập nhật kiến thức về SQL để không bị lạc hậu và có thể áp dụng các công nghệ mới vào công việc.

15/07/2025

Trích đoạn nội dung tài liệu

CHƯƠNG I: SQL CƠ BẢN Giống như các ngôn ngữ bậc cao khác, ngôn ngữ SQL được xây dựng dựa trên các chữ cái, các chữ số, các ký tự (dấu phép toán, dấu ngăn, dấu cách và các ký tự đặc biệt) và một tập các từ khóa. Một lệnh của SQL có thể được viết trên một dòng hoặc nhiều dòng, kết thúc bằng dấu chấm phảy “;”. Ngôn ngữ SQL được chia thành ba nhóm: - Ngôn ngữ định nghĩa dữ liệu dùng để mô tả cấu trúc của cơ sở dữ liệu (các bảng, các khung nhìn, các thuộc tính, các chỉ mục, .) - Ngôn ngữ thao tác dữ liệu cho phép thực hiện các thao tác trên cơ sở dữ liệu như cập nhật cơ sở dữ liệu và truy vấn lấy ra các thông tin từ cơ sở dữ liệu. - Ngôn ngữ kiểm soát dữ liệu bao gồm các lệnh dùng để quản lý các giao tác, các quyền truy cập dữ liệu, kết nối với server.

Ngôn ngữ SQL có thể sử dụng theo hai kiểu: kiểu trực tiếp và lập trình. SQL trực tiếp cho phép thực hiện một truy vấn và nhận được kết quả ngay tức khắc. SQL lập trình cho phép sử dụng SQL trong một chương trình viết bằng ngôn ngữ ngôn ngữ lập trình bậc cao khác (C, Pascal,.), hoặc viết các chương trình con. Trong chương này chúng ta sẽ làm quen với các lệnh cơ bản của SQL.

Các lệnh này được minh họa dựa trên một cơ sở dữ liệu “CÔNGTY” cho ở phần PHỤLỤC của giáo trình.1 CÁC TRUY VẤN ĐƠN GIẢN TRONG SQL. Giả sử chúng ta muốn đưa ra các nhân viên của đơn vị có MãsốĐV = 5, chúng ta viết trong SQL như sau SELECT * FROM NHÂNVIÊN WHERE MãsốĐV = 5 ; Truy vấn này trình bày dạng đặc trưng select-from-where của hầu hết các truy vấn SQL. • Mệnh đề FROM cho quan hệ hoặc các quan hệ mà truy vấn tham chiếu đến. Trong ví dụ trên, quan hệ đó là NHÂNVIÊN.

8 • Mệnh đề WHERE là một điều kiện, giống như điều kiện chọn trong đại số quan hệ. Các bộ phải thoả mãn điều kiện chọn để phù hợp với truy vấn. Điều kiện ở đây là thuộc tính MãsốĐV của bộ phải có giá trị 5. Tất cả các bộ đáp ứng điều kiện đó sẽ thoả mãn điều kiện chọn.

• Mệnh đề SELECT nói các thuộc tính nào của các bộ đáp ứng điều kiện sẽ được đưa ra như một phần của câu trả lời. Dấu * trong ví dụ này chỉ ra rằng tất cả các thuộc tính của bộ sẽ được đưa ra. Kết quả của truy vấn là một quan hệ chứa tất cả các bộ do tiến trình này sản xuất ra. Một cách giải thích truy vấn này là xem xét từng bộ giá trị của quan hệ được kể ra trong mệnh đề FROM.

Điều kiện trong mệnh đề WHERE được áp dụng cho bộ. Chính xác hơn, các thuộc tính được kể ra trong mệnh đề WHERE được thay thế bằng các giá trị của thuộc tính đó ở trong bộ. Sau đó, điều kiện được tính, và nếu đúng thì các thành phần xuất hiện trong mệnh đề SELECT được sản xuất ra như là một bộ của câu trả lời.1 Phép chiếu trong SQL a) Chúng ta có thể chiếu một quan hệ do một truy vấn SQL sản xuất ra lên trên một số thuộc tính của nó. Để làm điều đó, ở vị trí của dấu * trong mệnh đề SELECT ta liệt kê ra một số thuộc tính của quan hệ được chỉ ra trong mệnh đề FROM.

Kết quả sẽ được chiếu lên các thuộc tính được liệt kê. Ví dụ 1: Đưa ra Họđệm và Tên của các nhân viên ở đơn vị có mã số bằng 5. Chúng ta có thể viết: SELECT Họđệm, Tên FROM NHÂNVIÊN WHERE MãsốĐV =5; Kết quả là một bảng có hai cột, có tên là Họđệm và Tên. Các bộ của bảng này là các cặp, mỗi cặp gồm Họđệm và Tên của nhân viên, đó là các nhân viên của đơn vị có mã số bằng 5.

Bảng kết quả có dạng như sau: Họđệm Tên Lê Vân 9 Trần Đức Nam Nguyễn Sơn Vũ Hương Giang b) Đôi khi chúng ta muốn tạo ra một quan hệ với đầu cột khác với các thuộc tính của quan hệ được kể ra trong mệnh đề FROM. Chúng ta có thể viết sau tên của thuộc tính một từ khoá AS và một bí danh (alias), bí danh đó sẽ trở thành đầu cột của quan hệ kết quả. Từ khoá AS là tuỳ chọn, nghĩa là có thể viết bí danh đi ngay sau tên thuộc tính mà không cần phải có từ khoá AS. Ví dụ 2: Ta có thể sửa đổi ví dụ 1 ở trên để đưa ra một quan hệ có các thuộc tính Họnhânviên và Tênnhânviên thay cho vị trí của Họđệm và Tên như sau: SELECT Họđệm AS Họnhânviên, Tên AS Tênnhânviên FROM NHÂNVIÊN WHERE MãsốĐV = 5 ; Bảng kết quả có dạng như sau: Họnhânviên Tên nhânviên Lê Vân Trần Đức Nam Nguyễn Sơn Vũ Hương Giang c) Một tuỳ chọn khác trong mệnh đề SELECT sử dụng một biểu thức ở vị trí của một thuộc tính.

Ví dụ 3: Chúng ta muốn đưa ra Họđệm, Tên và lương sau khi đã được tăng 10% của các nhân viên ở đơn vị có mã số bằng 5. Ta viết: SELECT Họđệm, Tên, Lương*1.1 AS Lươngmới FROM NHÂNVIÊN WHERE MãsốĐV =5; Kết quả Họđệm Tên Lươngmới Lê Vân 3300 10 Trần Đức Nam 4400 Nguyễn Sơn 4180 Vũ Hương Giang 2750 d) Chúng ta cũng có thể cho phép một hằng như là một biểu thức trong mệnh đề SELECT. Ví dụ 4: Ta muốn đưa thêm từ ‘ngàn đồng’ vào sau giá trị của lương, ta viết: SELECT Họđệm, Tên, Lương*1.1 AS Lươngmới, ‘ngàn đồng’ AS Đơnvịtính FROM NHÂNVIÊN WHERE MãsốĐV =5; Kết quả Họđệm Tên Lươngmới Đơnvịtính Lê Vân 3300 ngàn đồng Trần Đức Nam 4400 ngàn đồng Nguyễn Sơn 4180 ngàn đồng Vũ Hương Giang 2750 ngàn đồng Chúng ta đã sắp xếp một cột có tên là Đơnvịtính và mỗi bộ trong câu trả lời sẽ có hằng ‘ngàn đồng’ ở cột thứ tư.2 Phép chọn trong SQL Phép toán chọn của đại số quan hệ và nhiều thứ nữa sẵn có trong mệnh đề WHERE của SQL. Các biểu thức đi sau WHERE bao gồm các biểu thức điều kiện giống như các biểu thức điều kiện trong các ngôn ngữ lập trình.

Chúng ta có thể xây dựng các điều kiện bằng cách so sánh các giá trị sử dụng sáu phép toán so sánh =, <>, <, >, <=, >=. Các giá trị có thể được so sánh bao gồm các hằng và các thuộc tính của các quan hệ được kể ra sau FROM. Chúng ta cũng có thể áp dụng các phép toán số học thông thường như +, -, *, / đối với các giá trị số trước khi chúng ta so sánh chúng và áp dụng phép nối || đối với các xâu. Một ví dụ về phép so sánh là MãsốĐV = 5 Ở trong các ví dụ ở trên.

Thuộc tính MãsốĐV được kiểm tra xem có bằng hằng 5 hay không. Hằng này là một giá trị số. Các hằng số, như các số nguyên và số thực được sử dụng và được ghi như cách thông thường trong các ngôn ngữ lập trình. Ngoài các hằng số còn có các hằng xâu.

Các xâu 11 trong SQL được ghi bằng cách đặt chúng và trong cặp dấu nháy đơn, ví dụ, ‘Hà nội’. Kết quả của một phép so sánh là một giá trị lô gic TRUE hoặc FALSE. Các giá trị lô gic có thể được kết hợp bằng các phép toán logic AND, OR, NOT với các ý nghĩa của chúng. Ví dụ 5: Truy vấn sau đây hỏi về Họđệm, Tên và Giớitính của các nhân viên ở đơn vị có mã số bằng 5 và Giớitính = ‘Nam’ SELECT Họđệm, Tên, Giớitính FROM NHÂNVIÊN WHERE (MãsốĐV =5) AND (Giớitính = ‘Nam’); Kết quả Họđệm Tên Giớitính Lê Vân Nam Trần Đức Nam Nam Nguyễn Sơn Nam Trong điều kiện này, chúng ta có AND của hai giá trị logic.

Các giá trị đó là các phép so sánh bình thường. Tiếp theo, ta xét ví dụ sau: SELECT Họđệm, Tên FROM NHÂNVIÊN WHERE (MãsốĐV =5) AND (Giớitính = ‘Nữ’ OR Lương <= 3000); Họđệm Tên Lê Vân Vũ Hương Giang Truy vấn này đòi hỏi các nhân viên hoặc là nữ hoặc có lương nhỏ hơn hoặc bằng 3000. Chú ý rằng các phép so sánh có thể nhóm lại bằng việc sử dụng các dấu ngoặc đơn. Các dấu ngoặc là cần thiết bởi vì thứ tự ưu tiên của các phép toán lô gic trong SQL là giống như trong các ngôn ngữ lập trình, AND có thứ tự cao hơn OR, NOT có thứ tự cao hơn cả AND và OR.3 So sánh các xâu Hai xâu là bằng nhau nếu chúng là cùng một dãy ký tự.

SQL cho phép các mô tả các kiểu xâu khác nhau, ví dụ, các mảng ký tự có độ dài cố định và các danh sách ký tự có độ dài thay đổi. Khi chúng ta so sánh các xâu bằng một trong các phép toán “nhỏ hơn” như là < hoặc >=, chúng ta đang hỏi xem có phải xâu này đi trước xâu kia trong thứ tự từ điển. Như vậy, nếu a1a2…an và b1b2…bm là hai xâu, thì xâu thứ nhất là “nhỏ hơn” xâu thứ hai nếu hoặc a1 < b1, hoặc nếu a1 = b1 và a2 < b2, hoặc a1 = b1, a2 = b2 và a3 < b3 …Ta cũng nói rằng a1a2…an < b1b2…bm nếu n<m và a1a2…an = b1b2…bn, nghĩa là xâu thứ nhất là một tiền tố đúng của xâu thứ hai. Ví dụ ‘na’ < ‘nam’.

SQL cũng cung cấp khả năng để so sánh các xâu trên cơ sở một mẫu đối chiếu đơn giản. Một dạng lựa chon của biểu thức logic là s LIKE p trong đó s là một xâu và p là một mẫu đối chiếu. Một mẫu đối chiếu là một xâu có sử dụng hai ký tự đặc biệt % và _. Các ký tự thông thường trong p chỉ đối sánh được với chính chúng ở trong s, nhưng % có thể đối sánh với một dãy có 0 hoặc nhiều hơn các ký tự trong s, và _ đối sánh với bất kỳ ký tự nào trong s.

Giá trị của biểu thức này là đúng khi và chỉ khi xâu s hợp với mẫu p. Một cách tương tự, s NOT LIKE p là đúng khi và chỉ khi xâu s không hợp với mẫu p. Ví dụ 6: SELECT Tên FROM NHÂNVIÊN WHERE Tên LIKE ‘N_ _’ ; Truy vấn này đòi hỏi thuộc tính Tên có giá trị gồm 3 ký tự, ký tự đầu tiên là N và sau đó là một dãy nào đó gồm hai ký tự. Kết quả của truy vấn này là một tập các tên nhân viên thích hợp, chẳng hạn như Nam, Núi,.

Ví dụ 7: Chúng ta hãy tìm tên của các nhân viên có chứa chữ a.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Tài liệu Giáo Trình Ngôn Ngữ SQL: Hướng Dẫn Cơ Bản và Nâng Cao cung cấp một cái nhìn tổng quan về ngôn ngữ truy vấn cấu trúc SQL, từ những khái niệm cơ bản đến các kỹ thuật nâng cao. Nội dung của giáo trình không chỉ giúp người đọc hiểu rõ cách thức hoạt động của SQL mà còn trang bị cho họ những kỹ năng cần thiết để thực hiện các truy vấn phức tạp, quản lý cơ sở dữ liệu hiệu quả và tối ưu hóa hiệu suất.

Đặc biệt, tài liệu này rất hữu ích cho những ai mới bắt đầu học SQL cũng như những lập trình viên muốn nâng cao kỹ năng của mình. Để mở rộng thêm kiến thức, bạn có thể tham khảo tài liệu Hướng Dẫn Chi Tiết Về Ngôn Ngữ SQL: Cấu Trúc và Ứng Dụng, nơi cung cấp cái nhìn sâu sắc về cấu trúc của SQL và các ứng dụng thực tiễn. Ngoài ra, tài liệu Chương 4 SQL sẽ giúp bạn nắm bắt các khái niệm và kỹ thuật truy vấn một cách chi tiết hơn. Những tài liệu này sẽ là những nguồn tài nguyên quý giá để bạn có thể khám phá và nâng cao kiến thức về SQL.