SQL trong Access: khái niệm cơ bản, từ vựng và cú pháp

Áp dụng cho
Access cho Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Khi bạn muốn truy xuất dữ liệu từ cơ sở dữ liệu, bạn sẽ yêu cầu dữ liệu bằng cách sử dụng Ngôn ngữ truy vấn có cấu trúc hay còn gọi là SQL. SQL là ngôn ngữ máy tính gần giống với tiếng Anh nhưng các chương trình cơ sở dữ liệu có thể hiểu được. Mọi truy vấn mà bạn chạy đều sử dụng SQL dưới nền.

Việc hiểu cách thức hoạt động của SQL có thể giúp bạn tạo các truy vấn tốt hơn, cũng như có thể giúp bạn dễ dàng hiểu cách khắc phục truy vấn không trả về kết quả bạn muốn.

Đây là bài viết nằm trong tập hợp các bài viết về SQL trong Access. Bài viết này mô tả cách sử dụng cơ bản SQL để chọn dữ liệu và sử dụng các ví dụ để minh họa cú pháp SQL.

Trong bài viết này

SQL là gì?

SQL là ngôn ngữ máy tính để làm việc với các tập hợp dữ kiện và mối quan hệ giữa các tập hợp dữ kiện đó. Các chương trình cơ sở dữ liệu quan hệ, như Microsoft Office Access, sử dụng SQL để làm việc với dữ liệu. Không giống như nhiều ngôn ngữ máy tính, SQL không khó đọc và hiểu, ngay cả đối với người mới. Giống như nhiều ngôn ngữ máy tính, SQL là tiêu chuẩn quốc tế được công nhận bởi các cơ quan tiêu chuẩn, như ISOANSI.

Bạn sử dụng SQL để mô tả tập hợp dữ liệu có thể giúp bạn trả lời câu hỏi. Khi bạn sử dụng SQL, bạn phải sử dụng đúng cú pháp. Cú pháp là tập hợp các quy tắc mà các thành phần của ngôn ngữ được kết hợp chính xác. Cú pháp SQL dựa trên cú pháp tiếng Anh và sử dụng nhiều yếu tố tương tự như cú pháp của Visual Basic for Applications (VBA).

Ví dụ: một câu lệnh SQL đơn giản truy xuất danh sách họ của các liên hệ có tên là Mary có thể có dạng như sau:

SELECT Last_Name
FROM Contacts
WHERE First_Name = 'Mary';

Lưu ý

SQL không chỉ sử dụng để thao tác dữ liệu mà còn tạo và thay đổi thiết kế các đối tượng cơ sở dữ liệu, như bảng. Một phần SQL được dùng để tạo và thay đổi đối tượng cơ sở dữ liệu có tên gọi là ngôn ngữ định nghĩa dữ liệu (DDL). Chủ đề này không đề cập đến DDL. Để biết thêm thông tin, hãy xem bài viết Tạo hoặc sửa đổi các bảng hay chỉ mục bằng cách sử dụng truy vấn định nghĩa dữ liệu.

Câu lệnh SELECT

Để mô tả tập hợp dữ liệu bằng SQL, bạn viết câu lệnh SELECT. Câu lệnh SELECT có chứa mô tả đầy đủ tập hợp dữ liệu bạn muốn lấy từ cơ sở dữ liệu. Điều này bao gồm như sau:

  • Bảng nào có chứa dữ liệu.
  • Dữ liệu từ các nguồn khác nhau có liên quan như thế nào.
  • Trường hoặc tính toán nào sẽ tạo ra dữ liệu.
  • Tiêu chí mà dữ liệu phải phù hợp để được đưa vào.
  • Có sắp xếp kết quả hay không và cách sắp xếp kết quả.

Mệnh đề SQL

Giống như một câu, câu lệnh SQL có các mệnh đề. Mỗi mệnh đề sẽ thực hiện một hàm cho câu lệnh SQL. Một số mệnh đề là bắt buộc trong câu lệnh SELECT. Bảng sau đây liệt kê các mệnh đề SQL phổ biến nhất.

Mệnh đề SQL Tác dụng Bắt buộc
CHỌN Liệt kê tất cả các trường có dữ liệu đáng quan tâm.
TỪ Liệt kê các bảng có các trường được liệt kê trong mệnh đề SELECT.
VỊ TRÍ Chỉ rõ các tiêu chí mà trường phải đáp ứng theo từng bản ghi được đưa vào kết quả. Không
SẮP XẾP THEO Chỉ rõ cách sắp xếp kết quả. Không
GROUP BY Trong một câu lệnh SQL có các hàm tổng hợp, nó liệt kê các trường không được tóm tắt trong mệnh đề SELECT. Chỉ khi có các trường như
ĐANG CÓ Trong một câu lệnh SQL có các hàm tổng hợp, nó chỉ rõ các điều kiện áp dụng cho các trường được tóm tắt trong câu lệnh SELECT. Không

Thuật ngữ SQL

Mỗi mệnh đề SQL gồm có các thuật ngữ — có thể so sánh với các từ loại. Bảng sau đây liệt kê các loại thuật ngữ SQL.

Thuật ngữ SQL Từ loại có thể so sánh Định nghĩa Ví dụ
mã định danh danh từ Tên bạn dùng để xác định đối tượng cơ sở dữ liệu, chẳng hạn như tên trường. Khách hàng. [Số điện thoại]
toán tử động từ hoặc trạng từ Một từ khóa đại diện cho một thao tác hoặc điều chỉnh một thao tác. AS
hằng danh từ Một giá trị không đổi, chẳng hạn như một số hoặc giá trị NULL. 42
biểu thức tính từ Một sự kết hợp các mã định danh, toán tử, hằng số và hàm định trị thành một giá trị duy nhất. >= Sản phẩm. [Đơn giá]

Đầu Trang

Mệnh đề SQL cơ bản: SELECT, FROM và WHERE

Câu lệnh SQL có biểu mẫu chung:

SELECT field_1
FROM table_1
WHERE criterion_1
;

Lưu ý

  • Access bỏ qua ngắt dòng trong câu lệnh SQL. Tuy nhiên, hãy cân nhắc sử dụng dòng cho từng mệnh đề nhằm giúp cải thiện tính dễ đọc của câu lệnh SQL cho chính bạn và những người khác.
  • Mọi câu lệnh SELECT đều kết thúc bằng dấu chấm phẩy (;). Dấu chấm phẩy có thể xuất hiện ở cuối mệnh đề cuối cùng hoặc trên một dòng đơn lẻ ở cuối câu lệnh SQL.

Ví dụ trong Access

Ví dụ sau đây sẽ minh họa diện mạo của câu lệnh SQL cho một truy vấn chọn đơn giản trong Access.

Tab đối tượng SQL hiển thị một câu lệnh SELECT

1. Mệnh đề SELECT

2. Mệnh đề FROM

3. Mệnh đề WHERE

Câu lệnh SQL ví dụ này có nội dung "Chọn dữ liệu được lưu trữ trong các trường có tên Địa chỉ Email và Công ty từ bảng có tên Liên hệ, cụ thể là những bản ghi có giá trị trường Thành phố là Seattle."

Hãy xem ví dụ, mỗi lần một mệnh đề, để xem cách thức hoạt động của cú pháp SQL.

Mệnh đề SELECT

SELECT [E-mail Address], Company

Đây là mệnh đề SELECT. Mệnh đề này bao gồm một toán tử (SELECT) theo sau là hai mã định danh ([Địa chỉ email] và Công ty).

Nếu mã định danh có chứa dấu cách hoặc ký tự đặc biệt (chẳng hạn như "Địa chỉ email") thì mã định danh đó phải đặt trong dấu ngoặc vuông.

Mệnh đề SELECT không cho biết bảng nào chứa trường và mệnh đề không thể chỉ định điều kiện mà dữ liệu phải đáp ứng để được bao gồm.

Mệnh đề SELECT luôn xuất hiện phía trước mệnh đề FROM trong câu lệnh SELECT.

Mệnh đề FROM

FROM Contacts

Đây là mệnh đề FROM. Mệnh đề này bao gồm một toán tử (FROM) theo sau là mã định danh (Liên hệ).

Mệnh đề FROM không liệt kê trường sẽ được chọn.

Mệnh đề WHERE

WHERE City="Seattle"

Đây là mệnh đề WHERE. Mệnh đề này bao gồm một toán tử (WHERE) theo sau là một biểu thức (Thành phố="Seattle").

Lưu ý

Không giống như mệnh đề SELECT và FROM, mệnh đề WHERE không phải là thành phần bắt buộc của câu lệnh SELECT.

Bạn có thể hoàn thành nhiều hành động mà SQL cho phép bạn thực hiện bằng cách sử dụng mệnh đề SELECT, FROM và WHERE. Thông tin thêm về cách bạn sử dụng các mệnh đề được trình bày trong các bài viết bổ sung sau:

Đầu Trang

Sắp xếp kết quả: ORDER BY

Giống như Microsoft Excel, Access cho phép bạn sắp xếp kết quả truy vấn trong biểu dữ liệu. Bạn cũng có thể chỉ định trong truy vấn cách bạn muốn sắp xếp kết quả khi truy vấn đang chạy, bằng cách sử dụng mệnh đề ORDER BY. Nếu bạn sử dụng mệnh đề ORDER BY thì mệnh đề này sẽ là mệnh đề cuối cùng trong câu lệnh SQL.

Mệnh đề ORDER BY có chứa danh sách các trường mà bạn muốn sử dụng để sắp xếp, trong cùng thứ tự mà bạn muốn áp dụng các thao tác sắp xếp.

Ví dụ: giả sử bạn muốn kết quả của bạn trước tiên được sắp xếp theo giá trị của trường Công ty theo thứ tự giảm dần và — nếu có các bản ghi có cùng giá trị cho Công ty — được sắp xếp tiếp theo theo các giá trị trong trường Địa chỉ email theo thứ tự tăng dần. Mệnh đề ORDER BY của bạn sẽ có dạng như sau:

ORDER BY Company DESC, [E-mail Address]

Lưu ý

Theo mặc định, Access sẽ sắp xếp các giá trị theo thứ tự tăng dần (A-Z, nhỏ nhất đến lớn nhất). Thay vào đó, hãy sử dụng từ khóa DESC để sắp xếp các giá trị theo thứ tự giảm dần.

Để biết thêm thông tin về mệnh đề ORDER BY, hãy xem chủ đề Mệnh đề ORDER BY.

Đầu Trang

Làm việc với dữ liệu tóm tắt: GROUP BY và HAVING

Đôi khi, bạn muốn làm việc với dữ liệu tóm tắt, chẳng hạn như tổng doanh thu trong một tháng hoặc các mục đắt nhất trong hàng tồn kho. Để thực hiện điều này, bạn hãy áp dụng hàm tổng hợp vào một trường trong mệnh đề SELECT. Ví dụ: nếu bạn muốn truy vấn của mình hiển thị số lượng địa chỉ email được liệt kê của từng công ty thì mệnh đề SELECT của bạn có thể có dạng sau đây:

SELECT COUNT([E-mail Address]), Company

Các hàm tổng hợp mà bạn có thể sử dụng phụ thuộc vào kiểu dữ liệu trong trường hoặc biểu thức mà bạn muốn sử dụng. Để biết thêm thông tin về các hàm tổng hợp sẵn dùng, hãy xem bài viết Hàm tổng hợp SQL.

Chỉ định các trường không được sử dụng trong hàm tổng hợp: Mệnh đề GROUP BY

Khi bạn sử dụng các hàm tổng hợp, bạn cũng thường phải tạo mệnh đề GROUP BY. Mệnh đề GROUP BY liệt kê mọi trường mà bạn không áp dụng hàm tổng hợp. Nếu bạn áp dụng hàm tổng hợp cho tất cả các trường trong truy vấn, bạn không cần phải tạo mệnh đề GROUP BY.

Mệnh đề GROUP BY sẽ theo ngay sau mệnh đề WHERE hoặc mệnh đề FROM nếu không có mệnh đề WHERE. Mệnh đề GROUP BY liệt kê các trường khi xuất hiện trong mệnh đề SELECT.

Ví dụ: tiếp tục ví dụ trước, nếu mệnh đề SELECT của bạn áp dụng hàm tổng hợp cho [Địa chỉ email] nhưng không phải cho Công ty thì mệnh đề GROUP BY của bạn sẽ có dạng sau đây:

GROUP BY Company

Để biết thêm thông tin về mệnh đề GROUP BY, hãy xem chủ đề Mệnh đề GROUP BY.

Giới hạn giá trị tổng hợp bằng cách sử dụng tiêu chí nhóm: mệnh đề HAVING

Nếu bạn muốn sử dụng tiêu chí để giới hạn kết quả của mình nhưng trường mà bạn muốn áp dụng tiêu chí được sử dụng trong hàm tổng hợp thì bạn không thể sử dụng mệnh đề WHERE. Thay vào đó, bạn sử dụng mệnh đề HAVING. Mệnh đề HAVING hoạt động giống mệnh đề WHERE nhưng được sử dụng cho dữ liệu tổng hợp.

Ví dụ: giả sử bạn sử dụng hàm AVG (tính toán giá trị trung bình) với trường đầu tiên trong mệnh đề SELECT:

SELECT COUNT([E-mail Address]), Company

Nếu bạn muốn truy vấn hạn chế kết quả dựa trên giá trị của hàm COUNT đó, bạn không thể sử dụng tiêu chí cho trường đó trong mệnh đề WHERE. Thay vào đó, bạn hãy đặt tiêu chí vào mệnh đề HAVING. Ví dụ: nếu bạn chỉ muốn truy vấn trả về các hàng nếu có từ hai địa chỉ email trở lên liên kết với công ty thì mệnh đề HAVING có thể có dạng sau đây:

HAVING COUNT([E-mail Address])>1

Lưu ý

Một truy vấn có thể có mệnh đề WHERE và mệnh đề HAVING — tiêu chí cho các trường không được sử dụng trong hàm tổng hợp có trong mệnh đề WHERE và tiêu chí cho các trường được sử dụng với hàm tổng hợp có trong mệnh đề HAVING.

Để biết thêm thông tin về mệnh đề HAVING, hãy xem chủ đề Mệnh đề HAVING.

Đầu Trang

Kết hợp kết quả truy vấn: UNION

Khi bạn muốn xem lại toàn bộ dữ liệu được trả về bởi một số truy vấn chọn tương tự nhau như một tập hợp kết hợp, bạn sử dụng toán tử UNION.

Toán tử UNION giúp bạn kết hợp hai câu lệnh SELECT thành một. Các câu lệnh SELECT mà bạn kết hợp phải có cùng một số trường đầu ra, theo cùng thứ tự và có kiểu dữ liệu giống nhau hoặc tương thích. Khi bạn chạy truy vấn, dữ liệu từ mỗi tập hợp trường tương ứng được kết hợp thành một trường đầu ra để đầu ra truy vấn có cùng số trường như mỗi một câu lệnh chọn.

Lưu ý

Để thực hiện truy vấn hợp, kiểu dữ liệu Số và Văn bản là tương thích.

Khi bạn sử dụng toán tử UNION, bạn cũng có thể chỉ định liệu kết quả truy vấn có cần bao gồm các hàng trùng lặp hay không, nếu có, bằng cách sử dụng từ khóa ALL.

Cú pháp SQL cơ bản cho truy vấn hợp kết hợp hai câu lệnh SELECT là như sau:

SELECT field_1
FROM table_1
UNION [ALL]
SELECT field_a
FROM table_a
;

Ví dụ: giả sử bạn có một bảng có tên là Sản phẩm và một bảng khác có tên là Dịch vụ. Cả hai bảng đều có các trường chứa tên của sản phẩm hoặc dịch vụ, giá cả, bảo hành hoặc sẵn sàng bảo đảm và liệu bạn có chào bán sản phẩm hoặc dịch vụ dành riêng hay không. Mặc dù bảng Sản phẩm lưu trữ thông tin bảo hành và bảng Dịch vụ lưu trữ thông tin bảo đảm nhưng thông tin cơ bản là giống nhau (cho dù một sản phẩm hoặc dịch vụ cụ thể có bao gồm một cam kết về chất lượng). Bạn có thể sử dụng truy vấn hợp, như ví dụ sau, để kết hợp bốn trường từ hai bảng:

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services
;

Để biết thêm thông tin về cách kết hợp câu lệnh SELECT bằng cách sử dụng toán tử UNION, hãy xem mục Kết hợp kết quả của một vài truy vấn chọn bằng cách sử dụng truy vấn hợp.

Đầu Trang