Đâ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 viết mệnh đề SELECT và sử dụng các ví dụ để minh họa những kỹ thuật khác nhau bạn có thể sử dụng khi viết mệnh đề.
Để biết tổng quan về SQL trong Access, hãy xem bài viết SQL trong Access: khái niệm cơ bản, từ vựng và cú pháp.
Trong bài viết này
Chọn trường: mệnh đề SELECT
Một câu lệnh SELECT thường sẽ bắt đầu bằng mệnh đề SELECT. Bạn sử dụng mệnh đề SELECT để chỉ định tên của các trường chứa dữ liệu bạn muốn sử dụng trong truy vấn. Bạn cũng có thể sử dụng biểu thức thay cho hoặc bổ sung cho các trường. Bạn còn có thể sử dụng một câu lệnh SELECT khác làm một trường — đây được gọi là truy vấn con.
Giả sử bạn muốn biết số điện thoại của khách hàng mình. Giả sử trường lưu trữ các số điện thoại khách hàng được gọi là txtCustPhone, mệnh đề SELECT sẽ có dạng như sau:
SELECT [txtCustomerPhone]
Bạn có thể đặt tên trong dấu ngoặc vuông. Nếu tên không chứa bất kỳ khoảng trắng hoặc ký tự đặc biệt nào (chẳng hạn như dấu chấm câu) thì dấu ngoặc vuông là tùy chọn. Nếu tên chứa khoảng trắng hoặc ký tự đặc biệt, bạn phải sử dụng dấu ngoặc này.
Mẹo: Tên có chứa khoảng trắng sẽ dễ đọc hơn và có thể giúp tiết kiệm thời gian khi bạn thiết kế biểu mẫu và báo cáo nhưng lại có thể khiến bạn phải nhập nhiều hơn khi viết câu lệnh SQL. Bạn nên cân nhắc điều này khi đặt tên cho đối tượng trong cơ sở dữ liệu Access.
Nếu câu lệnh SQL của bạn chứa hai trường có cùng tên trở lên, bạn phải thêm tên nguồn dữ liệu của từng trường vào tên trường trong mệnh đề SELECT. Bạn sử dụng cùng một tên cho nguồn dữ liệu bạn dùng trong mệnh đề FROM.
Chọn tất cả các trường
Khi muốn đưa vào tất cả các trường từ một nguồn dữ liệu, bạn có thể liệt kê lần lượt mọi trường trong mệnh đề SELECT hoặc sử dụng ký tự đại diện dấu sao (*). Khi bạn sử dụng dấu sao, Access sẽ xác định thời điểm truy vấn chạy những trường mà nguồn dữ liệu có chứa, đồng thời đưa vào mọi trường trong truy vấn đó. Điều này giúp đảm bảo truy vấn sẽ luôn cập nhật trong trường hợp có trường mới được thêm vào nguồn dữ liệu.
Bạn có thể sử dụng dấu sao kèm theo một hoặc nhiều nguồn dữ liệu trong một câu lệnh SQL. Nếu bạn sử dụng dấu sao và có nhiều nguồn dữ liệu, bạn phải đưa kèm tên nguồn dữ liệu cùng với dấu sao để Access có thể xác định nguồn dữ liệu nhằm nhận mọi trường.
Ví dụ: giả sử bạn muốn chọn toàn bộ trường từ bảng Đơn_hàng nhưng chỉ chọn địa chỉ email từ bảng Danh_bạ. Mệnh đề SELECT của bạn có thể sẽ giống như sau:
SELECT Orders.*, Contacts.[E-mail Address]
Lưu ý: Theo dõi thời điểm bạn sử dụng dấu sao. Nếu sau này, nguồn dữ liệu được thêm vào các trường mới nhưng bạn đã không dự tính đến các trường này thì kết quả truy vấn có thể sẽ không như mong muốn.
Chọn các giá trị riêng biệt
Nếu bạn biết rằng câu lệnh của mình sẽ chọn dữ liệu dư thừa trong khi bạn chỉ muốn thấy các giá trị khác biệt thì bạn có thể sử dụng từ khóa DISTINCT trong mệnh đề SELECT. Ví dụ: giả sử mỗi khách hàng của bạn đại diện cho một vài mối quan tâm khác nhau, một vài người trong số này sẽ sử dụng cùng một số điện thoại. Nếu bạn muốn chắc chắn chỉ thấy mỗi số điện thoại một lần, mệnh đề SELECT sẽ có dạng như sau:
SELECT DISTINCT [txtCustomerPhone]
Sử dụng tên thay thế cho các trường hoặc biểu thức: từ khóa AS
Bạn có thể thay đổi nhãn được hiển thị cho trường bất kỳ ở dạng xem biểu dữ liệu bằng cách sử dụng từ khóa AS và biệt danh trường trong mệnh đề SELECT. Biệt danh trường là tên bạn gán cho một trường trong truy vấn để dễ đọc kết quả hơn. Ví dụ: nếu bạn muốn chọn dữ liệu từ một trường có tên là txtCustPhone và trường này chứa số điện thoại khách hàng thì bạn có thể cải thiện tính dễ đọc cho kết quả bằng cách sử dụng biệt danh trường trong câu lệnh SELECT, như ở dưới đây:
SELECT [txtCustPhone] AS [Customer Phone]
Lưu ý: Bạn phải sử dụng biệt danh trường khi sử dụng biểu thức trong mệnh đề SELECT.
Chọn bằng cách sử dụng biểu thức
Đôi khi, bạn muốn xem tính toán dựa trên dữ liệu của mình hoặc chỉ truy xuất một phần dữ liệu của trường. Ví dụ: giả sử bạn muốn trả về năm sinh của khách hàng, dựa trên dữ liệu ở trường BirthDate trong cơ sở dữ liệu của bạn. Mệnh đề SELECT của bạn có thể giống như sau:
SELECT DatePart("yyyy",[BirthDate]) AS [Birth Year]
Biểu thức này gồm hàm DatePart và hai tham đối — "yyyy" (một hằng số) và [Ngày_Sinh] (một mã định danh).
Bạn có thể sử dụng mọi biểu thức hợp lệ làm trường, nếu biểu thức xuất ra một giá trị đơn nhất khi được cung cấp một giá trị đầu vào đơn nhất.