3.3.1.Cỏc SELECT query
a. Cỏch tạo
Select query 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 nay; - Đưa ra doanh thu bỏn hàng của một thỏng nào đú;
Tất cả những yờu cầu dạng như vậy (đưa ra một danh sỏch kết quả) đều cú thể sử dụng SELECT query để đỏp ứng. Mỗi yờu cầu xử lý dữ liệu cần phải tạo ra một Select query đỏp ứng; mỗi query sẽ cú một tờn gọi (như cỏch đặt tờn bảng dữ liệu); query sau khi đó tạo ra đều cú thể chỉnh sửa lại được cấu trỳc cũng như nội dung; qui trỡnh để đỏp ứng mỗi yờu cầu trờn như sau: tạo một query đỏp ứng được cỏc yờu cầu thi hành query đó tạo để thu nhận kết quả.
Tiếp theo là minh hoạ qui trỡnh cỏc bước để tạo một SELECT query đỏp ứng yờu cầu đơn giản nhất:
Từ CSDL Quản lý lương cỏn bộ, hóy đưa ra bảng lương cỏn bộ với những thụng tin sau: canboID, hoten, ngaysinh, tencv, luongchinh, phucapcv, thuclinh.
Trong đú: luongchinh = hesoluong * 290000 Thuclinh = luongchinh + phucapcv
Phõn tớch yờu cầu:
(1) Thụng tin yờu cầu đũi hỏi từ nhiều bảng khỏc nhau (bảng CANBO với cỏc cột: canboID, hoten, ngaysinh; bảng CHUCVU với cỏc cột tencv, phucapcv);
(2) Cú những cột thụng tin đó cú sẵn trờn CSDL (5 cột kể trờn) nhưng một số cột yờu cầu phải được tớnh bởi biểu thức: cột luongchinh và cột thuclinh.
Bước 1: Ra lệnh tạo một Select query mới bằng cỏch: kớch hoạt thẻ Queries, nhấn nỳt New, chọn Design View, nhấn OK (hỡnh 3.7):
Hỡnh 3.7
Hoặc nhấn đỳp chuột lờn biểu tượng Create query in Design view trờn màn hỡnh:
Hỡnh 3.8
Bước 2: Chọn những bảng cú chứa dữ liệu liờn quan lờn màn hỡnh thiết kế query từ cửa sổ Show Table (khụng thấy cửa sổ này nhấn nỳt Show table trờn thanh cụng cụ):
Hỡnh 3.9
Hóy chọn cỏc bảng cú liờn quan (bảng CANBO và bảng CHUCVU); chọn xong nhấn Add và nhấn Close. Khi đú màn hỡnh thiết kế query xuất hiện (hỡnh 3.10)
Bước 3: Khai bỏo những thụng tin cần thiết cho query:
Hỡnh 3.10
Dũng Field: là nơi khai bỏo danh sỏch cỏc thụng tin (cột dữ liệu) của bảng kết quả.
Cú 2 loại thụng tin bài toỏn yờu cầu: thụng tin cú sẵn từ cỏc trường trờn CSDL như canboID, hoten, tencv, phucapcv và thụng tin phải được tớnh theo một biểu thức nào đú như: luongchinh và thuclinh.
Muốn hiển thị trường (field) nào lờn query, chỉ việc nhấn đỳp chuột lờn tờn trường đú hoặc dựng chuột kộo tờn chỳng từ cỏc bảng lờn dũng Field. Hóy dựng phương phỏp này để đưa 4 trường canboID, hoten, ngaysinh và phucapcv lờn dũng
Field.
Với 2 cột luongchinh và thuclinh phải đưa vào query bằng cỏch tạo một cột mới với một tờn gọi <tờn cột> được tớnh bằng một <biểu thức> trờn dũng Field theo cỳ phỏp như sau:
Vớ dụ:
Luongchinh : hesoluong * 290000 đ t o thờm c t ể ạ ộ luongchinh mới
Thuclinh : luongchinh + phucapcv đ t o thờm c t ể ạ ộ thuclinh mới. Cuối cựng, màn hỡnh thiết kế query như hỡnh 3.11.
Hỡnh 3.11
Cú thể ghi query lại với một tờn gọi khi ra lệnh lưu Alt + S
(1) Kớch hoạt chỳng để lấy kết quả bằng cỏch: nhấn đỳp chuột lờn tờn query. Nếu đang trong chế độ thiết kế (Design view), nhấn nỳt View trờn thanh cụng cụ hoặc nhấn phải chuột lờn Query đang thiết kế chọn .
Bạn sẽ xem được kết quả trả về của query và cú thể thao tỏc bảng dữ liệu này như trờn một Table (xem hỡnh 3.12)
(2) Sửa lại được cấu trỳc thiết kế query khi chọn chỳng và nhấn nỳt Design.
Hỡnh 3.12
Bản chất của một SELECT query là cõu lệnh SQL cú dạng: SELECT …
FROM …
Một số thiết lập khỏc cho Query (xem hỡnh 3.11):
- Dũng Sort: để thiết lập thứ tự sắp xếp dữ liệu trờn Query. Muốn sắp xếp dữ liệu cho trường nào, thiết lập thuộc tớnh Sort cho trường ấy. Cú 2 giỏ trị cho thuộc tớnh Sort: Ascending - sắp xếp tăng dần và Descending - sắp xếp giảm dần. Trường nào đứng trước sẽ được thứ tự sắp xếp trước.
Chỳ ý: Cú 2 lỗi hay mắc phải trong quỏ trỡnh thiết kế query: - Lỗi gừ sai biểu thức:
Nguyờn nhõn gõy ra lỗi này là rất nhiều, cú thể liệt kờ ra đõy một số tỡnh huống:
Tỡnh huống 1: Cú thể một trong số tờn cỏc trường bạn gừ trong biểu thức cú chứa dấu cỏch hoặc cỏc ký tự đặc biệt. Vớ dụ: trường hesoluong của bạn là he so luong thỡ phải gừ như sau: [he so luong] – thờm dấu múc vuụng vào 2 đầu của tờn trường;
Tỡnh huống 2: Sai cỳ phỏp lụ gớc của biểu thức: do viết thừa hoặc thiếu cỏc toỏn tử, toỏn hạng, hoặc cỏc dấu mở đúng ngoặc khụng khớp…
Lỗi này xảy ra khi bạn đó gừ sai tờn trường. Tờn hiển thị trờn hộp thoại (phucap cv) mỏy tớnh khụng hiểu, cú thể tờn đỳng của trường này là phucapcv. Bạn phải lần tới biểu thức cú chứa tờn trờn và kiểm tra sửa cho đỳng với tờn trường cú trong CSDL. Lỗi này hay xảy ra khi thiết kế bảng đặt tờn cỏc trường cú chứa dấu cỏch! b. Lọc dữ liệu
Khỏc với bảng (Tables), cỏc Query cung cấp một khả năng lọc dữ liệu khỏ hoàn chỉnh; cú thể lọc ra những dữ liệu theo những điều kiện phức tạp hơn, đặc biệt cú thể chấp nhận những giỏ trị lọc là cỏc tham biến.
Để lọc dữ liệu, bạn phải thiết lập điều kiện đặt lọc lờn vựng Criteria của queries (trong chế độ đang thiết kế) (xem hỡnh 3.13)
Hỡnh 3.13
Cỏc điều kiện nằm trờn cựng một dũng Criteria sẽ được nối với nhau bởi toỏn tử AND (và); mỗi dũng Criteria sẽ được nối với nhau bởi toỏn tử OR (hoặc). Xột cỏc vớ dụ sau thực hiện lọc trờn query bảng lương vừa được tạo ra:
Vớ dụ 1: Lọc ra những cỏn bộ là trưởng phũng cú thực lĩnh<=1,000,000đ (Xem hỡnh 3.14)
Hỡnh 3.14
Vớ dụ 2: Lọc ra những cỏn bộ là Trưởng phũng mà khụng phải là Đảng viờn
Toỏn tử Like để biểu diễn những giỏ trị mang tớnh tương đối (cú thể chỉ giống một phần giỏ trị thực). Cỳ phỏp biểu diễn toỏn tử này như sau:
Like ‘<giỏ trị tươngđối>’
Trong <giỏ trị tương đối> cú thể chứa hằng (Nam) và cỏc ký tự đại diện. Cú 2 ký tự đại diện là:
- Ký tự * để biểu diễn bất kỳ giỏ trị nào; - Ký tự ? để biểu diễn một ký tự bất kỳ. 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; - Like ‘*/*/1980’ - lọc ra những người sinh năm 1980;
- Like ‘*/*/198?’ - lọc ra những người sinh từ năm 1980 đến năm 1989;
Vớ dụ 4: Lọc ra những cỏn bộ cú 2,000,000>= Thuclinh >=1,000,000:
Hóy gừ vào tờn phũng ban cần xem. Việc thiết lập tham số kiểu này khụng giới hạn trờn một query.
Bản chất của yờu cầu lọc dữ liệu thể hiện ở mệnh đề:… WHERE … trong cõu lệnh SQL.