Bài giảng Lập trình viên mã nguồn mở (Module 3) - Bài 3: Truy vấn trong CSDL MySQL - truy vấn con và cập nhật dữ liệu trình bày các nội dung chính sau: Truy vấn con trả về một giá trị, truy vấn con trả về danh sách các giá trị, giá trị trực tiếp, lệnh xóa dữ liệu. Mời các bạn cùng tham khảo để nắm nội dung chi tiết.
Trang 1Go Screen Capture Trường ĐH Khoa Học Tự Nhiên Tp Hồ Chí Minh
Trang 2LTV Mã nguồn mở PHP - Module 3 Truy vấn con Khái niệm
e Truy vấn con là một câu lệnh truy vấn SELECT được lồng vào các câu lệnh truy vấn khác nhằm
thực hiện các truy vấn tính toán phức tạp
e Lưu ý: khi dùng truy vấn con cần tuân theo các quy
tac
= Truy vấn con phải được đặt trong cặp ngoặc đơn ()
= Truy vấn con chỉ có thể tham chiếu đến 1 cột hoặc 1 biểu
thức
e Kết quả trả về của truy vấn con có thê là một giá trị
Trang 3Truy vấn con pc UTruy van con trả vê một giá trị
eLà truy vấn mà kết quả trả về của nó là một giá trị duy nhất
eVí dụ: hãy cho biết sản phẩm sữa nào có trọng lượng lớn nhất
= Tim trong lượng lớn nhất
SELECT MAX(Trong_ luong) MAX(Trong_luong) FROM sua 900 LTV Ma nguồn mở PHP - Module 3 4 Đến, Truy vấn con HH Lọc ra các sữa có trọng lượng bằng với trọng lượng lớn nhất này SELECT Ma sua, Ten_ sua, Trong_ luong
FROM sua TNNG Ey —— Trøng lưông
WHERE Trong_luong = (SELECT = Conxinex 900
Daisy Khong Đường 900
Trang 4Truy vấn con Truy vấn con trả về danh sách các giá trị eLà truy vấn con mà kết quả trả về là tập hợp các giá trị
e Toán tử IN hoặc NOT IN thường được dùng
trong trường hợp này vì nó so sánh một
phân tử có thuộc (hay không thuộc) tập hợp
các giá trị hay không | | @ LTV Ma nguon mo PHP - Module 3 Truy van con
e Ví dụ: Hãy cho biết các khách hàng nào chưa mua hàng (chưa có thông tin khách hàng trong bảng hóa đơn)
= Tim các khách hàng đã mua hàng
" Lọc ra những khách hàng chưa mua hàng
SELECT Ma khach_ hang | | SELECT Ma_khach_ hang FROM hoa_ don FROM khach_hang
Trang 5Truy vấn con
Làm việc với toán tử so sánh
e Các toán tử so sánh thường được sử dụng
trong truy vẫn con có thê là: >, >=, <, <=, =,
<>
eLưu ý: Thông thường các toán tử so sánh
được sử dụng khi dùng truy vấn con trả về một giá trị | | ở LTV Ma nguon mo PHP - Module 3 Truy van con
O Lam viéc với toán tử truy vấn con
e Các toán tử truy vấn con thường hay sử dụng là:
ANY, SOME, ALL, IN, NOT IN, EXISTS, NOT EXISTS
Trang 6Truy vấn con pc e Ví dụ: Viết lại câu lệnh truy vấn cho biết các khách hàng chưa mua hàng
SELECT Ma_khach_ hang "Ma | khach_hang | FROM khach_ hang _kh004 |
WHERE Ma_khach_hang <>ALL _kh005 |
(SELECT Ma_khach_hang _ kh006 | FROM hoa_ don) _kh008_ lÌ
LTV Mã nguồn mở PHP - Module 3 10
Truy vấn con 333°
ULam viéc voi toan tử truy vân con
eSử dụng từ khóa EXISTS hoặc NOT
EXISTS dé kiểm tra tính tồn tại (hay không
tồn tại) của dữ liệu
eSau EXISTS hoac NOT EXISTS la cau lệnh
Trang 7sess° k secs
Truy van con os:
eVí dụ: Tìm những khách hàng chưa mua hang theo cach dung NOT EXISTS
SELECT Ma_khach_hang _Ma khach_hang
FROM khach_ hang - kh004
WHERE NOT EXISTS (SELECT * - kh005
FROM hoa_ don kh0 06
Trang 8Insert
O Cau lénh INSERT INTO được dùng đề thêm
mới một hay nhiều dòng dữ liệu vào bên trong một bảng ¬ Có thê thêm vào bảng: e Giá trị trực tiếp e Dữ liệu lấy từ các bảng khác (GV demo cách thêm dữ liệu bằng GD đồ học cho HV) If ở LTV Ma nguon mo PHP - Module 3 14 Insert ñ Giá trị trực tiếp e Cú pháp: INSERT INTO Tén_bang [(Ds cac cét trong bang)] VALUES (Danh_sach_cac_gia_tri)
e Ví dụ: Thêm mới một khách hàng có các thông tin sau vào bảng khach_ hang:
» Mã khách hàng: kh00Q7, Họ tên: Phan Nam, Phái: 0 (nam), Địa chỉ: 12A — Pasteur — Q.1 — TP
Trang 9Insert
e\V/i du
INSERT INTO khach_hang(Ma_khach_hang,
Ten_khach_hang, Phai, Dia_chi, Dien_thoai, Email)
VALUES(“kh001”, “Phan Nam”, 0, “12A — Pasteur — Q.1 — TP
HCM”, “8497625”, “phannam@yahoo.com”)
INSERT INTO khach_hang
VALUES(“kh001”, “Phan Nam”, 0, “12A — Pasteur — Q.1 — TP HCM”, “8497625”, “phannam@yahoo.com”) LTV Mã nguồn mở PHP - Module 3 16 Insert
Q Lay dir liéu ttr cac bảng khác
e Bằng cách kết hợp giữa INSERT và SELECT
e Cú pháp:
INSERT INTO Tén_bang
[(Danh sách các cột cần thêm dữ liệu)] SELECT Danh_sách các cột lấy dữ liệu FROM Tên_ bảng_ nguồn
WHERE Điều kiện lọc dữ liệu
e Danh sách các cột cần thêm dữ: liệu và
Trang 10f LTV Mã nguồn mở PHP - Module 3 9229 Insert se
eVí dụ: Thêm vào bảng ct_hoadon_07_2013
(bảng chưa có dữ liệu) các chỉ tiết hóa đơn
bán sữa của tháng 07/2013
INSERT INTO ct_hoadon_07_2013
Trang 11Update
HGiá trị trực tiếp
e Dùng câu lệnh UPDATTE đề cập nhật giá trị
trực tiếp hay một biểu thức có giá trị trả về cho mẫu tin trong bảng
eCu pháp:
UPDATE Tên_ bảng
SET Tên_ cột = Giá trị (hoặc biểu thức) [ ]
WHERE Điều_ kiện cập nhật
(GV demo cách cập nhật dữ liệu bằng GD đồ học cho HV) H LTV Mã nguồn mở PHP - Module 3 20 Update e Ví dụ: Cập nhật lại đơn giá cho sữa có tên là
Trang 12Update esos
e\/i du: cap nhat lai đơn giá cho các sữa có
mã hãng sữa là “AB” với đơn giá mới = đơn
giá cũ + 5% UPDATE sua
len sua Øon gia Ma hạngsus | SET Don_gia = Don_ gia + Don_ gia
Gain Advance 107000 AB * 09.05
Gain 10 107000 AB
Abbott Grow 67000 AB WHERE Ma_hang_sua = "AB"
Abbott Grow School 87000 AB
Abbott Pedia Sue 146000 AB Ten sua Don gia Ma hang sua
9mlscNeoOme | 145008 AB Gamn Advance 112350 AB Đơn giá cũ oo —— — Bội
Đơn giá mới Abbott Grow School $1350 AB Abbott Pedia Sure 15300 AB
Similac Neo Sure 152250 AB
LTV Mã nguồn mở PHP - Module 3 22
Update esos
OLay dir liéu tir các bảng khác
eKét hop gitva UPDATE va SELECT dé lay dữ liệu từ bảng khác cập nhật vào bảng eCu pháp:
UPDATE Tén_bang
SET Tén_cét = (SELECT FROM WHERE .)
WHERE Điều kiện cập nhật
LTV Mã nguồn mở PHP - Module 3 23
Bản quyền © Trung Tâm Tin Học - Đại Học Khoa Học Tự Nhiên | Xuất bản bởi ®Cơng GMC Trang 53
Cong GUC
Trang 13Update bảng sữa
eVí dụ: Cột đơn giá trong bảng c†_hoadon
chưa có giá trị, hãy cập nhật đơn giá cho cột
này với giá trị được lấy từ cột đơn giá của
Trang 14Delete ¬ Lệnh xóa dữ liệu đơn giản e Cú pháp: DELETE FROM Tén_bang WHERE Diéu_kién_x6a e Vi du: Hay xoa khach hang co ma khach hang la “kh007” trong bảng khách hang DELETE FROM khach_hang WHERE Ma_khach_hang = ‘kh007’ Bản quyền © Trung Tâm Tin Học - Đại Học Khoa Học Tự Nhiên | Xuất bản bởi ®Cơng GMC Trang 55 LTV Mã nguồn mở PHP - Module 3 26 Delete se Lệnh xóa dữ liệu có điều kiện được lầy từ các bảng khác
e khi việc xóa phức tạp hơn vì có liên quan
tới các quy tắc ràng buộc dữ liệu —› kết hợp câu lénh DELETE voi SELECT
eCu phap:
DELETE FROM Tén_bang
WHERE Tén_cét toan_tuw (SELECT FROM WHERE
Trang 15đi Delete esos eVí dụ: xóa các hãng sữa không có sản phẩm sữa nào
DELETE FROM hang_ sua
WHERE Ma_hang_sua NOT IN (SELECT DISTINCT