TỔNG QUAN VỀ CÁC LOẠI QUERY
Chuong 4: Chuong 4: THAO TAC DU LIEU BANG QUERY
Query Select
Query select (query chon) cho phép ban tao một subset (tập con) của thông tin trong một hay nhiều bảng của cơ sở dữ liệu.
Những người phát triển ứng dụng có vô số những tùy chọn và xử lý dữ liệu theo nhiều cách khác nhau. Sử dụng những tùy chọn này để xác định cột và các giá trị của field trong tập hợp các kết quả trả về từ một query. Query select tạo ra các nguồn record tốt nhất cho các form, report và các trang Web. Bởi vậy, hiểu rõ các điều cơ bản về query select sẽ giúp bạn nâng cao công việc của mình cùng với các thành phần phát triển của các ứng dụng khác.
Một query để chọn lựa một tập các field từ một bảng đữ liệu là một trong những query select cơ bản nhất. Loại query này rất tiện lợi khi bạn chỉ muốn thể hiện một số ủeld trong một bảng cú nhiều cột. Việc trích xuất một vài cột (nhưng không phải tất cả) trong một bảng có thể làm tăng tốc độ thao tác của query. Vì Access tinh todn mét query select méi lần nó chạy, ban sé luôn luôn cung cấp dữ liệu mới nhất cho người dùng. Khi một ứng dụng không thể hiện dữ liệu gần đây nhất trong một bảng, bạn phải xem xét cách dùng các tiêu chuẩn để hạn chế các giá trị của dòng do query trả về. Một sự chọn lựa khác, bạn có thể sử dụng loại query khác để tạo mới một bảng tạm mới để chứa một tập con các cột vào một thời điểm xác định.
Thiết Lập Tiêu Chuẩn
Dù có hay không có một query select để tuyển chọn một tập con từ một nguồn dữ liệu, nó có thể giới hạn những dòng trong tập kết quả trả về. Bạn có thể chỉ định những dòng query trả về bằng cách thiết lập các tiêu chuẩn của nó. Sử dụng dòng Criteria (các tiêu chuẩn) trong mạng lưới thiết kế query để thiết lập các tiêu chuẩn. Tùy chọn chương trình trong việc thiết lập tiêu thức bao gồm mệnh để WHERE và HAVING của câu lệnh SQL. Mệnh đề WHERE ap dung cho cde record riêng lẻ thuộc nguồn record trong 251
một query, nhưng mệnh để HAVING có thể giới hạn tập hợp các record trả về dựa trên những giá trị của mệnh dé GROUP BY.
Céc query select tra về các tập hợp của dòng tương hợp với một giá trị đặc biệt hoặc phạm vi các giá trị có thể trả về. Khi sử dụng một bảng đữ liệu địa lý, một query select có thể chỉ rõ mã thư tín để trả về thành phố và bang tương ứng. Nếu các record trong nguồn dữ liệu cú chứa fủeld Date/Time, chẳng hạn như ngày đặt hàng hay ngày lập hóa đơn, thì bạn có thể chọn những ngày đó dựa vào một ngày đã xác định rõ. Bạn còn có thể sử dụng các phép toán so sánh, chẳng hạn như lớn hơn ©), nhỏ hơn (<), hoặc khác nhau (<>) để chọn một vùng các dòng. Bạn có thể tương hợp một giá trị chuỗi đặc biệt hoặc một vùng giá trị bằng cách sử dụng các tham SỐ thay thế. Sử dụng các ký tự thay thế đặc biệt trong các tiêu chuẩn để chỉ rõ vùng giá trị chuỗi. Ví dụ, tiêu chuẩn S*l so khớp với giá tri Sal va Saul, vì ký tự ” đại điện cho bất kỳ ký tự nào ở giữa 2 ky tự S và !. Ngược lại, ký tự ? chỉ thay thế cho một ký tự. Vì thế, tiêu chuẩn S?1 tương hợp vi Sal, chit không tương hợp với Saul.
Sử Dụng Các Hàm Tập Hợp
Người phát triển ứng dụng có thể sử dụng các hàm tập hợp cùng với câu lệnh SQL để tổng kết các record trong một nguồn dữ liệu. Các ham tập hợp tiêu biểu của SQL là hàm đếm (count), tổng (sum), hoặc hàm tính trung bình (average) các record trong nguồn dữ liệu cho query select. Bạn có thể sử dụng thêm các hàm tập hợp khác để tính sự biến thiên của nguồn record với các hàm như S/Đeu hoặc VarP. Bạn còn có thể tính giá trị nhỏ nhất và lớn nhất trong một tập hợp các giá trị trong field bằng các hàm tập hợp.
Cac query select cdn cé thé Ap dung các hàm tập hợp cia SQL kết hợp với mệnh để GROUP BY. Điều này cho phép một query tính toán đữ liệu tập hợp cho cdc record đã nhóm trong một nguồn dữ liệu. Việc sử dụng các hàm tập hợp cùng với mệnh dé GROUP BY, mot tng dung có thể trả về số lượng các hạng mục dòng cho mỗi thứ bậc trong query select.
a Chương ¢ 4: THAO TAC DU LIEU BANG © QUERY |
Sử Dụng Các Kết Nối
Bạn có thể dựa vào các query select trong một, hai hoặc nhiều bảng, query khác, hoặc bất kỳ sự kết hợp giữa các bảng và query select nào. Khi bạn chọn từ nhiều bảng, ứng dụng của bạn sẽ liên kết các bảng vào những field chung. Nếu cơ sở dữ liệu của bạn liên kết các bảng theo đường thiết lập toàn vẹn tham chiéu, Access sẽ tự động phát hiện và nối chúng lại với nhau khi bạn kết hợp chúng thành nguồn record cho một query. Access còn dò tìm các field chung trong những tình huống khác, cho phép bạn duy trì, sửa đổi, hoặc thay thế các mối quan hệ đã có giữa các bảng một cách tự động.
Cách mặc định để nối kết các bảng là kết hợp tất cả các record giữa 2 bảng có cùng giá trị trên một field nào đó. Việc kết nối giữa hai bảng Orders và Orders Details cia co sé dit liệu Northwind trong một query select đơn giản có thể trả về tất cả các hạng mục dòng cho mỗi đơn đặt hàng. Trong tình huống này, bạn chỉ muốn những hạng mục dòng tương hợp với những đơn đặt hàngnào đó. Có thể có khả năng cho các bảng liên hệ có các giá trị fủeld khụng tương hợp với cỏc mục nhập trong một bảng kết nối (vớ dụ, bạn có thể nhận được dữ liệu từ một cơ sở div liệu thừa kế không bắt buộc toàn vẹn tham chiếu). Ứng dụng của bạn có thể phát hiện những record không tương hợp bằng cách bắt buộc trả về tất cả các record của một trong hai bảng kết nối trong một tập kết quả. Sau đó, các record đã kết hợp có một giá trị từ một bảng nhưng khụng cú ủeld kết nối từ một bảng khỏc sẽ chỉ tới cỏc record không thoả tương hợp.
Kết quả của bất kỳ cặp recordset kết nối nào có thể kết nối với bảng hoặc query khác. Nếu bạn thông thạo SQL, bạn có thể kết hợp nhiều bảng dữ liệu và những query với những quan hệ phức tạp trong một câu lệnh SQL đơn giản để phát triển một tập hợp kết quả trả về. Việc nghiên cứu SQL có thể an toàn hơn để xây dựng những query bằng đồ thị trong mạng lưới thiết kế query giữa cặp bảng đữ liệu hoặc những query khác. Khi người thiết kế cơ sở đữ 253
liệu thực hiện bước đầu này, ho có thể kiểm tra kết quả kết nối giữa hai bảng truớc khi kết hợp tập hợp kết quả trả về với bảng hoặc query khác.
Cập Nhật Dữ Liệu Nguồn
Thông thường kết quả của một query select là một dynaset.
Một dynaset (tập hợp động) là một recordset chứa các khóa chính thay cho dữ liệu thật. Một query select cho phép một ứng dụng sửa đổi các field trong các record bên trong query. Đôi khi những field hậu thuẫn cho mét query select không thể cập nhật được. Đối với những query select xây dựng trên một hoặc hai bảng trong mối quan hệ một-một, bạn luôn luôn có thể cập nhật những record nằm ở dưới (trừ khi người sử dụng khác đã khóa chúng). Các bảng trong mối quan hệ một-nhiều thường được cập nhật.
Cho hiện thanh tình trạng của khung nhìn Datasheet trong một query để xác định rõ một field có thể cập nhật được hay không.
Nếu một field không thể cập nhật và bạn cần thay đổi nó, hãy xem xột việc truy xuất trực tiếp đến cỏc bảng chứa fủield đú hoặc thiết kế lại query để nó có thể cập nhật được.
Lưu Trữ Các Query
Khi có một query đặc biệt phức tạp, cần phải lưu trữ để cho các query khác tham chiếu tới nó. Ví dụ cho trường hợp này là một query select kết nối với hai hoặc nhiều query khác và sử dụng các ham tap hop của SQL để tạo ra những tóm tắt dữ liệu. Lưu một query phức tạp và tham chiếu đến nó trong những query khác giúp bạn tránh được những lỗi cú pháp. Đôi khi bạn kết hợp một hay nhiều query để tạo thành một query khác, logic query của bạn có thể trở nên quá phức tạp cho một động cơ của cơ sở dữ liệu để tính toán. Trong trường hợp này, lưu một hay nhiều query nhập vào như là những bảng tạm. Sau đó, sử dụng các bảng này làm đại diện cho những query. Tính toán lại các bằng mỗi khi nhập dữ liệu vào làm thay đổi các bảng gốc.
đ Chương 4: THAO TÁC DỮ LIỆU BẰNG QUERY
Query Action
Thay vì trả về một tập hợp các dòng giống như một query select, các query action thực hiện một tác vụ dựa vào một hay nhiều bảng. Những query action tạo đễ dàng để khởi động tự động một ứng dụng. Bạn có thể thiết kế query action bằng biểu đê để thi hành những chức năng cần thiết như thêm, xóa và cập nhật các record. Bởi vì những query action sử dụng SQL để thực hiện những tác vụ, chúng có thể sử dung như những câu lệnh của bảng phức tạp để quản lý các record. Những người phát triển Access có kinh nghiệm có thể ngạc nhiên về query action thứ tư của Access, đó là query của make-table (tạo bảng). Query action này cho phép định nghĩa dữ liệu cũng như thao tác đữ liệu. query make-table sẽ được trình bày trong phần “Make-table Queries” (các query Make Table) ở phần dưới.
Query Append
Các query append cho phép người phát triển ứng dụng nối thêm những record vào một bảng dựa trên một bảng thứ hai. Sử dụng query append khi ứng dụng của bạn có những record từ một nguồn đữ liệu ngoài, chẳng hạn như một bảng từ máy tính khác.
Bảng nguồn phải ở bên trong hay ít nhất được nối kết với cơ sở dữ liệu hiện hành. Bảng đích có thể nằm trong cơ sở dữ liệu hiện hanh hoặc trong một file cơ sở dữ liệu khỏc. Tờn fủield trong hai bảng cú thé khác nhau, nhưng kiểu dữ liệu phải giống nhau để thêm những giỏ trị từ một fủield trong một bảng đữ liệu vào một field tương hợp trong một bảng khác. Bảng nguồn không nhất thiết yêu câu tất cả các field phải có trong bảng dich.
Một số tình huống có thể sinh ra lỗi với query append. Bạn khụng nờn nối thờm những giỏ trị cho một fủield cú kiểu AutoNumber vì những field này được điển dữ liệu tự động. Nếu bạn cố gắng thêm một record trùng giá trị khóa chính, ứng dụng của bạn sẽ gây ra lỗi vi phạm khóa. Access sẽ không cho phép bạn nối 255
thêm những record, nếu việc thêm vào vi phạm tinh hợp lệ của bảng hoặc những quy tắc toàn vẹn tham chiếu.
Query Delele
Các query delete cho phép một ứng dụng tự động gỡ bỏ những record ra khỏi một bảng. Bạn sử đụng tiêu chuẩn để chỉ định những record nào cần xóa. Bạn có thể xóa hai hay nhiều record bằng cách chỉ sử dụng một query delete. Khi so dé co sở dữ liệu của bạn chỉ định việc xóa phân cấp, query delete sẽ xóa tất cả các record tương hợp ở cả hai bên một và bên nhiều của mối quan hệ một-nhiều.
Nếu bạn chỉ cần xóa những record ở bên một của mối quan hệ, thì loại bỏ xóa phân cấp từ các thiết lập toàn vẹn tham chiếu.
Nếu bạn phải loại bỏ tất cả các record ở bên nhiều của mối quan hệ một-nhiều với toàn vẹn tham chiếu hãy tắt mối quan hệ, rồi thực hiện query delete. Cuối cùng, khôi phục lại tham chiếu toàn vẹn.
Query Update
Query action cia update khéng thao tác cho toàn bộ các record, cũng giống như các query delete va append. Thay vào đó, query action sẽ xem xét lại các giá trị trong những field đã chọn.
Bạn hãy chỉ định những dòng đặc biệt bằng cách thiết lập tiêu
chuẩn. Bạn có thể sử dụng loại query này để tính đơn giá mới mỗi
khi các mặt hàng tăng theo tỷ lệ phần trăm. Nếu đơn giá chỉ tăng
đối với một loại sản phẩm, có nghĩa là loại sản phẩm đó đã được thiết lập theo tiêu chuẩn.
Các Loại Query Khác
Một số những query đặc biệt khác làm tăng thêm sự hữu ích của query. Những query đặc biệt này, không phải luôn luôn mở rộng hoặc bố sung cho các query select và action.