Giới thiệu
Mục đích của hướng dẫn này là để chứng minh cách bạn có thể viết các câu lệnh SQL của riêng mình và chạy chúng từ bên trong Microsoft Access 2007, 2010, 2013 2016 hoặc 2019 (các bước hầu như giống nhau trên tất cả các phiên bản). Như với tất cả các cơ sở dữ liệu quan hệ, Microsoft Access có thể được lập trình trực tiếp bằng cách sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL). Mặc dù SQL thường bị ẩn với người dùng, nhưng đối với sinh viên cơ sở dữ liệu, MS Access cung cấp một cách nhanh chóng và dễ dàng để khám phá SQL và viết một số truy vấn khá phức tạp. Điều này đặc biệt hữu ích nếu bạn không có thời gian hoặc kiên nhẫn để cài đặt SQL Server, Oracle, MySQL hoặc hệ quản trị cơ sở dữ liệu quan hệ lớn hơn khác.
Các ví dụ SQL được sử dụng trong hướng dẫn ngắn gọn này dựa trên các bảng Khách hàng và Tài khoản đơn giản được tạo như một phần của Hướng dẫn Microsoft Access 2007, 2010 và 2013 của tôi.
Trước tiên, bạn có thể muốn chạy qua hướng dẫn đó (hoặc ít nhất là lần đầu tiên vài phần) để tạo bảng và thêm dữ liệu cần thiết để làm cho các ví dụ này hoạt động.
Phần tiếp theo sẽ giới thiệu rất ngắn gọn về Ngôn ngữ truy vấn có cấu trúc (SQL).
Ngôn ngữ truy vấn có cấu trúc (SQL)
Ngôn ngữ truy vấn có cấu trúc (SQL phát âm là “Sequel”) là một ngôn ngữ lập trình khai báo được sử dụng để thao tác với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS). Nó được giới thiệu lần đầu tiên trong IBM’s System R vào cuối những năm 1970. Ngày nay SQL được sử dụng trong tất cả các DBMS quan hệ chính như Oracle, IBM DB2, Informix, Sybase, Microsoft SQL Server, MySQL, Postgres, SQLLite, Microsoft Access và nhiều loại khác. Mặc dù mỗi nhà cung cấp cơ sở dữ liệu cung cấp một số tính năng độc quyền được thêm vào, nhưng cốt lõi của SQL có thể được sử dụng trên bất kỳ cơ sở dữ liệu quan hệ nào.
Ngôn ngữ truy vấn có cấu trúc được chia thành hai phần chính:
- Ngôn ngữ định nghĩa dữ liệu (DDL) - Được sử dụng để tạo (xác định) cấu trúc dữ liệu như lược đồ, bảng, chỉ mục, cụm, chuỗi vì chúng ta sẽ bảo mật cơ sở dữ liệu
- Ngôn ngữ thao tác dữ liệu (DML) - Được sử dụng để chèn, truy xuất, cập nhật và xóa dữ liệu khỏi bảng.
Microsoft Access hỗ trợ cả hai phần DDL và DML của SQL. Hầu hết thời gian chúng tôi tập trung vào Truy vấn SQL là câu lệnh SQL SELECT được sử dụng để truy xuất dữ liệu từ cơ sở dữ liệu hiện có. Cú pháp cơ bản cho câu lệnh SQL SELECT là:
SELECT column1, column2, ... columnN FROM tableA, tableB, ... tableZ WHERE condition1, condition2, ...conditionM ORDER BY column1, column2, ... columnN
Vì vậy, ví dụ, giả sử chúng ta có một bảng có tên Khách hàng với các cột như FirstName, LastName, StreetAddress, City, state và Zip, chúng ta có thể viết câu lệnh SQL SELECT như sau:
SELECT FirstName, LastName, City, State FROM customer
Trong truy vấn trên, chúng tôi yêu cầu dữ liệu chỉ trong các cột FirstName, LastName, City và State, và bảng mà chúng tôi đang nhận dữ liệu này được gọi là khách hàng. Lưu ý rằng ngôn ngữ SQL không lo lắng về chữ hoa hoặc chữ thường. Vì vậy, viết select firstName ... giống như cách viết SELECT FIRSTNAME ... .
Một truy vấn phức tạp hơn một chút sẽ là nếu chúng tôi chỉ muốn xem những khách hàng sống ở Georgia và chúng tôi muốn kết quả được sắp xếp theo họ của khách hàng:
SELECT FirstName, LastName, City, State FROM customer WHERE state = 'GA' ORDER BY LastName
Như bạn có thể thấy, danh sách các cột chúng tôi muốn hiển thị theo từ khóa SELECT. Tên của bảng mà chúng tôi đang truy vấn theo sau từ khóa FROM, một điều kiện state ='GA' theo sau từ khóa WHERE và cuối cùng kết quả được sắp xếp trên cột LastName như được mô tả bởi từ khóa ORDER BY.
Có nhiều tính năng khác của câu lệnh SQL SELECT liên quan đến việc truy vấn nhiều bảng bằng cách “nối” chúng lại với nhau, nhóm các tập hợp các bản ghi để tìm tổng, giá trị lớn nhất, nhỏ nhất hoặc trung bình và thực hiện các thao tác khác đối với đầu ra mà người dùng cuối cùng sẽ thấy. Có thể tìm thấy một cuộc thảo luận toàn diện hơn về các tính năng của SQL trên liên kết này.
Phần tiếp theo giới thiệu việc sử dụng SQL từ dạng xem Thiết kế truy vấn trong MS Access.
SQL trong Microsoft Access
Trong phần này, chúng tôi sẽ cung cấp các bước để viết SQL của riêng bạn trong MS Access. Bài tập này giả sử bạn có MS Access 2007, 2010 hoặc 2013 đang chạy với cơ sở dữ liệu “Ngân hàng” (bảng Khách hàng và Tài khoản) đang mở. Nhấp vào đây để xem hướng dẫn với các bước tạo cơ sở dữ liệu này.
Để bắt đầu:
- tạo một truy vấn mới bằng cách nhấp vào nút Tạo và sau đó nhấp vào Thiết kế truy vấn biểu tượng như hình dưới đây.
- Hộp thoại “Hiển thị bảng” sẽ xuất hiện như hình dưới đây. Nhấp vào nút Đóng để đóng nó lại.
- Nhấp vào tab Thiết kế và sau đó nhấp vào SQL ở bên trái (hoặc kéo nút xem xuống và chọn SQL
- Tại thời điểm này, Dạng xem SQL của truy vấn Query1 sẽ xuất hiện. Theo mặc định, từ khóa SELECT được hiển thị trong cửa sổ.
- Chỉnh sửa truy vấn để viết ra một Câu lệnh SQL hoàn chỉnh:
SELECT firstname, lastname FROM customer ORDER BY lastname
Cửa sổ truy vấn chế độ xem SQL bây giờ sẽ xuất hiện như bên dưới:
- Tại thời điểm này, với câu lệnh SQL được nhập vào, chúng ta có thể thực hiện truy vấn đối với cơ sở dữ liệu bằng cách nhấp vào nút dấu chấm than “Chạy”.
- Kết quả của truy vấn sẽ hiển thị ở dạng xem Biểu dữ liệu (giống như bảng tính):
- Để quay lại chỉnh sửa truy vấn SQL, hãy kéo menu Xem xuống và chọn lại SQL.
- Bạn cũng có thể muốn lưu truy vấn của mình. Để thực hiện việc này, hãy nhấp chuột phải vào tab có tên truy vấn hiện tại: Query1 và chọn Lưu .
Một hộp thoại sẽ xuất hiện nhắc tên mới của truy vấn. Nhập tên mới, chẳng hạn như: Customer_Names và sau đó nhấp vào OK để lưu nó.
- Cuối cùng, MS Access không cung cấp cách lưu truy vấn dưới tên mới (“Lưu dưới dạng”). Thay vào đó, những gì bạn có thể làm là đánh dấu tên của truy vấn, nhấp chuột phải và chọn Sao chép sau đó nhấp chuột phải một lần nữa và chọn Dán . Sau đó, bạn sẽ được nhắc nhập tên mới của truy vấn.
Tiếp theo, tôi sẽ trình bày một số thủ thuật và mẹo về viết và gỡ lỗi các truy vấn SQL của bạn.
Viết và gỡ lỗi truy vấn SQL trong MS Access
Bây giờ bạn đã có cơ chế cơ bản để viết và chạy các truy vấn SQL, đây là một số mẹo và thủ thuật để gỡ lỗi SQL của bạn.
Trình chỉnh sửa MS Access SQL
Cửa sổ trình soạn thảo SQL trong MS Access không phải là tất cả những gì thông minh hoặc dễ làm việc. Một cách để làm việc với SQL là viết mã trong một trình soạn thảo khác, sau đó sao chép và dán mã vào Access để chạy nó. Có nhiều trình soạn thảo văn bản khác nhau có sẵn. Ví dụ trong Windows, bạn sẽ có sẵn Notepad trong nhóm Phụ kiện. Cảnh báo duy nhất tôi có thể đưa ra ở đây là KHÔNG sử dụng MS word hoặc phần mềm xử lý văn bản khác để viết SQL của bạn. Lý do cho điều này là MS Word và các bộ xử lý văn bản khác sẽ biến dấu ngoặc kép và đơn của bạn thành "dấu ngoặc kép" mà SQL không hiểu.
Ví dụ:nếu bạn có mệnh đề WHERE chẳng hạn như WHERE state ='GA'
SQL mong muốn văn bản được đặt trong dấu ngoặc kép đơn giản. MS word sẽ biến chúng thành một ký tự trích dẫn mở và đóng lạ mắt mà SQL sẽ không hiểu.
Nếu bạn gặp lỗi như Enter Parameter Value cho `GA ' thì bạn chắc chắn sẽ muốn đảm bảo rằng văn bản của bạn được bao gồm trong các ký tự trích dẫn đơn thuần.
Xử lý lỗi cú pháp
Lỗi cú pháp có thể rất khó chịu trong SQL vì cơ sở dữ liệu thường không thể xác định chính xác vị trí của vấn đề trong mã của bạn. Một số lỗi chính mà Access sẽ hiển thị bao gồm:
Văn bản lỗi | Giải pháp | Ví dụ |
---|---|---|
Nhập giá trị tham số cho ________ | Điều này thường xảy ra nhất khi tên của một cột (trường) không được nhập chính xác (chẳng hạn như trường hợp này "lstname" bị sai chính tả) hoặc một biểu thức không thể được công nhận chẳng hạn như WHERE state =`` GA ' | |
Công cụ cơ sở dữ liệu Microsoft Access không thể tìm thấy bảng hoặc truy vấn đầu vào :______________ | Điều này thường xảy ra nhất khi tên của bảng không được nhập chính xác trong mệnh đề FROM của truy vấn. Ví dụ:trong trường hợp này, truy vấn được chỉ định TỪ khách hàng thay vì FROM khách hàng | |
Lỗi cú pháp (thiếu toán tử) trong biểu thức truy vấn:______________ | Trong trường hợp này, cú pháp của truy vấn bị thiếu một số phần chính. Ví dụ:mệnh đề “FROM” bị thiếu và do đó Access báo cáo vị trí gần đúng của nơi sự cố xảy ra bằng cách hiển thị văn bản của truy vấn. |
Trong phần tiếp theo, tôi sẽ cung cấp một số mẹo bổ sung về cách trình bày các truy vấn SQL và kết quả của bạn cho một dự án hoặc bài tập về nhà.
Ghi lại công việc SQL của bạn
Trong phần này, tôi sẽ mô tả một số mẹo để định dạng các truy vấn và kết quả của bạn để chúng được trình bày một cách rõ ràng, ngắn gọn trên các bài tập và dự án của bạn.
Giả định ở đây là bạn sẽ sử dụng một chương trình xử lý văn bản như MS Word hoặc chương trình xử lý văn bản khác hỗ trợ sao chép và dán ảnh và văn bản.
MS Access không cho phép bạn đặt nhận xét trong Mã SQL. Các DBMS khác cho phép điều này nhưng Access hạn chế hơn một chút.
Đối với bài tập này, giả sử câu hỏi bài tập về nhà là hiển thị họ và tên của tất cả các khách hàng và sắp xếp kết quả theo họ của khách hàng.
- Nhập truy vấn SQL như được mô tả ở phần trước và chạy nó để nhận kết quả:
- Trong dạng xem Biểu dữ liệu, hãy nhấp vào hộp vuông nhỏ ở bên trái của tiêu đề cột và ở đầu các hộp chọn hàng. Điều này sẽ làm cho toàn bộ tập hợp kết quả được đánh dấu.
- Nhấp chuột phải vào cùng một hộp vuông nhỏ ở góc và chọn Sao chép từ menu bật lên.
- Chuyển sang MS Word (hoặc chương trình xử lý văn bản khác) và Dán kết quả vào vị trí thích hợp:
Một số gợi ý hữu ích khác cũng được theo sau khi tạo tài liệu chuyển nhượng này:
- Đảm bảo nhập câu đầy đủ mô tả truy vấn bạn đang giải quyết (Đừng chỉ đặt “Câu hỏi 1”). Ví dụ:bạn có thể muốn sao chép câu hỏi từ bài tập về nhà và biến nó thành một phần của câu trả lời.
- Khi dán vào văn bản SQL cho truy vấn của bạn, hãy sử dụng phông chữ Courier New để các ký tự và khoảng cách sẽ thẳng hàng. Điều này giúp bạn đọc dễ dàng hơn nhiều.
- Dán kết quả bằng kỹ thuật hiển thị ở trên thay vì sử dụng ảnh chụp màn hình. Điều này sẽ không chỉ làm cho các tệp tài liệu Word của bạn nhỏ hơn mà còn hiển thị rất rõ ràng khi bạn in nó.
- Đảm bảo ghi tên, lớp học / khóa học và phần của bạn vào bài tập của bạn.
- Đối với các truy vấn phức tạp hơn có thể liên quan đến Truy vấn con hoặc Truy vấn nội tuyến, tốt nhất nên xếp các truy vấn con theo kiểu thụt lề để giúp chúng dễ đọc và gỡ lỗi hơn. Ví dụ:thay vì viết một truy vấn con như sau:
SELECT accountnumber, balance FROM accounts WHERE balance = (SELECT MIN(balance) from accounts)
Xếp hàng truy vấn phụ dọc theo dấu ngoặc đơn:
SELECT accountnumber, balance FROM accounts WHERE balance = ( SELECT MIN(balance) FROM accounts )
Làm theo các bước sau sẽ tạo ấn tượng tuyệt vời khi bạn nộp các bài tập và dự án của mình.
Kết luận
Trong hướng dẫn ngắn gọn này, chúng tôi đã trình bày cách làm việc với SQL bằng MS Access. SQL là một ngôn ngữ lập trình khá chung chung và bất cứ thứ gì bạn học trong khi viết SQL dưới quyền truy cập MS đều có thể dễ dàng chuyển sang các cơ sở dữ liệu quan hệ khác như SQL Server, Oracle, Sybase, v.v. Để có thêm ghi chú về SQL, hãy truy cập Ngôn ngữ truy vấn có cấu trúc (SQL) của tôi trang ghi chú khóa học.
Để biết thêm hướng dẫn giới thiệu và nâng cao về MS Access, vui lòng truy cập Danh mục Access trên trang web của tôi.