Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

§5.

Truy vấn dữ liệu


1. Các khái niệm
a) Mẫu hỏi
Như đã biết, một CSDL chứa dữ liệu phản ánh toàn bộ thông tin về tập hợp đối tượng cần
quản lí (điểm số của học sinh, hoá đơn bán hàng, sách của một thư viện,...). Với các bài
toán này, thường cần câu trả lời cho các câu hỏi như: Ai là người có điểm trung bình
cao nhất trong lớp? Tổng số tiền bán được trong một ngày là bao nhiêu? Liệt kê các
sách của một tác giả nào đó... Nếu câu hỏi chỉ liên quan tới một bảng, bằng thao tác tìm
kiếm và lọc có thể tìm được câu trả lời. Nhưng với câu hỏi phức tạp, liên quan tới nhiều
bảng thì cần sử dụng mẫu hỏi.
Dùng mẫu hỏi dựa vào liên kết giữa các bảng, ta có thể thống kê dữ liệu, nhóm và lựa chọn
các bản ghi của nhiều bảng theo các điều kiện cho trước.
Mẫu hỏi thường được sử dụng để:

 Sắp xếp các bản ghi;

 Chọn các bản ghi thoả mãn các điều kiện cho trước;

 Chọn các trường để hiển thị;

 Thực hiện tính toán như tính trung bình cộng, tính tổng, đếm bản ghi,…;

 Tổng hợp và hiển thị thông tin từ nhiều bảng.


Tương tự như với bảng, cũng có hai chế độ làm việc với mẫu hỏi, đó là chế độ thiết kế và
chế độ trang dữ liệu. Kết quả thực hiện mẫu hỏi cũng đóng vai trò như một bảng và có
thể tham gia vào việc tạo biểu mẫu, tạo mẫu hỏi khác hoặc tạo báo cáo.
b) Biểu thức Để thực hiện tính toán và kiểm tra điều kiện, trong Access có công cụ để viết
các biểu thức, bao gồm các toán hạng và các phép toán.
Các phép toán thường dùng bao gồm:
+, -, *, / (phép toán số học) ,
<=, >=, =, <> (phép so sánh)
AND, OR, NOT (phép toán lôgic)
Toán hạng trong các biểu thức có thể là:
 Tên trường (đóng vai trò các biến) được ghi trong dấu ngoặc vuông, ví dụ
[GIOI_TINH] , [LUONG],...

 Hằng số, ví dụ 0.1; 1000000,...

 Hằng văn bản, được viết trong dấu nháy kép, ví dụ "NAM", "Nữ",...

 Hàm (SUM, AVG, MAX, MIN, COUNT,...)


Biểu thức số học được sử dụng để mô tả các trường tính toán trong mẫu hỏi, mô tả này có
cú pháp như sau: <tên trường>: <biểu thức số học> ; Trong đó tên trường là tên trường
mới do người dùng đặt tên, đó không phải là trường đã có sẵn trong bảng.
Ví dụ: MAT_DO: [SO_DAN]/[DIEN_TICH]
TIEN_THUONG: [LUONG]*0.1
Biểu thức lôgic được sử dụng trong các trường hợp sau:

 Thiết lập bộ lọc cho bảng.

 Thiết lập điều kiện lọc để tạo mẫu hỏi. Ví dụ Trong CSDL quản lí học sinh, có thể
tìm các học sinh là đoàn viên, có điểm trung bình môn tin từ 7 trở lên bằng biểu thức
lọc: [DoanVien] = 1 AND [Tin] >= 7.0
c) Các hàm
Có thể tiến hành gộp nhóm các bản ghi theo những điều kiện nào đó rồi thực hiện các
phép tính trên từng nhóm này. Access cung cấp một số hàm thống kê thông dụng áp
dụng cho các nhóm, gọi tắt là các hàm gộp nhóm, trong đó có:
SUM Tính tổng;
AVG Tính giá trị trung bình;
MIN Tìm giá trị nhỏ nhất;
MAX Tìm giá trị lớn nhất;
COUNT Đếm số giá trị khác trống (Null).
Bốn hàm đầu tiên chỉ thực hiện trên các trường kiểu số
2. Tạo mẫu hỏi
Có hai chế độ thường dùng để làm việc với mẫu hỏi: chế độ thiết kế và chế độ trang dữ
liệu. Để thiết kế mẫu hỏi mới, thực hiện một trong hai cách sau:
 Cách 1: Nháy vào Create / Query Wizard.

 Cách 2: Nháy vào Create / Query Design.


Kế đến chọn bảng dữ liệu nguồn, chọn các trường cần hiển thị, chọn sắp xếp, nhập điều
kiện lọc dữ liệu, tính toán, gộp nhóm dữ liệu… Để thực thi query, ta chọn Run trên
thanh Ribbon.
. Các bước chính để tạo một mẫu hỏi bao gồm:

 Chọn dữ liệu nguồn (các bảng và mẫu hỏi khác) cho mẫu hỏi;

 Chọn các trường từ dữ liệu nguồn để đưa vào mẫu hỏi;

 Khai báo các điều kiện để lọc các bản ghi cần đưa vào mẫu hỏi;

 Chọn các trường dùng để sắp xếp các bản ghi trong mẫu hỏi;

 Tạo các trường tính toán từ các trường đã có;

 Đặt điều kiện gộp nhóm.


Chú ý: Không nhất thiết phải thực hiện tất cả các bước này. Xem minh họa dưới đây
CreateQuery Design

Chọn các bảng sẽ lấy thông


tin để tổng hợp: chọn
Bang KETQUA  Add,
chọn Bảng SINHVIEN
 Add, sau đó Close
lại.
Chọn các trường muốn hiện
thị trong bảng Querry:
Chọn Table trước, sau
đó chọn trường Field
Ấn RUN

Hình bên là cửa sổ mẫu hỏi


ở chế độ thiết kế. Cửa sổ
gồm hai phần:
- phần trên (nguồn dữ liệu)
hiển thị cấu trúc các bảng
(và các mẫu hỏi khác) có
chứa các trường được chọn
để dùng trong mẫu hỏi này.
- Phần dưới là lưới QBE
(Query By Example - mẫu
hỏi theo ví dụ), nơi mô tả
mẫu hỏi. Mỗi cột thể hiện
một trường sẽ được sử Dưới đây ta xét nội dung của từng hàng.
dụng trong mẫu hỏi.  Field: Khai báo tên các trường được chọn. Đó là
các trường sẽ có mặt trong mẫu hỏi hoặc các
trường dùng để lọc, sắp xếp, kiểm tra giá trị...
 Table: Tên bảng chứa trường tương ứng.
 Sort: Xác định (các) trường cần sắp xếp.
 Show: Xác định (các) trường xuất hiện trong
mẫu hỏi.
 Criteria: Mô tả điều kiện để chọn các bản ghi
đưa vào mẫu hỏi. Các điều kiện được viết dưới
dạng biểu thức lôgic.
Khi đang ở chế độ thiết kế mẫu hỏi, ta có thể thực
hiện mẫu hỏi để xem kết quả bằng cách nháy

nút hoặc nút hoặc chọn lệnh


View/Datasheet View
Hoặc có thể tạo Querry
thông qua viết lệnh ở
môi trường dùng ngôn
ngữ SQL để truy xuất
thông tin

Save lại bảng đã querry


(Ctrl +S) để hiện querry
đã tạo vào bên cột trái

3. Các loại truy vấn


Truy vấn SELECT: là loại truy vấn
dùng trích - lọc - kết xuất dữ liệu từ
nhiều nguồn khác nhau từ CSDL ra một
bảng kết quả
Ví dụ:
• Đưa ra thông tin chi tiết bảng
lương tháng 8;
• Đưa ra danh sách cán bộ là
Đảng viên;
• Đưa ra thông tin chi tiết về các
hoá đơn bán ra trong ngày hôm Với truy vấn SELECT, sẽ làm như bước ở
nay .... mục trên, nhưng thêm thông tin ở Vùng
VD 1: tạo truy vấn và lọc ra: điều kiện lọc là hàng Criteria
Những người có chức vụ là “Trưởng
phòng”
Và Lương chính > 2.000.000

VD2: tạo truy vấn và lọc ra:


Những người là “Đảng viên”
Hoặc giới tính là “Nữ”
Một số ví dụ minh hoạ toán tử LIKE:

• Like ‘Nguyễn*’: lọc ra những người họ Nguyễn. 6 ký tự đầu là Nguyễn, các


ký tự còn lại là thoải mái;
• Like ‘*Đức*’: lọc ra những người có Họ hoặc Đệm hoặc Tên là Đức;
VD3: tạo truy vấn và lọc ra những • Like ‘*/*/1980’: lọc ra những người sinh năm 1980;
• Like ‘*/11/*’: lọc ra những người sinh tháng 11;
người có tên là “Lan” • Like ‘*/*/198?’: lọc ra những người sinh từ năm 1980 đến năm 1989;
VD4: tạo truy vấn và lọc ra những cán
bộ có lương từ 1.500.000 đến
2.500.000

VD5: tạo truy vấn và danh sách cán bộ


theo phòng, ban, thông tin phòng được
nhập sau từ bàn phím  muốn thiết lập
giá trị đặt lọc nào là tham biến ta làm
như sau: [Gõ một lời nhắc trong ngoặc
vuông] tại đúng vị trí tham số cần thiết
lập

Truy vấn TOTAL:


VD yêu cầu tạo bảng tổng hợp số cán
bộ theo chức vụ như sau:

Bảng này có thêm hàng Total

Sau khi tạo bảng query cơ bản, Chọn


Total query bằng nhấn nút trên thanh
công cụ hoặc phải chuột vào phần truy
vấn (query) chọn Totals
Thiết lập total cho trường thích hợp:
Truy vấn CROSSTAB:
VD yêu cầu tạo bảng truy vấn tổng hợp
có dạng như sau:

Row heading: tiêu đề các dòng, có chứa các


giá trị của trường nào đó làm tiêu chí thống
kê. Mỗi query Crosstab phải có tối thiểu 1
trường làm row heading
Sau khi tạo bảng Query select cơ bản,
Column heading: tiêu đề cột, có chứa các
Chọn Crosstab từ Design/ Crosstab
giá trị của trường nào đó làm tiêu chí thống
kê. Mỗi query Crosstab chỉ có duy nhất 1
trường làm column heading
Value: vùng dữ liệu tổng hợp

Truy vấn Delete: Sau khi tạo bảng Query select cơ bản, Chọn
Để xóa các bản ghi từ CSDL thỏa mãn Delete từ Design/ Delete
đk nào đó. VD: tạo Delete query để xóa
đi những cán bộ đến tuổi nghỉ hưu
(Nam >=65; Nữ >=55) ra khỏi CSDL
quản lý lương cán bộ

Truy vấn UPDATE B1: Thêm trường LuongChinh vào bảng


Để cập nhật dữ liệu một số trường nào CanBo
đó trong CSDL. VD: sử dụng Update B2: Từ Truy vấn Select chuyển thành
query để tính giá trị cho cột Query từ mục Design/ Update query
LuongChinh là một trường mới được
thêm vào bảng Canbo

Tạo bảng truy vấn (make table) dùng Mở bảng truy vấn vừa tạo ở chế độ Design
lưu kết quả một query tại một thời View  Ra lệnh tạo Make table từ Menu
điểm nào đó Design/ Make Table; sau đó Run thì nó sẽ
chuyển bảng query vừa tạo lên thành bảng
ở Tables
Bài tập 5: Xây dựng CSDL Quản lý lương cán bộ một cơ quan có cấu trúc như sau:

Yêu cầu:
1. Tạo cấu trúc bảng
- Thiết kế cấu trúc các bảng một cách phù hợp: kiểu dữ liệu các trường; trường khoá; thuộc
tính Lookup và các thuộc tính khác;
- Thiết lập quan hệ cùng các thuộc tính đảm bảo toàn vẹn dữ liệu cho các quan hệ;
- Nhập dữ liệu như sau: 4 phòng ban; 5 loại chức vụ; 20 hồ sơ cán bộ.
2. Thực hiện trên CSDL Quản lý lương cán bộ các yêu cầu:
Hãy tính và in ra bảng lương của cơ quan bao gồm các thông tin: Hoten, ngaysinh,
tenchucvu, tenphongban, luongchinh, phucapcv, dangphi, congdoanphi, thuclinh.
Trong đó:
Luongchinh = hesoluong * 290.000 (Thêm trường Luongchinh vào Bảng Cán bộ)
Dangphi = 20.000 (Nếu là Đảng viên)
Congdoanphi = 5%Luongchinh (nếu là công đoàn viên)
3. Thực hiện trên CSDL Quản lý lương cán bộ các yêu cầu:
- Hãy đưa ra danh sách các cán bộ là Đảng viên mà chưa vào công đoàn;
- Hãy lọc ra danh sách cán bộ của một phòng ban nào đó, tên phòng ban được nhập từ bàn
phím khi query được kích hoạt
- Hãy lọc ra danh sách cán bộ là Đảng viên và có thực lĩnh lớn hơn một số nào đó được
nhập từ bàn phím khi query được kích hoạt

Gợi ý:
1. Tạo cấu trúc bảng
+ Bảng phòng ban

Field name Data type Description Field properties


PhongBanID AutoNumber Field size: long integer
TenPhongBan Short text Field size: 255
+ Bảng chức vụ

Field name Data type Description Field properties


ChucVuID AutoNumber Field size: long integer
TenChucVu Short text Field size: 255
PhuCapCV Number Field size: long integer

+ Bảng cán bộ

You might also like