SQL trong Access: khái niệm cơ bản, từ vựng và cú pháp
Applies ToAccess 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 Ngôn ngữ truy vấn có cấu trúc hoặc SQL. SQL là một 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 đó hiểu. Mọi truy vấn bạn chạy đều sử dụng SQL ở phía sau.

Việc tìm hiểu cách hoạt động của SQL có thể giúp bạn tạo các truy vấn tốt hơn và 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ả mà 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 dùng SQL cơ bản để chọn dữ liệu và 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à một 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 chúng. Các chương trình cơ sở dữ liệu quan hệ, chẳng hạn 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 làm mới. Giống như nhiều ngôn ngữ máy tính khác, SQL là một tiêu chuẩn quốc tế được các cơ quan tiêu chuẩn như ISOvà ANSI công nhận.

Bạn sử dụng SQL để mô tả các tập dữ liệu có thể giúp bạn trả lời các câu hỏi. Khi sử dụng SQL, bạn phải sử dụng cú pháp đúng. Cú pháp là tập hợp các quy tắc mà các thành phần của một 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 thành phần giống như cú pháp Visual Basic for Applications (VBA).

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

SELECT Last_NameFROM ContactsWHERE First_Name = 'Mary';

Lưu ý: SQL không chỉ được sử dụng để thao tác dữ liệu mà còn để tạo và thay đổi thiết kế của các đối tượng cơ sở dữ liệu, chẳng hạn như bảng. Phần SQL được dùng để tạo và thay đổi đối tượng cơ sở dữ liệu được 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 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ả một tập hợp dữ liệu bằng cách sử dụng SQL, bạn hãy viết một câu lệnh SELECT. Câu lệnh SELECT chứa mô tả đầy đủ về tập dữ liệu bạn muốn lấy từ cơ sở dữ liệu. Điều này bao gồm:

  • Bảng nào chứa dữ liệu.

  • Dữ liệu từ các nguồn khác nhau liên quan như thế nào.

  • Trường hoặc phép tính nào sẽ tạo dữ liệu.

  • Tiêu chí mà dữ liệu phải khớp để được bao gồm.

  • Có 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 đề thực hiện một hàm cho câu lệnh SQL. Bắt buộc phải có một số mệnh đề 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ính năng của chú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 bao gồm các thuật ngữ — có thể so sánh với các phần của giọng nói. Bảng sau đây liệt kê các loại thuật ngữ SQL.

Thuật ngữ SQL

Một phần có thể so sánh của giọng nói

Định nghĩa

Ví dụ

mã định danh

danh từ

Một tên mà bạn sử dụng để xác định một đối tượng cơ sở dữ liệu, chẳng hạn như tên của một 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.

>= Products.[Unit Price]

Đầu Trang

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

Câu lệnh SQL có dạng chung:

SELECT field_1FROM table_1WHERE criterion_1;

Lưu ý: 

  • Access bỏ qua dấu ngắt dòng trong câu lệnh SQL. Tuy nhiên, hãy cân nhắc sử dụng một dòng cho từng mệnh đề để 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 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 ở cuối câu lệnh SQL.

Ví dụ trong Access

Dưới đây là minh họa về giao diện của câu lệnh SQL đối với 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 "Select the data that is stored in the fields named E-mail Address and Company from the table named Contacts, specifically those records in which the field City is Seattle" (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ị của trường Thành phố là Seattle).

Chúng ta hãy xem ví dụ, từng mệnh đề một để biết cú pháp SQL hoạt động như thế nào.

Mệnh đề SELECT

SELECT [E-mail Address], Company

Đây là mệnh đề SELECT. Nó 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ột mã định danh có chứa các khoảng trắng hoặc ký tự đặc biệt (chẳng hạn như "Địa chỉ Email"), mã định danh đó phải được đặt trong dấu ngoặc vuông.

Mệnh đề SELECT không phải nói bảng nào chứa các trường và không thể xác định bất kỳ điều kiện nào phải đáp ứng bởi dữ liệu cần đưa vào.

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

Mệnh đề FROM

FROM Contacts

Đây là mệnh đề FROM. Nó bao gồm một toán tử (FROM) theo sau là một mã định danh (Danh bạ).

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

Mệnh đề WHERE

WHERE City="Seattle"

Đây là mệnh đề WHERE. Nó 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 các 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ể thực hiện 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 đề này đượ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 chạy truy vấn, bằng cách sử dụng mệnh đề ORDER BY. Nếu bạn sử dụng mệnh đề ORDER BY, thì đó là mệnh đề cuối cùng trong câu lệnh SQL.

Mệnh đề ORDER BY chứa danh sách các trường bạn muốn sử dụng để sắp xếp, theo 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 mình được sắp xếp trước tiên 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 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ắ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ặt hàng đắt tiền nhất trong một khoảng không quảng cáo. Để thực hiện điều này, bạn hãy áp hàm tổng hợp áp dụng cho 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ê cho từng công ty, mệnh đề SELECT của bạn có thể trông giống như sau:

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

Các hàm tổng hợp mà bạn có thể sử dụng tùy thuộc vào kiểu dữ liệu trong trường hoặc biểu thức 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.

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

Khi sử dụng hàm tổng hợp, bạn thường cũng phải tạo mệnh đề GROUP BY. Mệnh đề GROUP BY liệt kê tất cả các 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 một truy vấn, bạn không phải tạo mệnh đề GROUP BY.

Mệnh đề GROUP BY 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 chúng xuất hiện trong mệnh đề SELECT.

Ví dụ: tiếp tục ví dụ trên đây, 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 áp dụng cho Công ty, mệnh đề GROUP BY của bạn sẽ có dạng như sau:

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 như mệnh đề WHERE nhưng được dùng cho dữ liệu tổng hợp.

Ví dụ: giả sử bạn sử dụng hàm AVG (hàm này 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 đặt tiêu chí trong mệnh đề HAVING. Ví dụ: nếu bạn chỉ muốn truy vấn trả về các hàng nếu có nhiều địa chỉ email liên kết với công ty, mệnh đề HAVING có thể có dạng như sau:

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

Lưu ý: 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, hãy đi đến mệnh đề WHERE và tiêu chí cho các trường được sử dụng với hàm tổng hợp sẽ được chuyển đến 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 tất cả dữ liệu mà một vài truy vấn chọn tương tự trả về cùng nhau, như một tập hợp, bạn sử dụng toán tử UNION.

Toán tử UNION cho phé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 số trường đầu ra, theo cùng thứ tự và có cùng kiểu dữ liệu 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 với mỗi 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ể xác định xem kết quả truy vấn có nên bao gồm các hàng trùng lặp, nếu có, bằng cách sử dụng từ khóa ALL hay không.

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

SELECT field_1FROM table_1UNION [ALL]SELECT field_aFROM 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ó trường chứa tên sản phẩm hoặc dịch vụ, giá cả, bảo hành hoặc đảm bảo tính khả dụng và liệu bạn có cung cấp sản phẩm hoặc dịch vụ độc quyền hay không. Mặc dù bảng Products lưu trữ thông tin bảo hành và bảng Services lưu trữ thông tin bảo đảm, thông tin cơ bản vẫn giống nhau (liệu một sản phẩm hoặc dịch vụ cụ thể có bao gồm lời hứa về chất lượng hay không). Bạn có thể sử dụng truy vấn hợp, như sau, để kết hợp bốn trường từ hai bảng:

SELECT name, price, warranty_available, exclusive_offerFROM ProductsUNION ALLSELECT name, price, guarantee_available, exclusive_offerFROM 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 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

Bạn cần thêm trợ giúp?

Bạn muốn xem các tùy chọn khác?

Khám phá các lợi ích của gói đăng ký, xem qua các khóa đào tạo, tìm hiểu cách bảo mật thiết bị của bạn và hơn thế nữa.

Cộng đồng giúp bạn đặt và trả lời các câu hỏi, cung cấp phản hồi và lắng nghe ý kiến từ các chuyên gia có kiến thức phong phú.