TRUY VẤN (QUERY) I KHÁI NIỆM TRUY VẤN Truy vấn là một công cụ cho phép đặt câu hỏi với dữ liệu trong.

Download Report

Transcript TRUY VẤN (QUERY) I KHÁI NIỆM TRUY VẤN Truy vấn là một công cụ cho phép đặt câu hỏi với dữ liệu trong.

TRUY VẤN
(QUERY)
I KHÁI NIỆM TRUY VẤN
Truy vấn là một công cụ cho phép đặt câu hỏi với dữ
liệu trong bảng dữ liệu trong CSDL.
Ví dụ:
Cho 2 bảng dữ liệu:
KHOHANG (MAHANG, TENHANG, GIA)
BANHANG(MAHANG, TENKHACH, SOLUONG,
NGAYMUA).
Hãy hiển thị những khách hàng mua hàng trong
tháng 7 bao gồm các thông tin: MAHANG, TENHANG,
GIA, TENKHACH.
1. Các loại truy vấn trong Access
 Select Query : Truy vấn chọn
 Crosstab Query : Truy vấn tham khỏa chéo (Thể hiện
dòng và cột)
 Action Query : Truy vấn hành động gồm
 Truy vấn tạo bảng (make table Query )
 Truy vấn nối (append Query )
 Truy vấn cập nhật ( Update Query )
 Truy vấn xóa dữ liệu ( Delete Query )
SQL Query : Truy vấn được viết bởi ngôn ngữ SQL.
Pass throught Query : Gởi các lệnh đến một CSDL SQL
như Microsoft SQL server.
2. Sự cần thiết của truy vấn
sử dụng công cụ truy vấn thì có thể thực hiện được các yêu cầu sau:
Sự lựa chọn các trường cần thiết.
Lựa chọn những bản ghi.
Sắp xếp thứ tự các bản ghi.
Lấy dữ liệu chứa trên nhiều bảng khác nhau trong CSDL.
Thực hiện các phép tính.
Làm nguồn dữ liệu cho một biểu mẫu (Form), báo cáo
(report) hoặc một truy vấn khác (Query ).
Thay đổi dữ liệu trong bảng.
3. CÁC CHẾ ĐỘ HIỂN THỊ TRUY VẤN
Cửa sổ thiết kế truy vấn (Design view).
Màn hình truy vấn chứa hai phần, phần thứ nhất chứa các
bảng (hoặc truy vấn) tham gia truy vấn, phần thứ hai gọi là
vùng lưới QBE (Query By Example).
Cửa sổ hiển thị truy vấn (DataSheet view).
Sử dụng chế độ này để xem kết quả.
Cửa sổ lệnh SQL (SQL view).
Sử dụng chế độ này để xem mã lệnh của truy vấn đang tạo
4. CÁCH TẠO TRUY VẤN
Từ cửa sổ Database, click vào đối tượng Queries.
Chọn nút New.
Chọn Design View,
chọn OK
chọn các bảng tham gia vào
truy vấn và nhấn nút Add
Sao đó chọn close
Đưa các trường từ các bảng vào tham gia truy vần bằng cách kéo các
trường và thả vào hàng Field trong vùng lưới QBE.
Trong hàng Sort: Sắp
xếp dữ liệu (nếu có)
Trong hàng Criteria
đặt tiêu chuẩn (nếu có)
 Chú ý
•
Mỗi truy vấn có:
•
Tối đa là 32 bảng tham gia.
•
Tối đa là 255 trường.
•
Kích thước tối đa của bảng dữ liệu (do truy vấn tạo ra) là
1 gigabyte.
•
Số trường dùng làm khóa sắp xếp tối đa là 10.
•
Số truy vấn lồng nhau tối đa là 50 cấp.
•
Số ký tự tối đa trong ô của vùng lưới là 1024.
•
Số ký tự tối đa trong dòng lệnh SQL là 64000.
•
Số ký tự tối đa trong tham số là 255.
Xem kết quả của truy vấn.
Tại cửa sổ Database chọn tên truy vấn rồi chọn Open, hoặc trong khi thiết kế
truy vấn thực hiện lệnh View/datasheet View
Đổi tiêu đề cột trong truy vấn.
Đổi tên tiêu đề cột trong truy vấn mục đích là làm cho bảng kết xuất
dễ đọc hơn (Trừ khi đã quy định thuộc tính Caption).
•
•
•
Mở truy vấn ở chế độ Design View
Chọn vào bên trái ký tự đầu tiên của tên trường trong vùng lưới QBE
Gõ vào tên mới, theo sau là dấu 2 chấm (:).
Che dấu hay thể hiện các trường trong Dynaset
Tại hàng Show ứng với trường cần che dấu chúng ta không chọn mặt dù
nó vẫn tồn tại, vẫn tham gia truy vấn.
Mối quan hệ giữa thuộc tính của trường trong truy vấn và trong bảng
các trường trong truy vấn kế thừa tất cả các thuộc tính của trường
trong bảng làm nguồn dữ liệu.
Nếu không quy định lại trong truy vấn, các trường trong Dynaset hoặc
snapshot luôn kế thừa các thuộc tính của bảng làm nguồn dữ liệu.
Nếu thay đổi thiết kế trong bảng làm nguồn dữ liệu và thay đổi thuộc
tính của các trường thì thuộc tính này cũng được thay đổi trong truy
vấn.
Tuy nhiên, nếu quy định lại các thuộc tính cho các trường trong truy vấn
thì các thuộc tính của các trường trong bảng làm nguồn dữ liệu không
thay đổi.
II. THIẾT KẾ TRUY VẤN CHỌN (Select Query)
1. Định nghĩa truy vấn chọn
là loại truy vấn được chọn lựa, rút trích dữ liệu từ các bảng dữ liệu
thỏa mãn một hoặc nhiều điều kiện nào đó.
2. Lập phép chọn trong truy vấn
Chọn một nhóm các mẩu tin thỏa mãn một điều kiện nào đó
Phép toán
Ví dụ
Ý nghĩa
<
>
>=
<>
=
<#20/10/99#
>#10/10/98#
>= #05/05/90#
<>#01/01/99#
= #10/10/97#
Trước ngày 20/10/99
Sau ngày 10/10/98
Sau và trong ngày 05/05/90
Khác ngày 01/01/99
Trong ngày 10/10/97
Between .... and
...
Between #1/2/97# and #1/7/97#
Từ ngày 1/2/97 đến 1/7/97
Ví dụ:
Cho 2 bảng dữ liệu
1. Dslop(Malop, Tenlop, Nganh_hoc, khoahoc)
2. Dssv(Masv, malop, hotensv, ngaysinh, quequan, giotinh, hocbong)
Tạo một truy vấn để hiển thị danh sách những sinh viên có ngaysinh
trong khoảng thời gian từ 05/05/75 đến 05/05/79 bao gồm các trường:
Tenlop, Hotensv, Ngaysinh, nganh_hoc.
Trong hàng Criteria của trường Ngaysinh:
Between #05/05/75# and #05/05/79#
 Ký tự thay thế
Ký tự *
: Thay thế một nhóm ký tự bất kỳ.
Ký tự ?
: Thay thế 1 ký tự.
Ký tự [ ]
: Thay thế các ký tự trong ngoặc vuông.
Ký tự !
: Phủ định.
Ký tự -
: Từ ký tự đến ký tự.
Ví dụ
Cho 2 bảng dữ liệu:
1.
Dslop(Malop, Tenlop, Nganh_hoc, khoahoc)
2.
Dssv(Masv, malop, hotensv, ngaysinh, quequan, giotinh, hocbong)
Tạo một truy vấn để hiển thị danh sách những sinh viên có Tenlop bắt
đầu là "T" bao gồm các trường: Tenlop, Hotensv, Ngaysinh, nganh_hoc.
Trong hàng Criteria của trường Tenlop: Like "T*"
Chọn các bản ghi không phù hợp với một giá trị nào đó
Dùng toán tử Not
Ví dụ: Tạo một truy vấn để hiển thị danh sách những sinh viên có Tenlop
không bắt đầu là "T" bao gồm các trường: Tenlop, Hotensv, Ngaysinh,
nganh_hoc.
Trong hàng Criteria của trường Tenlop: NOT Like "T*"
Định nhiều tiêu chuẩn trong lựa chọn
Dùng phép “Và” và phép “Hoặc” trong một trường
Muốn quy định nhiều tiêu chuẩn trong cùng một trường, chúng ta phải
sử dụng toán tử AND (và ) cùng toán tử OR (hoặc).
Ví dụ: Tạo một truy vấn để hiển thị danh sách những sinh viên:
có Họ là "Nguyễn" và Tên "Thuỷ" bao gồm các trường: Tenlop,
Hotensv, Ngaysinh.
Tạo truy vấn chọn và đưa 2 bảng dslop và dssv vào tham gia truy vấn
Trong hàng Criteria của trường Hotensv : Like "Nguyễn *" and "* Thuỷ"
Chọn các bản ghi có chứa có giá trị
Phép toán
Ý nghĩa
IS NULL
Trường không chứa giá trị
IS NOT NULL
Trường có chứa giá trị
Ví dụ: Tạo một truy vấn để hiển thị danh sách những sinh viên không có học
bổng bao gồm các trường: Tenlop, Hotensv, hocbong
Trong hàng Criteria của trường hocbong: IS NULL
Chọn các bản ghi thuộc danh sách các giá trị nào đó
Chúng ta có thể sử dụng phép toán IN (Danh sách giá trị)
Ví dụ: Tạo một truy vấn để hiển thị danh sách những sinh viên: thuộc lớp "Tin
K23" hoặc "Tin K24" hoặc "Tin K25" bao gồm các trường: Tenlop, Hotensv,
hocbong.
Trong hàng Criteria của trường Tenlop: IN(“Tin k23”, “Tin k24”, “Tin K25”)
Tạo trường kiểu biểu thức
Ví dụ
Cho 2 bảng dữ liệu:
1. Dssv( Masv, hotensv, ngaysinh, quequan, gioitinh)
2. Dsdiem( Masv, mamon, diem_lan1, diem_lan2)
Tạo truy vấn để hiển thị các thông tin: Hotensv, mamon,
diem_lan1, diem_lan2, dtb, trong đó dtb=(diem_lan1+
diem_lan2*2)/3.
3. Phân nhóm dữ liệu( truy vấn nhóm)
Mục đích: phân dữ liệu thành từng nhóm để thực hiện một số
phép toán trên từng nhóm mẩu tin đó, như: tính tổng, tính giá trị
trung bình…
Cách thực hiện:
Chọn
Xuất hiện
Một số hàm thường được sử dụng trong truy vấn nhóm:
Phép toán
Ý nghĩa
Group by
Sum
Avg
Min
Max
Count
First
Last
Where
Expression
Phân nhóm dữ liệu
Tính tổng các giá trị của một trường
Tính giá trị trung bình của một trường
Tính giá trị nhỏ nhất của một trường
Tính giá trị lớn nhất của một trường
Đếm số giá trị khác rỗng có trong một trường
Giá trị của trường ở bản ghi đầu tiên trong bảng
Giá trị của trường ở bản ghi cuối cùng trong bảng
Giới hạn điều kiện khi tính tổng
Trường kiểu biếu thức
Tính tổng của tất cả các mẩu tin:
Dùng để đếm tổng số mẩu tin của một bảng dữ liệu
Ví dụ: tính tổng số môn học và tổng số tín chỉ của bảng
MONHOC trong CSDL SINHVIEN
1.
2.
3.
4.
5.
6.
Tạo truy vấn mới
Đưa bảng monhoc vào truy vấn
Chọn trường MSMH, SOTC vào lưới
Click nút  trên thanh công cụ
Trong ô total của MSMH chọn count
Trong ô total của SOTC chọn sum
Tính tổng trên một hoặc nhiều nhóm mẩu tin:
Chọn group by trên một hoặc nhiều trường, các trường còn lại
chọn sum hoặc count(tùy theo yêu cầu)
Ví dụ: tính tổng số sinh viên của từng lớp theo từng khoa trong CSDL SINHVIEN
1.
2.
3.
4.
5.
Tạo truy vấn mới
Đưa bảng các bảng vào truy vấn
Chọn trường vào lưới
Chọn Group by trên trường TENKHOA, TENLOP
Chọn count trên trường MSSV
Đặt điều kiện cho trường sau khi tính tổng / giới hạn trước khi tính tổng:
 Lập biểu thức điều kiện ngay trên dòng Criteria của cột được tính tổng
để giới hạn kết quả khi tính tổng(tính tổng trước, kiểm tra điều kiện sau)
 Để giới hạn những mẩu tin trước khi tính tổng; chọn “where” trên dòng
total và lập điều kiện trên dòng Criteria
Ví dụ: liệt kê các sinh viên theo yêu cầu sau:
1. Đăng ký 3 môn học trở lên
2. Trong niên khóa 2003-2004
•
•
•
•
•
•
•
Thực hiên:
Tạo truy vấn mới
Đưa bảng các bảng vào truy vấn
Chọn trường vào lưới
Chọn Group by trên trường MSSV, HOTEN,
Chọn count trên trường MSMH
Gỏ biểu thức điều kiện tại ô criteria MSMH
Chọn where trên dòng total của NIENKHOA
II. THIẾT KẾ TRUY VẤN CÓ THAM SỐ (PARAMETER QUERY)
Mổi lần thực thi truy vấn, người dùng phải truyền vào tham số
Điều kiện sẽ thay đổi theo tham số đó
Kết quả nhận được là khác nhau, tùy vào giá trị tham số
Cách thực hiện:
1. Tạo truy vấn mới
2. Đưa bảng các bảng vào truy vấn
3. Chọn trường vào lưới
4. Tại dòng field hoặc dòng criteria, nhập vào biểu thức có chứa tham số:
+ Tên tham số giữa 2 dấu “[ ]”, không được trùng với tên trường
+ Có thể tạo nhiều tham số



Ví dụ: Tạo query tìm thông tin của một sinh viên dựa vào MSSV
Quy định kiểu dữ liệu cho tham số:
1. Trên menu database chọn query/parameter
2. Khai báo tên tham số(không trùng với tên trường) và chọn kiểu dữ liệu
Ví dụ: Tạo query tìm thông tin của một sinh viên có năm sinh sau một ngày sinh
được nhập vào
Khai báo
tên biến &
kiểu dữ liệu
Nhập điều kiện vào dòng criteria
của cột ngày sinh, biến “ngay sinh”
đã được khai báo đặt trong dấu [].
Chọn
Kết quả thực hiện:
Nhập vào ngày
“20/12/1980”
Nếu nhập vào không đúng kiểu
dữ liệu thì sẽ nhận được thông
báo lổi
II. TRUY VẤN THAM CHIẾU CHÉO (CROSSTAB QUERY)
<> Dùng để tổng hợp dữ liệu có tính chất thống kê.
<> Chuyển các dòng dữ liệu trong bảng thành các cột.
Ví dụ: Thống kê điểm của sinh viên theo từng môn học mà sinh viên đó đăng ký
Hàng
Cột
1.Cấu trúc của tham chiếu chéo(crosstab):
Row heading(tiêu đề dòng): chứa
giá trị của trường nào đó cần
thống kê,phải có tổi thiểu 1
trường.
Column heading(tiêu đề cột): chứa
giá trị của trường nào đó cần thống
kê, chỉ có duy nhất 1 trường làm tiêu
đề cột
Value: vùng dữ liệu tổng hợp, chỉ có duy nhất 1 trường làm
value, trên đó có thể thực hiện được các phép toán: tính tổng,
trung bình, max, min…
2.Tạo tham chiếu chéo(crosstab) bằng wizard:
Từ cửa sổ queries,
chọn new,
xuất hiện hộp thoại
Chọn crosstab query
wizard
Chọn trường
làm tiêu đề
dòng
Chọn bảng dữ
liệu làm dữ liệu
nguồn cho truy
vấn
Tiếp theo:
Các phép toán
Chọn trường
làm tiêu đề
cột
Chọn trị số
muốn tính toán
Thêm cột tính
tổng các trị số
Đặt tên cho
query và kết
thúc
3.Tạo tham chiếu chéo(crosstab) bằng Design View:
Tạo truy vấn mới
Nhấp vào biểu tượng query type
và chọn crosstab query
Khi đó dưới lưới query xuất hiện
dòng Crosstab khi đó tiến hành
chọn cột nào cần làm tiêu đề cột,
dòng theo yêu cầu và thao tác
bình thường như với query
select(truy vấn chọn)
II. TRUY VẤN HÀNH ĐỘNG
Là loại truy vấn có thể làm thay đổi dữ liệu từ các bảng làm nguồn dữ liệu cho nó
Các loại truy vấn hành động:
1. Truy vấn tạo bảng:
•Tạo 1 bảng mới có cấu trúc hoặc cả dữ liệu lấy từ 1 hoặc nhiều bảng dữ liệu nguồn
•Dữ liệu trong bảng mới nầy là kết quả của truy vấn tại thời điểm thi hành câu truy vấn
Cách thực hiện
Tạo truy vấn mới
Đưa các bảng cần thiết vào
Chọn Make-table query
Chọn các trường đưa vào vùng lưới, nhập các điều kiện(nếu có)
Đặt tên cho
bảng sẽ được
tạo ra
2. Truy vấn xóa(delete query):
•Cho phép xóa một hoặc nhiều mẫu tin trong các bảng thỏa một điều kiện do ta qui định
•Dữ liệu bị xóa không thể phục hồi
Ví dụ: Tạo query xóa thông tin của sinh viên với mã số sinh viên được nhập vào.
Tạo truy vấn mới
Đưa các bảng cần thiết vào
Chọn Delete query
Trên dòng delete chọn:
+From: Chỉ ra cột bị xóa từ bảng nào
+where:Chỉ ra điều kiện xóa.
Chọn trường có dấu “ * ” trong bảng sinh viên
2. Truy vấn cập nhật(Update query):
•Cập nhật dữ liệu cho 1 loạt mẫu tin(record) 1 cách nhanh chóng chính xác.
Tạo truy vấn mới
Đưa các bảng cần thiết vào và các
trường liên quan vào lưới query
Chọn Update query
Trên dòng update to của mổi trường
nhập vào giá trị mới hay biểu thức
tính toán cho trường đó và đặt các
điều kiện cần thiết vào dòng criteria
Ví dụ: Tạo Query để tăng số tín chỉ của các môn tin
học dưới 3 tín chỉ lên 1 tín chỉ