1. Trang chủ
  2. » Giáo án - Bài giảng

Giáo trinh tin học - Truy vấn dữ liệu

23 662 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 253,33 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Giới thiệu Lý thuyết 18 Tiết - Thực hiện các truy vấn bằng ngôn ngữ SQL ƒ Ý nghĩa sử dụng của các loại truy vấn ƒ Cú pháp SQL của từng loại - Công cụ hỗ trợ tạo truy vấn của Microsoft

Trang 1

Bài 3

Truy vấn dữ liệu

Nội dung

Tổng quan về truy vấn dữ liệu 3

Thực hiện truy vấn bằng ngôn ngữ SQL 5

Giới thiệu công cụ truy vấn bằng QBE 15

Tham số trong truy vấn 20

Bài tập 23

Trang 2

Giới thiệu

Lý thuyết

18 Tiết

- Thực hiện các truy vấn bằng ngôn ngữ SQL

ƒ Ý nghĩa sử dụng của các loại truy vấn

ƒ Cú pháp SQL của từng loại

- Công cụ hỗ trợ tạo truy vấn của Microsoft Access: QBE

- Tham số của truy vấn

Thực hành

36 Tiết - Sử dụng ngôn ngữ SQL và công cụ QBE để tạo các truy vấn

ƒ Truy vấn chọn dữ liệu

ƒ Truy vấn tạo bảng

ƒ Truy vấn thêm dữ liệu

ƒ Truy vấn xoá dữ liệu

ƒ Truy vấn cập nhật dữ liệu

ƒ Truy vấn thống kê

ƒ Truy vấn con

- Tạo truy vấn Crosstab bằng công cụ QBE

Trang 3

Tổng quan về truy vấn dữ liệu

Nội dung

Trình bày các dạng truy vấn

và ý nghĩa của từng dạng ƒ Phân loại truy vấn

ƒ Các công cụ tạo truy vấn trong Access

Sau khi tạo các bảng và lưu trữ dữ liệu trong bảng, người quản lý dữ liệu cần thực hiện những thao tác liên quan đến nguồn dữ liệu đang được lưu trữ trong bảng Các thao tác thông thường trên nguồn dữ liệu là tìm kiếm thông tin, cập nhật nguồn dữ liệu, hiển thị dữ liệu ở những dạng khác nhau, … Để thực hiện được những thao tác đó, trong môi trường của hệ quản trị cơ sở dữ liệu ta sẽ sử dụng ngôn ngữ truy vấn có cấu trúc (SQL) để tạo ra những câu truy vấn thao tác trên dữ liệu

Các truy vấn được tạo trong môi trường của Access gọi là Query Ta có thể tạo Query bằng 2 cách: viết trực tiếp trong cửa sổ viết lệnh SQL hay là tạo bằng công cụ hỗ trợ QBE của Access

Các loại truy vấn

Truy vấn chọn lựa (Select Query)

Loại truy vấn này chỉ mang tính chất cung cấp thông tin đã được lưu trữ trong bảng, không làm thay đổi dữ liệu của bảng Tập kết quả của truy vấn có thể được chọn lựa theo điều kiện cần xem thông tin, có thể tạo ra các cột tính toán hay thống kê dữ liệu trên bảng khi hiển thị

Tập dữ liệu của truy vấn hoàn toàn giống với những gì được lưu trong các bảng nhưng có thể hiển thị gọn gàng và chứa nhiều thông tin không

Ví dụ

Truy vấn tìm các NV Tổ 1

Trang 4

Truy vấn tạo bảng(Make-Table Query)

Loại truy vấn này hoàn toàn giống với Select Query về mặt cú pháp và tập dữ liệu kết quả Điểm khác biệt duy nhất ở chỗ tập kết quả của Make-Table Query là tạo ra một bảng mới chứa dữ liệu Bảng được tạo có cấu trúc và các mẫu tin giống với những field có trong câu lệnh SQL tạo ra truy vấn

Ví dụ

Truy vấn thêm dữ liệu (Append Query)

Thêm 1 hay nhiều dòng dữ liệu mới vào cuối một bảng Mỗi câu truy vấn chỉ dùng để thêm dữ liệu vào cho một bảng

Truy vấn cập nhật (Update Query)

Dùng để thực hiện việc sửa đổi giá trị các field của một hay nhiều bảng

Truy vấn xoá (Delete Query)

Thực hiện xoá 1 hay nhiều dòng dữ liệu của một bảng

Truy vấn thống kê dữ liệu (Crosstab Query)

Thực hiện các truy vấn có tính chất thống kê, tính toán và hiển thị dữ liệu theo dạng dòng và cột

Ví dụ Thống kê lương tháng theo tổ

Tạo bảng lương Tháng 7/2000

Trang 5

Thực hiện truy vấn bằng ngôn ngữ SQL

Nội dung

SQL là ngôn ngữ dùng để làm

việc với các CSDL Với SQL

chúng ta có thể thực hiện các

thao tác chọn dữ liệu hiển thị,

thêm, xoá dữ liệu có trong các

bảng, … Phần này sẽ trình bày

các dạng truy vấn và cách tạo

những truy vấn này bằng ngôn

ngữ SQL

ƒ Cách tạo

ƒ Truy vấn chọn dữ liệu

ƒ Các toán tử và một số hàm thông dụng

ƒ Truy vấn tạo bảng

ƒ Truy vấn thêm dữ liệu

ƒ Truy vấn cập nhật dữ liệu

ƒ Truy vấn xoá

Cách tạo chung

Như đã trình bày ở phần trên, có nhiều dạng truy vấn với những tính năng khác nhau như truy vấn chọn dữ liệu, truy vấn thêm dữ liệu, … Các dạng truy vấn này sẽ được tạo ra bằng các lệnh SQL khác nhau nhưng các bước thực hiện với ngôn ngữ SQL thì hoàn toàn giống nhau

ƒ Chọn thực đơn Insert Ỉ Query hoặc trên cửa sổ Database nhấn vào Queries và nhấn nút

New

ƒ Trên cửa sổ tiếp theo, chọn Design View

ƒ Đóng hộp thoại Show Table

ƒ Chọn thực đơn View Ỉ SQL View hoặc chọn trong biểu tượng đầu tiên trên thanh công cụ

Truy vấn chọn dữ liệu (Select Query)

Thực hiện chọn lựa hoặc rút trích dữ liệu trên một số cột của một hoặc nhiều bảng thoả điều kiện nào đó Có thể tạo ra các cột tính toán từ dữ liệu lưu trong bảng, nhóm dữ liệu trên các bảng có tính chất thống kê tổng hợp (Summary)

Dạng 1: Truy vấn dữ liệu từ 1 bảng

<n>

Biểu_thức : là tên field, hoặc 1 công thức tính toán Tên_cột : tiêu đề của biểu thức khi xem kết quả truy vấn Điều kiện : dùng để lọc dữ liệu, chỉ những mẫu tin nào thoả điều kiện mới được hiển thị trong tập kết quả

Ví dụ 1 Từ bảng SINHVIEN , hãy đưa ra các thông tin sau: mã sinh viên, họ tên, phái, năm

Trang 6

sinh, nơi sinh nhưng chỉ hiển thị những sinh viên có năm sinh < = 1977 và sắp xếp theo năm sinh giảm dần

SELECT masv, hosv & " " & tensv AS [Họ tên], nam AS [Phai], Year(ngaysinh) AS [Năm sinh], noisinh

FROM SINHVIEN WHERE Year(ngaysinh) <= 1977 ORDER BY Year(ngaysinh) DESC;

Ví dụ 2 Tạo truy vấn có yêu cầu giống với Ví dụ 1, nhưng chỉ đưa ra các sinh viên có năm

sinh lớn nhất và Phái là "Nam" nếu Nam=yes, ngược lại là "Nữ"

SELECT TOP 1 masv, [hosv] & " " & [tensv] AS [Họ tên], nam AS

[Phái], Year(ngaysinh)AS [Năm sinh], IIf(nam=yes, "Nam", "Nữ")

as [Phai],noisinh FROM SINHVIEN ORDER BY Year(ngaysinh) DESC;

Dạng 2: Truy vấn dữ liệu từ nhiều bảng

Cú pháp

lệnh SQL

SELECT [Tính chất] Biểu_thức 1[ AS tên_ cột1] , Biểu_thức 2 [AS

tên_cột 2] , …

FROM (Table1 [T1]<PHÉP NỐI> Table2 [T2] ON <ĐIỀU KIỆN NỐI>)

<PHÉP NỐI> Table3 [T3] ON <ĐIỀU KIỆN NỐI>

WHERE …Điều kiện………

ORDER BY Biểu_thức 1 [ASC/DESC] , Biểu_thức 2 [ASC/DESC] ; Mô tả PHÉP NỐI : là mối quan hệ giữa 2 bảng cần lấy dữ liệu, gồm các loại sau

ƒ INNER JOIN : Kết nối bằng, đưa ra dữ liệu chung cùng xuất hiện ở các bảng

ƒ LEFT JOIN : kết nối ưu tiên bảng bên trái, đưa ra tất cả thông tin ở bảng bên trái

ƒ RIGHT JOIN : kết nối ưu tiên bảng bên trái, đưa ra tất cả thông tin ở bảng bên trái

ĐIỀU KIỆN NỐI : là điều kiện kết nối giữa các bảng thông qua các field quan hệ T1, T2, T3 : bí danh của bảng trong trường hợp tên bảng quá dài

Ví dụ 1 Tạo truy vấn đưa ra các thông tin của các sinh viên học khoa Anh Văn, thông tin

gồm: mã sinh viên, họ tên, phái (thể hiện Nam, Nữ), tên khoa

SELECT masv, [hosv] & " " & [tensv] AS [Họ tên], IIf(nam=yes,

"Nam", "Nữ") as [Phái],tenkh AS [Tên khoa]

FROM SINHVIEN sv inner join KHOA k ON sv.makh=k.makh WHERE makh=”AV”;

Ví dụ 2 Tạo truy vấn đưa ra kết quả thi của những sinh viên của từng khoa, thông tin gồm:

Tên khoa, mã sinh viên, họ tên, tên môn, điểm Nhưng chỉ đưa ra những sinh viên Đậu (điểm >=5 )

SELECT tenkh as [Tên khoa], sv.masv, [hosv] & " " & [tensv] AS

[Họ tên], tenmh as [Tên môn], diem as Điểm FROM(SINHVIEN sv inner join KHOA k ON sv.makh=k.makh) inner join KETQUA kq ON sv.masv=kq.masv

WHERE diem >=5 ;

Trang 7

Dạng 3: Truy vấn thống kê dữ liệu của một bảng

Cú pháp

lệnh SQL

bt_thống_kê_2 [AS tên_cột 2] ,

FROM Tên_Table WHERE …Điều kiện…lọc dữ liệu…………

Mô tả Bt_thống_kê : là các biểu thức có sử dụng các hàm trong nhóm hàm tính toán

thống kê ( SUM, COUNT, MIN, MAX… )

Ví dụ 1 Tính tổng số sinh viên, tìm tuổi lớn nhất và nhỏ nhất của sinh viên, thông tin gồm:

Tổng số SV, Tuổi nhỏ nhất, Tuổi lớn nhất

SELECT Count(masv) AS [Tổng số SV], MIN(Year(Date())-Year(ngaysinh)) AS[Tuổi nhỏ nhất], MAX(Year(Date())-Year(ngaysinh)) AS [Tuổi lớn nhất]

FROM SINHVIEN

Dạng 4: Truy vấn dữ liệu có phân nhóm

Cú pháp

lệnh SQL

SELECT [Tính chất] Bt_1, Bt_2, Bt_thống_kê_ 1[ AS tên_ cột1] ,

Bt_thống_kê_2 [AS tên_cột 2] ,

FROM (Table1 [T1]<PHÉP NỐI> Table2 [T2] ON <ĐIỀU KIỆN NỐI>)

<PHÉP NỐI> Table3 [T3] ON <ĐIỀU KIỆN NỐI>

[WHERE …Điều kiện cho các biểu thức ] GROUP BY Biểu_thức_1, Biểu_thức_2 [HAVING …Điều kiện cho các biểu thức thống kê]

[ORDER BY .];

Mô tả Bt_? : có thể là field, có thể là các biểu thức có sử dụng các hàm thông

thường nhưng không được sử dụng các hàm thống kê

Bt_thống_kê_? : là các biểu thức có sử dụng các hàm trong nhóm hàm thống kê GROUP BY : phải nhóm tất cả các biểu thức không có sử dụng các hàm thống kê

HAVING : là điều kiện cho các biểu thức thống kê( hoặc các biểu thức khác)

Ví dụ 1 Tạo truy vấn tính tổng số sinh viên theo từng khoa, thông tin gồm : Mã khoa, Tên

khoa, Tổng số SV

SELECT sv.makh as [Mã khoa], tenkh as [Tên khoa], Count(masv) AS [Tổng số SV]

FROM SINHVIEN sv inner join KHOA k ON sv.makh=k.makh GROUP BY sv.makh, tenkh ;

Ví dụ 2 Giống Ví dụ 1, nhưng hãy đưa ra tất cả các khoa kể cả những khoa không có sinh

Trang 8

Các toán tử và một số hàm thông dụng

Các toán tử

ƒ +,-, *, / : Các phép toán thông thường

ƒ \ : chia lấy phần nguyên

ƒ Mod : chia lấy phần dư

ƒ & : toán tử nối chuỗi

ƒ =, >, >=, <, <=, <> : các phép so sánh

ƒ Like : so sánh gần đúng (áp dụng cho chuỗi)

ƒ And, Or, Not : các phép toán Logic

Nhóm hàm xử lý chuỗi

Hàm LEFT

Cú pháp LEFT(chuỗi, n ký tự )

Mô tả Hàm lấy n ký tự từ bên trái chuỗi

Hàm RIGHT

Cú pháp RIGHT(chuỗi, n ký tự)

Mô tả Hàm lấy n ký tự từ bên phải chuỗi

Hàm MID

Cú pháp MID(chuỗi, vị trí bắt đầu, n ký tự )

Mô tả Hàm lấy một chuỗi con có chiều dài n ký tự tại vị trí bắt đầu của chuỗi

Hàm TRIM

Cú pháp TRIM(chuỗi)

Mô tả Hàm dùng để bỏ những khoảng trắng ở bên trái và bên phải của chuỗi

Hàm RTRIM

Cú pháp RTRIM(chuỗi)

Mô tả Hàm dùng để bỏ những khoảng trắng ở bên phải của chuỗi

Hàm LTRIM

Cú pháp LTRIM(chuỗi)

Mô tả Hàm dùng để bỏ những khoảng trắng ở bên trái của chuỗi

Hàm UCASE

Cú pháp UCASE(chuỗi)

Mô tả Hàm chuyển đổi chữ thường thành chữ HOA

Trang 9

Hàm LCASE

Cú pháp LCASE(chuỗi)

Mô tả Hàm chuyển đổi chữ HOA thành chữ thường

Hàm điều kiện

Hàm IIF

Cú pháp IIF(Biểu thức điều kiện, Giá trị 1,Giá trị 2)

Mô tả Biểu thức điều kiện: là một biểu thức Logic, trả về giá trị TRUE/ FALSE

Giá trị 1: là giá trị trả về của hàm trong trường hợp biểu thức điều kiện đúng Giá trị 2: là giá trị trả về của hàm trong trường hợp biểu thức điều kiện sai

Nhóm hàm xử lý thời gian

Hàm DATE

Cú pháp DATE()

Mô tả Hàm trả về ngày/ tháng/năm hiện hành

Hàm DAY

Cú pháp DAY(Biểu thức ngày)

Mô tả Hàm trả về ngày trong biểu thức

Hàm MONTH

Cú pháp MONTH(Biểu thức ngày)

Mô tả Hàm trả về tháng trong biểu thức

Hàm YEAR

Cú pháp MONTH(Biểu thức ngày)

Mô tả Hàm trả về năm trong biểu thức

Nhóm hàm tính toán thống kê

Hàm COUNT

Cú pháp COUNT(biểu thức)

Mô tả Hàm thống kê đếm giá trị của biểu thức

Biểu thức có thể là một cột hoặc là 1 công thức

Trang 10

Hàm SUM

Cú pháp SUM (biểu thức)

Mô tả Hàm tính tổng của biểu thức

Biểu thức có thể là một cột hoặc là 1 công thứcHàm MIN

Cú pháp MIN (biểu thức)

Mô tả Hàm tìm giá trị nhỏ nhất của biểu thức

Biểu thức có thể là một cột hoặc là 1 công thứcHàm MAX

Cú pháp MAX (biểu thức)

Mô tả Hàm tìm giá trị lớn nhất của biểu thức

Biểu thức có thể là một cột hoặc là 1 công thứcHàm AVG

Cú pháp AVG (biểu thức)

Mô tả Hàm tính giá trị trung bình của biểu thức

Biểu thức có thể là một cột hoặc là 1 công thức

Truy vấn tạo bảng (Make-Table Query)

Thực hiện rút trích dữ liệu của một hoặc nhiều bảng khác nhau, sau đó sao chép kết quả thực hiện

ra 1 bảng khác có cấu trúc và dữ liệu là những field được chỉ định trong câu truy vấn

Cú pháp

lệnh SQL

SELECT [Tính chất] Bt_1, Bt_2, Bt_thống_kê_ 1[ AS tên_ cột1] ,

Bt_thống_kê_2 [AS tên_cột 2] ,

INTO Tên_Table_mới FROM (Table1 [T1]<PHÉP NỐI> Table2 [T2] ON <ĐIỀU KIỆN NỐI>)

<PHÉP NỐI> Table3 [T3] ON <ĐIỀU KIỆN NỐI>

[WHERE .]

[GROUP BY .]

[HAVING … ]

[ORDER BY .]

Mô tả INTO Tên_Table_Mới : tạo ra 1 bảng với tên cần sử dụng

Ví dụ 1 Từ bảng SINHVIEN hãy tạo ra bảng “SV co hoc bong” chứa tất cả thông tin của các

sinh có học bổng

SELECT * INTO [SV CO HOC BONG]

FROM SINHVIEN WHERE ISNULL(hocbong)=False;

Ví dụ 2 Hãy tạo ra bảng “Thong ke ket qua thi“ để thống kê kết quả thi theo môn kể cả

Trang 11

những môn không có SV thi, thông tin gồm : Mamon, Tenmh, Số SV đậu, Số SV rớt Biết rằng nếu điểm >= 5 thì Đậu, ngược lại là Rớt

SELECT mh.mamh, tenmh, SUM(IIF(diem>=5,1,0)) as [Số SV đậu],

SUM(IIF(diem<5,1,0)) as [Số SV rớt]

FROM MONHOC mh left join KETQUA kq ON mh.mamh=kq.mamh GROUP BY mh.mamh, tenmh;

Ghi chú Cú pháp của Make-Table Query hoàn toàn tương tự với Select Query, chỉ khác là sau khi

kết thúc mệnh đề SELECT ta có câu lệnh : INTO Tên_Table_mới

Truy vấn thêm dữ liệu (Append Query)

Thực hiện việc thêm dữ liệu vào cuối 1 bảng Dữ liệu thêm vào bảng có thể cung cấp trực tiếp hay lấy từ những bảng khác

Dạng 1: Thêm 1 dòng dữ liệu trực tiếp

Cú pháp

lệnh SQL

INSERT INTO Tên_Bảng( field1, field2,…….) VALUES ( giá trị 1, giá trị 2, )

Mô tả Tên_Bảng : tên của bảng được thêm dữ liệu

giá trị 1, giá trị 2, : các giá trị cần thêm tương ứng với field1, field2 ,… trong

bảng được thêm

Ví dụ Thêm 1 môn học mới vào bảng MONHOC với các giá trị sau: Mã môn học là 10,

Tên môn học là Cấu trúc dữ liệu

INSERT INTO MONHOC (mamh, tenmh) VALUES (‘10’, ‘Cấu trúc dữ liệu’);

Ghi chú Trật tự của các giá trị thêm vào bảng phải tương ứng với trình tự của các field được

liệt kê phía sau Tên_Bảng và phải đảm bảo đúng kiểu dữ liệu

Dạng 2: Thêm nhiều dòng, dữ liệu được lấy từ các bảng khác

Cú pháp

lệnh SQL

INSERT INTO Tên_Bảng_Đích ( field1, field2, ) SELECT [Tính chất] Bt_1, Bt_2,…

FROM (Table1 [T1]<PHÉP NỐI> Table2 [T2] ON <ĐIỀU KIỆN NỐI>)

<PHÉP NỐI> Table3 [T3] ON <ĐIỀU KIỆN NỐI>

[WHERE .]

[ORDER BY .]

Mô tả Tên_Bảng_Đích : là tên bảng được thêm dữ liệu

FROM : gồm các bảng nguồn dùng cho việc lấy dữ liệu Bt_? : có thể là các giá trị cụ thể, tên field hay được tạo thành từ công

Trang 12

thực tính toán giữa những field có trong các bảng dữ liệu nguồn

Ví dụ 1 Thêm vào bảng KETQUA danh sách các sinh viên có mã khoa là AV học môn có

mã số là “09” và điểm ban đầu là 0

INSERT INTO KETQUA (mamh, masv, diem) SELECT “09”, masv, 0

FROM SINHVIEN WHERE makh= ‘AV’ ;

Ghi chú Đối với dạng Thêm nhiều dòng dữ liệu được lấy từ các bảng nguồn, phần phía sau khi kết thúc mệnh đề INSERT INTO là 1 câu lệnh có cấu trúc hoàn toàn tương tự với Select Query và

thông tin chọn lọc ra phải tương ứng với các field cần thêm trong Bảng Đích

Truy vấn cập nhật dữ liệu (Update Query)

Thực hiện việc sửa đổi đồng loạt các giá trị cho các cột trên nhiều dòng khác nhau trong bảng

Cú pháp

lệnh SQL

UPDATE Bảng cập nhật

WHERE Điều kiện cập nhật Mô tả UPDATE: tên bảng cần cập nhật, nếu có nhiều bảng liên quan nhau khi cập nhật thì

mệnh đề này giống như mệnh đề From trong Select Query, đưa ra quan hệ giữa các bảng có liên quan đến việc cập nhật

SET : Cập nhật giá trị mới cho các field trên bảng dữ liệu WHERE : Chỉ cập nhật dòng dữ liệu thoả điều kiện

Ví dụ Tăng mức học bổng thêm 50000 đối với các sinh viên khoa Anh văn đã được cấp

học bổng

UPDATE SINHVIEN SET hocbong=hocbong+ 50000 WHERE makh=’AV’ and not IsNull(hocbong);

Ghi chú Nếu trong quan hệ Một-Nhiều, chúng ta chọn qui tắc ràng buộc tự động cập nhật các cột

quan hệ (Cascade Update Related Fields) thì khi sửa đổi dữ liệu bên nhánh Một, MS Access sẽ sửa

đổi theo giá trị mới bên nhánh Nhiều Ngược lại chúng ta không thể sửa đổi được dữ liệu bên nhánh Một nếu trong quan hệ chúng ta không chọn qui tắc ràng buộc tự động cập nhật các cột quan hệ

(Cascade Update Related Fields)

Ngày đăng: 12/06/2014, 09:40

HÌNH ẢNH LIÊN QUAN

Bảng được thêm - Giáo trinh tin học - Truy vấn dữ liệu
ng được thêm (Trang 11)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w