Bài giảng Tin học cơ sở 3 bài 4: Query được biên soạn gồm các nội dung sau: khái niệm query; các loại query, các công cụ tạo query trong access; một số toán tử, lệnh và hàm trong SQL; Query tham số. Mời thầy cô và các em cùng tham khảo chi tiết bài giảng.
Trang 1• Find duplicate Query
• Find unmatched Query
• QUERY CÓ THAM SỐ
79
Quản trị Cơ sở dữ liệu với Access
Trang 2• Table & Relationship: Tổ chức, sắp xếp, lưu trữ dữ liệu
• Query: Cập nhật, kiểm tra, truy xuất, tổng hợp dữ liệu
• Công cụ cho phép thực hiện các thao tác trên cơ sở dữ
liệu như:
• Thêm, sửa, xóa dữ liệu
• Tạo table từ các table/query khác
• Tập hợp, tính toán, tổng hợp dữ liệu từ các table/query khác
• Query là nguồn dữ liệu cung cấp cho Report, Form
80
Quản trị Cơ sở dữ liệu với Access
Trang 31 Select Query (Truy vấn Chọn số liệu):
• Chọn cho hiển thị dữ liệu trên một hoặc nhiều tables
theo những điều kiện nào đó
• Ví dụ: Liệt kê kết quả thi môn THCSC của sinh viên lớp 10QTKD01
• Tính toán và hiển thị dữ liệu theo nhóm
• Ví dụ: Đếm số lượng sinh viên theo từng lớp
81
Quản trị Cơ sở dữ liệu với Access
Trang 42 CrossTab Query: (Truy vấn Tham chiếu chéo):
• Dùng để tính toán và hiển thị dữ liệu từ dạng dòng
thành dạng cột
• Dùng để lập bảng tổng hợp/phân tích số liệu
• Tính toán cho từng nhóm, mỗi nhóm thể hiện trên 1 dòng
• Phân tích giá trị tính được của mỗi nhóm theo các cột
• Ví dụ: Lập bảng kê số lượng sinh viên thi lần 2, học kỳ một cho từng lớp Yêu cầu thể hiện chi tiết số lượng dự thi từng môn
82
Quản trị Cơ sở dữ liệu với Access
Trang 53 Make-Table Query: (Truy vấn Tạo table):
• Cũng là một Select query nhưng sẽ có một table mới
được tạo ra để lưu kết quả truy vấn
• Dùng để cập nhật dữ liệu trong table Có thể kèm theo
điều kiện hoặc không
• Ví dụ: Cộng 1 điểm cho tất cả các sinh viên thi môn THCS3
83
Quản trị Cơ sở dữ liệu với Access
Trang 65 Append Query: (Truy vấn thêm dữ liệu):
• Dùng để thêm record từ table/query A vào table B Nếu table B có một field F nào đó mà A không có, thì field F
bên B nhận giá trị Null
• Dùng để xóa record khỏi table
• Ví dụ xóa khỏi table Sinhvien những records có MALOP =
’07QTKD01’
84
Quản trị Cơ sở dữ liệu với Access
Trang 77 Find Duplicate Query (Tìm dữ liệu trùng)
• Dùng để tìm những records có giá trị trùng nhau trên
những fields nào đó Thường dùng để làm sạch dữ liệu
• Ví dụ tìm những sinh viên trùng mã sinh viên
• Dùng để tìm những records có giá trị không hợp lệ
giữa hai tables trên một hoặc nhiều fields
• Ví dụ tìm những sinh viên có MALOP không có trong table Lop
• Hoặc tìm những records trong table Diem mà giá trị của field
MASV không có trong table Sinhvien
85
Quản trị Cơ sở dữ liệu với Access
Trang 8• Access cung cấp 3 công cụ tạo query là: Query Wizard, Môi
trường thiết kế với QBE (Design View) và Ngôn ngữ SQL
(SQL View)
• Việc chọn công cụ nào để tạo query là tùy theo:
• Phù hợp (hoặc dễ thực hiện) với loại query
• Thói quen, sở thích của người dùng
• Có khi ta dùng công cụ này để tạo trước, sau đó dùng công cụ khác
để chỉnh sửa
1 Dùng Query Wizard
• Query Wizard sẽ dẫn dắt ta khai báo từng bước để xây dựng một
query
• Query Wizard chỉ hỗ trợ một số loại query
• Ví dụ: Liệt kê danh sách sinh viên gồm các fields: Mã sinh viên, Họ,
Tên và Tên lớp
86
Quản trị Cơ sở dữ liệu với Access
Trang 9• Bước 1: Chọn tab Create sau đó click vào Query Wizard
87
Quản trị Cơ sở dữ liệu với Access
Trang 10• Bước 2: Chọn loại query muốn tạo, sau đó click OK
88
Quản trị Cơ sở dữ liệu với Access
Trang 11• Bước 3: Chọn dữ liệu cần truy xuất, sau đó click Next
89
Quản trị Cơ sở dữ liệu với Access
Chọn table và/hoặc query có
chứa dữ liệu cần truy xuất
Chọn fields cần truy xuất
Bạn có thể chọn nhiều hơn 1 table/query
Trang 12• Bước 4: Đặt tên cho query, sau đó click Finish
90
Quản trị Cơ sở dữ liệu với Access
Đặt tên cho query
Bạn muốn mở query hay chỉnh sửa lại thiết kế cho query
Trang 13• Query vừa tạo cho kết quả như sau:
91
Quản trị Cơ sở dữ liệu với Access
Trang 14• Ngoài việc hỗ trợ tạo các query đơn giản, Query Wizard còn là
công cụ giúp ta học cách thiết kế query cũng như học cách viết lệnh SQL
92
Quản trị Cơ sở dữ liệu với Access
Design View SQL View
Trang 152 Dùng Design View
• Design View là môi trường thiết kế query trực quan
• Gồm 2 phần: Phần thứ nhất chứa các tables tham gia
truy vấn và phần thứ 2 có dạng khung lưới gọi là QBE (Query By Example)
93
Quản trị Cơ sở dữ liệu với Access
Trang 16• Bước 1: Chọn tab Create, sau đó click vào Query Design
94
Quản trị Cơ sở dữ liệu với Access
Trang 17• Bước 2: Thêm các table/query tham gia vào query
95
Quản trị Cơ sở dữ liệu với Access
Trang 18• Bước 3: Khai báo các tùy chọn
• Trong hầu hết các ô trong lưới QBE đều có combo box để ta lựa chọn giá
trị mà không phải gõ vào
• Các ô trên dòng Field dùng để khai báo các fields cần truy xuất
• Các ô trên dòng Table dùng để khai báo các table ứng với field ở trên nó
• Các ô trên dòng Sort có các giá trị: Ascending, Descending và (not sorted)
96
Quản trị Cơ sở dữ liệu với Access
Trang 19• Bước 3: Khai báo các tùy chọn (tt)
97
Quản trị Cơ sở dữ liệu với Access
((Diem.DIEM)=0) AND ((Diem.HOCKY) In (1,2)))
OR
((Diem.DIEM)<5) AND ((Diem.HOCKY) In (1,2)))
Nguyên tắc kết hợp các ô điều kiện:
Các ô trên cùng một dòng được kết hợp nhau theo phép AND
Các ô khác dòng được kết hợp nhau theo phép OR
Trang 20• Xem kết quả: Chọn chế độ xem DataSheet View để xem thử kết quả
98
Quản trị Cơ sở dữ liệu với Access
Trang 213 Dùng ngôn ngữ SQL:
• Khi ta tạo query bằng Query Wizard hay trên Design
View, Access cũng tự sinh ra câu lệnh SQL tương ứng
99
Quản trị Cơ sở dữ liệu với Access
Trang 223 Dùng ngôn ngữ SQL: (tt)
• SQL
(Structured Query Language –
ngôn ngữ vấn tin có cấu trúc)
là ngôn ngữ dùng để viết các
query trong Access cũng như
trong hầu hết các hệ quản trị
cơ sở dữ liệu
• Ta có thể viết trực tiếp câu
lệnh SQL thông qua cửa sổ
SQL View
100
Quản trị Cơ sở dữ liệu với Access
Trang 241 Cú pháp cơ bản cho Select Query:
SELECT <danh sách fields, biểu thức, *> [AS <Caption>]
FROM <danh sách table>
[ WHERE <Điều kiện cho dữ liệu> ]
Trang 251 Cú pháp cơ bản cho Select Query: (tt)
• SELECT <danh sách fields, biểu thức, *> [AS <Caption>]
FROM <danh sách table>:
• Truy xuất những fields (hoặc biểu thức trên fields) nào
• Dấu * thể hiện tất cả các fields của table
• AS <Caption>: Hiển thị với tiêu đề là <caption> - Tùy chọn, nếu không đề cập thì tiêu đề mặc nhiên là thuộc tính Caption của field
• <danh sách table>: Các fields ở trên nằm trong các tables nào
• Vd1:
SELECT Sinhvien.MASV, Sinhvien.HO, Sinhvien.TEN FROM Sinhvien
• Vd2:
SELECT Sinhvien.HO + Sinhvien.TEN AS HoVaTen FROM Sinhvien
• Vd3: SELECT Sinhvien.*, Lop.TENLOP FROM Sinhvien, Lop
103
Quản trị Cơ sở dữ liệu với Access
Trang 261 Cú pháp cơ bản cho Select Query: (tt)
• [ WHERE <Điều kiện cho dữ liệu> ] : Chỉ những records thỏa
điều kiện mới được truy xuất
Trang 271 Cú pháp cơ bản cho Select Query: (tt)
• [ GROUP BY <ds fields>
[HAVING <ĐK cho nhóm> ] ]
• Gom nhóm số liệu theo field nào - Thường kèm theo cho các hàm tính toán số liệu theo nhóm như Sum (tính tổng), Average (tính trung bình cộng), Count (đếm số lượng)…)
• [HAVING <ĐK cho nhóm>]]: Đ.kiện hạn chế cho các dòng kết quả
• Vd1:
SELECT Sinhvien.MALOP, Count(*) AS [Số lượng SV] FROM Sinhvien
GROUP BY Sinhvien.MALOP
• Vd2:
SELECT Sinhvien.MALOP, Count(*) AS [Số lượng SV] FROM Sinhvien
WHERE Left(Sinhvien.MALOP,2)=‘10’ GROUP BY Sinhvien.MALOP
HAVING Count(*) >10
105
Quản trị Cơ sở dữ liệu với Access
Trang 281 Cú pháp cơ bản cho Select Query: (tt)
• [ ORDER BY <ds fields> [ASC/DESC] ]
• Sắp xếp dữ liệu theo fields nào
• ASC: Sắp tăng dần (mặc định); DESC: Sắp giảm dần
• Vd:
SELECT Diem.MASV, Diem.MAMH, Count(*) AS [Số lần thi],
Avg(Diem.DIEM) AS [Trung bình]
FROM Diem
GROUP BY Diem.MASV, Diem.MAMH
ORDER BY Diem.MASV, Diem.MAMH DESC
106
Quản trị Cơ sở dữ liệu với Access
Trang 302 Một số phép toán thường dùng: (tt)
• Các phép toán đặc biệt:
• Toán tử nối chuỗi & : ‘Microsoft’ & ‘-Access’ = ‘Microsoft-Access’
• Toán tử so sánh tương đối Like <pattern> :
• <pattern> (mẫu so sánh) là đó là một dãy ký tự bất kỳ, trong đó có các ký tự có ý nghĩa đặc biệt sau đây:
• ? đại diện cho một ký tự bất kỳ tại vị trí có dấu chấm hỏi
• * đại diện cho một dãy ký tự bất kỳ tại vị trí đó
• # đại diện cho các ký số
• [ <ký tự đầu> - <ký tự cuối> ] : Biểu diễn d.sách được phép cho 1 ký
Trang 312 Một số phép toán thường dùng: (tt)
• Các phép toán đặc biệt:
• Is Null/ Is Not Null: Kiểm tra giá trị của một field có phải là Null
hay không SELECT Sinhvien * FROM Sinhvien WHERE Sinhvien.TEN Is Not Null
• Between <giá trị 1> and <giá trị 2>: Lấy các giá trị thuộc đoạn
[giá trị 1, giá trị 2]
• Ví dụ:
• 1 Between 1 And 3 cho kết quả là True
• 3 Between 1 And 3 cho kết quả là True
• 3.1 Between 1 And 3 cho kết quả là False
109
Quản trị Cơ sở dữ liệu với Access
Trang 323 Một số hàm thường dùng:
• MIN: Trả về trị tối thiểu
• MAX: Trả ra trị tối đa SELECT MAX(Diem.DIEM) AS [Điểm lớn nhất], Min(Diem.DIEM) AS [Điểm nhỏ nhất] FROM Diem WHERE LEFT(Diem.MASV,2)='10‘
Trang 333 Một số hàm thường dùng: (tt)
• LEFT(<Chuỗi>,<n>): Cắt n ký tự bên trái của chuỗi
• RIGHT(<Chuỗi>,<n>): Cắt n ký tự bên phải của chuỗi
• MID(<Chuỗi>,<i>,<n>): Cắt n ký tự của chuỗi, bắt đầu tại vị trí i
• TRIM(<Chuỗi>): Cắt bỏ khoảng trắng ở 2 đầu chuỗi
• IIF(<Điều kiện>,<Giá trị 1>,<Giá trị 2>): Trả về giá trị 1 nếu
điều kiện đúng, ngược lại trả về giá trị 2
Trang 34• TẠO QUERY
• Phần này sẽ tìm hiểu cách tạo các loại query
• Vì ta đã tìm hiểu về các loại query và cách thức sử dụng các
công cụ tạo query rồi, nên ta sẽ tìm hiểu cách tạo query thông qua ví dụ
• Ta sẽ lần lượt tìm hiểu cách tạo các loại query sau:
7 Find duplicate Query
8 Find unmatched Query
112
Quản trị Cơ sở dữ liệu với Access
Trang 35• Ví dụ 1: In bảng điểm thi lần 2, học kỳ 1 của tất cả các sinh
viên Bảng điểm có dạng:
MÃ SV | HỌ | TÊN | MÃ MÔN HỌC | ĐIỂM
• Danh sách được sắp theo thứ tự tăng dần của Mã sinh
viên Trong cùng một mã sinh viên, thứ tự các môn học
cũng được sắp tăng dần
113
Quản trị Cơ sở dữ liệu với Access
Trang 36• 1 Phân tích yêu cầu:
• Các tables và fields cần truy xuất:
Diem.LAN, Diem.HOCKY, Diem.MASV, Sinhvien.HO, Sinhvien.TEN,
Trang 39• 2 Thực hiện bằng QBE:
• Bước 3: Thiết kế trên lưới QBE
• Các table.fields theo yêu cầu
• Sort: Diem.MASV ASC; Diem.MAMH ASC
• Show: Không hiển thị diem.LAN và Diem.HOCKY
• Criteria: Diem.LAN=1 AND Diem.HOCKY=1
• Không thêm điều kiện OR
117
Quản trị Cơ sở dữ liệu với Access
Trang 41• 2 Thực hiện bằng QBE:
• Câu lệnh SQL do Access sinh ra cho query trên như sau: (Xem ở cửa
sổ SQL View)
119
Quản trị Cơ sở dữ liệu với Access
Câu hỏi: Tại sao trong câu lệnh SQL này:
- Không có 2 fields Diem.LAN và Diem.HOCKY sau SELECT?
- Biểu thức INNER JOIN sau FROM do đâu mà có?
Trang 42• Select Query có kết nhóm (có GROUP BY)
• Ví dụ 2: Hãy thống kê số lượng sinh viên theo từng lớp
tham gia thi lần 2 học kỳ 1 Chỉ lấy những lớp có số lượng tham gia thi ít hơn 5 Bảng in ra có dạng:
MÃ LỚP | TÊN LỚP | SỐ LƯỢNG SV THI
• Danh sách được sắp theo thứ tự giảm dần của SỐ LƯỢNG
SV THI, sau đó là thứ tự tăng dần của Mã lớp
120
Quản trị Cơ sở dữ liệu với Access
Trang 43• 1 Phân tích yêu cầu:
• Các tables và fields cần truy xuất:
Lop.MALOP, Lop.TENLOP, Diem.LANTHI, Diem.HOCKY
• Gom nhóm theo: Lop.MALOP
• Điều kiện trên dữ liệu:
Trang 47• 2 Thực hiện bằng QBE:
• Bước 4: Thiết kế trên lưới QBE
• Các table.fields theo yêu cầu
• Sort: Diem.MASV ASC; Diem.MAMH ASC
• Show: Chỉ hiển thị Lop.MALOP, Lop.TENLOP và [Số lượng SV
thi]
• Criteria:
• WHERE: Diem.LAN=1 AND Diem.HOCKY=1
• HAVING: [Số lượng SV thi]
125
Quản trị Cơ sở dữ liệu với Access
- Khi tạo query kết nhóm ta cần đặt cột nhóm dữ liệu đứng ở đầu các cột của lệnh Select
Trang 49• 2 Thực hiện bằng QBE:
• Câu lệnh SQL do Access sinh ra cho query trên như sau: (Xem ở cửa
sổ SQL View)
127
Quản trị Cơ sở dữ liệu với Access
- Thứ tự các cột được chỉ định trong mệnh đề SELECT phải
như thứ tự các cột chỉ định trong mệnh đề GROUP BY
Trang 50• Ví dụ: Lập bảng kê số lượng sinh viên thi lần 2, học kỳ một
cho từng lớp Yêu cầu thể hiện chi tiết số lượng dự thi
từng môn từng môn theo dạng:
Mã Lớp | Tên Lớp | SLSV thi | Môn 1 | Môn 2 |
128
Quản trị Cơ sở dữ liệu với Access
Trang 57• Ví dụ: Lập danh sách các sinh viên họ Nguyễn, thi học kỳ 1
hoặc học kỳ 2, lần 1 được 0 điểm hoặc thi lần 2 <5 điểm
Lưu danh sách vào table mới với tên là New-Table
Trang 58• 3 Nhập tên table mới để chứa kết quả
• Nếu Table mới nằm ở một Database khác thì chọn Another
Trang 59• 4 Click nút lệnh Run để chạy query
137
Quản trị Cơ sở dữ liệu với Access
Trang 60• Xem nội dung của table mới tạo ra:
138
Quản trị Cơ sở dữ liệu với Access
Trang 61• Câu lệnh SQL của query:
139
Quản trị Cơ sở dữ liệu với Access
Trang 62• Ví dụ: Nâng lên thành 5 điểm cho những sinh viên thi lần 2,
học kỳ 2 mà kết quả được 4 điểm
• Cách thực hiện:
• 1 Tạo Select Query lấy dữ liệu thỏa yêu cầu (tham khảo
cách tạo Select Query ở phần trước)
• Xem thử kết quả của Select Query:
140
Quản trị Cơ sở dữ liệu với Access
Trang 63• 2 Trên màn hình Design View, click vào nút lệnh Update
141
Quản trị Cơ sở dữ liệu với Access
Trang 64• 3 Trên lưới QBE, tại dòng Update To của cột DIEM, ta nhập
số 5 là giá trị mới cần update
• Lúc này nếu ta xem ở chế độ DataSheet View, ta vẫn thấy
giá trị cũ Muốn giá trị mới được update, ta phải click nút Run
142
Quản trị Cơ sở dữ liệu với Access
Trang 65• 4 Click nút lệnh Run để chạy query Click Yes để update
• Nếu xem lại ở chế độ DataSheet View, ta không còn thấy những
records thỏa điều kiện nữa
143
Quản trị Cơ sở dữ liệu với Access
Trang 66• Câu lệnh SQL tương ứng với query trên như sau:
144
Quản trị Cơ sở dữ liệu với Access
Trang 67• Ví dụ: Lập danh sách các sinh viên họ Lê, thi học kỳ 1 hoặc
học kỳ 2, lần 1 0 điểm hoặc thi lần 2 <5 điểm Ghép danh
sách vào table New-Table đã có
Trang 68• 3 Chọn table đã có để ghép kết quả vào
• Nếu Table đã có nằm ở một Database khác thì chọn Another
Trang 69• 4 Chọn fields cần append trên dòng Append To ở lưới QBE
147
Quản trị Cơ sở dữ liệu với Access
Trang 70• 5 Click nút lệnh Run để chạy query Click Yes để đồng ý
148
Quản trị Cơ sở dữ liệu với Access
Trang 71• Xem nội dung của table New-Table:
149
Quản trị Cơ sở dữ liệu với Access
3 records mới được thêm vào
Trang 72• Câu lệnh SQL của query:
150
Quản trị Cơ sở dữ liệu với Access
Trang 73• Ví dụ: Xóa khỏi table New-Table những sinh viên đạt 4
Trang 74• 2 Trong chế độ Design View, click nút lệnh Delete
152
Quản trị Cơ sở dữ liệu với Access
Trang 75• 3 Click nút lệnh Run để chạy query:
• Thông báo: Bạn sắp xóa 4 dòng từ Table đã chỉ định – Một khi bạn
click Yes, bạn không thể dùng lệnh Undo Bạn có chắc chắn không?
• Nếu chắn chắn xóa click Yes để đồng ý
153
Quản trị Cơ sở dữ liệu với Access
Trang 76• Xem nội dung của table New-Table:
154
Quản trị Cơ sở dữ liệu với Access
Không còn những records như điều kiện
Trang 77• Câu lệnh SQL của query:
155
Quản trị Cơ sở dữ liệu với Access
Trang 78• Với Find Duplicate Query, ta dùng Query Wizard để thực
hiện sẽ thuận lợi hơn
• Ví dụ: Tìm những sinh viên có trùng mã sinh viên
• 1 Click nút lệnh Query Wizard
156
Quản trị Cơ sở dữ liệu với Access
Trang 79• 2 Chọn loại wizard là Find Duplicate Query Wizard Xong
click OK
157
Quản trị Cơ sở dữ liệu với Access
Trang 80• 3 Chọn Table cần lấy dữ liệu Click Next
158
Quản trị Cơ sở dữ liệu với Access