V b n ch t, select query là m t câu l nh có c u trúc nh sau: SELECT <Danh sách c t>
FROM <Danh sách b ng> WHERE < i u ki n>
[GROUP BY <Danh sách c t>] [ORDER BY <Danh sách c t>] ;
Câu l nh trên có th hi u nh sau: Ch n ra các c t mong mu n t các b ng d li u v i đi u ki n th a mãn đi u ki n ch n. N u t khóa tùy ch n GROUP BY đ c đ a vào thì d li u đ u ra s đ c nhóm theo danh sách các c t đ ng sau t khóa GROUP BY. N u t khóa tùy ch n ORDER BY đ c đ a vào thì d li u tr v s đ c s p x p theo các c t đ ng sau t khóa ORDER BY. Có hai ki u s p x p là t ng d n (Ascending) và gi m d n (Descending).
Ti p theo, chúng ta s xem xét c th các thành ph n trong câu l nh SQL:
- <Danh sách c t> là t t c các c t d li u trong m t hay nhi u b ng mà ta mu n Access l y ra. M i c t đ c vi t cách nhau b i d u ph y “,”. N u hai b ng có tr ng d li u cùng tên thì ph i ch rõ tên c t c a b ng nào b ng cách vi t <tên b ng>.<tên c t>. - <Danh sách b ng> là t t c các b ng mà ta mu n l y d li u ra. M i b ng đ c vi t cách
nhau b i m t d u ph y “,”. Ngoài ra, ta còn có th đ t l i tên b ng trong câu l nh đ vi c truy xu t đ n các tr ng trong t ng b ng đ c d h n b ng cách vi t <tên b ng> <tên m i> (Chú ý d u cách gi a).
- < i u ki n> th ng là các phép toán so sánh (>,<,=>,<=, =, <>), các phép toán logic (và - AND, ho c - OR) hay các phép toán t p h p (thu c - IN, n m gi a - BETWEEN) v.v. Nh v y, đ n đây chúng ta đã có th hi u đ c c u trúc c ng nh cách t o ra m t truy v n d ng l a ch n (select query). hi u rõ h n v truy v n này, chúng ta s xem xét ví d c th sau:
Có m t c s d li u qu n lý nhân s c a m t đ n v g m 2 b ng d li u. B ng th nh t là b ng “Phòng”, bao g m các tr ng: Mã Phòng, Tên Phòng. B ng th hai là b ng Nhân Viên, bao g m các tr ng: Mã nhân viên, Tên nhân viên, Gi i tính, Ngày sinh và Mã Phòng.
Yêu c u c a bài toán nh sau:
- L y ra các thông tin v Tên nhân viên, tên phòng c a t t c các nhân viên trong công ty có gi i tính là Nam.
- L y ra các thông tin v Tên nhân viên, tên phòng c a t t c các nhân viên trong phòng T ng h p có ngày sinh t 1/1/1950 đ n 31/12/1970.
Ta ti n hành t o các truy v n nh sau:
Gi s đã có c s d li u nh trên và trong các b ng đã có d li u. Kh i đ ng Access và m c s d li u đó ra.
phía bên trái màn hình, trong h p ch n đ i t ng, ch n Query. Có 2 cách đ có th t o m i m t truy v n. Cách th nh t, nh p đúp chu t vào l a ch n “Create query in Design view” và cách th 2 là b m nút l nh New. Khi đó, Access s m m t c a s cho phép b t đ u t o m i m t truy v n theo cách nào:
Ch n Design view và b m OK. Khi đó, Access s m m t c a s “Show table” đ l a ch n các b ng mu n l y d li u ra (tùy thu c vào t ng bài toán). Tr l i v i yêu c u th nh t c a bài toán, ta th y yêu c u là “L y ra t t c thông tin v Tên nhân viên, tên phòng c a các nhân viên trong công ty có gi i tính là Nam”. Rõ ràng v i yêu c u nh th , chúng ta ph i l y d li u t c hai b ng Nhân viên và Phòng (vì Tên phòng ch xu t hi n trong b ng Phòng ch không có trong b ng Nhân viên). Vì v y, trong h p tho i “Show table”, ch n c 2 b ng b ng cách gi phím Shift và click chu t lên c 2 b ng r i b m nút l nh Add.
Khi đó, Access s m m t c a s cho phép thi t k truy v n:
yêu c u th nh t c a ví d , chúng ta mu n l y ra các tr ng: Tên nhân viên và tên phòng. Do đó, b ng Nhân viên, ch n tr ng TenNhanVien. b ng Phòng, ch n TenPhong. Ngoài ra, bài toán còn có yêu c u là ch l y ra thông tin v tên nhân viên và tên phòng c a nhân viên có gi i tính là Nam. Do đó, ta c ng ch n thêm tr ng GioiTinh trong b ng NhanVien. Khi đó truy v n c a ta đ c Access làm giúp nh sau:
n đây, n u ta d ng l i và “ch y” truy v n b ng cách click chu t vào nút l nh “Run”
trên thanh công c thì ta s nh n đ c k t qu nh sau:
Rõ ràng, đây là m t k t qu đúng v m t tính toán nh ng l i không đúng theo yêu c u đ t ra. ó là ta không mu n hi n th c t Gi i tính và nh ng nhân viên có gi i tính là n . Vì v y, đ s a l i truy v n cho đúng v i yêu c u c a bài toán, có th làm nh sau:
T menu h th ng, ch n View å Design view. Khi đó Access s m l i c a s thi t k truy v n nh trên:
Nh đã phân tích, truy v n hi n t i tr v k t qu th a m t c t là c t gi i tính. Do đó, đ b c t này đi (không hi n th k t qu đ u ra), ta c n b d u đánh d u c t Gi i tính trên dòng “Show” b ng cách nh p chu t vào ô ch n đó. Ý ngh a c a dòng “Show” đ c hi u nh sau: N u đ c ch n thì c t t ng ng s đ c hi n th k t qu đ u ra c a truy v n. Trong ví d này ta ch ch n 2 c t là Tên nhân viên và Tên phòng.
i u th 2 mà truy v n ch a đáp ng đ c là ch a l c đ c nh ng nhân viên có gi i tính là Nam. Do v y, ta ph i ti p t c s a l i truy v n. ý hàng “Criteria” (tiêu chu n). ây là đi u ki n l c mà Access cho phép ng i dùng đ a vào các đi u ki n l c d li u. ví d này ta mu n gi i tính là “Nam”, do đó c t Gi i tính, hàng Criteria ta thêm vào bi u th c = “Nam” đ Access hi u r ng ch ch n nh ng b n ghi có gi i tính là Nam. Khi đó, truy v n c a ta s nh sau:
Sau khi s a l i và ch y truy v n này, ta s đ c k t qu m i nh sau:
Rõ ràng k t qu này là t p con c a k t qu trong câu truy v n ban đ u. Nó ch ch a các b n ghi v i gi i tính c a nhân viên là “Nam” và không hi n th c t Gi i tính. Nh v y k t qu là đúng v i yêu c u c a bài toán.
Nh đã trình bày ph n đ u c a m c này, truy v n th c ch t là m t câu l nh SQL có c u trúc. xem truy v n ta v a t o đ c vi t d i d ng câu l nh SQL nh th nào, t menu View, ch n SQL view. Khi đó, ta s th y câu l nh SQL c a truy v n trên nh sau:
SELECT NhanVien.TenNhanVien, Phong.TenPhong
FROM Phong INNER JOIN NhanVien ON Phong.MaPhong = NhanVien.MaPhong WHERE (((NhanVien.GioiTinh)="Nam"));
ghi l i truy v n v a t o, b m vào bi u t ng “Save” trên thanh công c ho c ch n menu File > Save. Nh v y truy v n đã đ c l u tr trong c s d li u và có th đ c tái s d ng.
V i yêu c u th 2 c a bài toán là “L y ra t t c các thông tin v Tên nhân viên, tên phòng c a các nhân viên trong phòng T ng h p có ngày sinh t 1/1/1950 đ n 31/12/1970”, chúng ta s có query nh sau:
Trong ví d này, chúng ta s d ng toán t t p h p “BETWEEN” đ tìm nh ng ng i có ngày sinh n m gi a 1/1/1950 và 31/12/1970. ý r ng chúng ta s d ng ki u d li u ngày tháng theo chu n tháng/ngày/n m.
Ngoài ra, n u không bi t chính xác tên phòng, chúng ta có th s d ng toán t so sánh LIKE (g n gi ng) và các ký t đ i di n ?, *, % đ so sánh tên phòng trong ví d này và so sánh xâu ký t nói chung trong truy v n.