1. Trang chủ
  2. » Công Nghệ Thông Tin

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

15 71 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đ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 15
Dung lượng 1,84 MB

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

Nội dung

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 1

Go Screen Capture Trường ĐH Khoa Học Tự Nhiên Tp Hồ Chí Minh

TRUNG TÂM TIN HỌC

LTV MA NGUON MO’ PHP

Module 3 — Bai 3: Truy van trong CSDL MySQL

Nganh LT & CSDL

www.t3h.vn

Cong GUC

MediaFire

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 42

Trang 2

LTV 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ị

hoặc một danh sách các giá trị

LTV Mã nguồn mở PHP - Module 3

3

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 43

Cong GUC

MediaFire

Trang 3

Truy 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)

LTV Ma nguồn mở PHP - Module 3 4

Đến,

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

MAX(Trong_luong) FROM sua) apes aa

_Ml0004 EnfaPro 900

| MJ0005 EnfaPro A+ 900 VHM006 Dielac Alpha 900

VNM012 Dielac Mamma 900

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 44

Trang 4

Truy 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

| |

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

Ma khach hang | WHERE Ma_khach_ hang NOT IN kh001 -

(SELECT Ma_khach_hang Ma khach hang

LTV Mã nguồn mở PHP - Module 3 ae 7

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 45

Cong GUC

MediaFire

Trang 5

Truy 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ị

| |

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

e Lưu ý: thông thường các toán tử truy vẫn con được

sử dụng khi dùng truy vấn con trả về tập hợp các giá trị

e Quy tắc:

IN ® =ANY NOT IN & <>ALL

| |

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 46

Cong GUC

MediaFire

Trang 6

Truy 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

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

truy van con ma két qua tra vé la mét tap hợp trống hoặc có phần tử

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 47

Cong GUC

MediaFire

Trang 7

sess°

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

WHERE NOT EXISTS (SELECT * - kh005

WHERE khach_hang.Ma_khach_hang = eos

hoa_don.Ma_khach_hang) L kh008

đc:

ose

ee

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 48

Cong GIIC

MediaFire

Trang 8

Insert

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

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

HCM, Điện thoại: 8497625, Email:

phannam@yahoo.com

3Ig

15

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 49

Cong GIIC

MediaFire

Trang 9

Insert

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à

Danh sách các cột_ lấy dữ: liệu phải tương ứng nhau

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 50

Cong GUC MediaFire

Trang 10

f LTV Mã nguồn mở PHP - Module 3

9229

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

SELECT ct_hoadon.So_hoa_don, Ma_sua, So_luong,

Don_gia

FROM ct_hoadon INNER JOIN hoa_don ON

ct_hoadon.So_hoa_don = hoa_don.So_hoa_don

WHERE month(Ngay_HD) = 7 AND year(Ngay_hd)=2013

g32:

33°

ee

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 51

Cong GUC

MediaFire

Trang 11

Update

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)

Update

e Ví dụ: Cập nhật lại đơn giá cho sữa có tên là

‘Abbott Grow’ voi đơn giá mới là 95000vnđ

_ Đon gia

87000

Ỉ Ten | sua

Đơn giá cũ

UPDATE sua

SET Don_gia = 95000

WHERE Ten_sua = “Abbott Grow"

3Ig

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 52

Cong GIIC

x MediaFire

Trang 12

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

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

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

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

MediaFire

Trang 13

Update

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

Ma hoa đơn Ma sua So lượng Don gia

0001 VI84012 4 103500

UPDATE ct_hoadon D902 DL0001 2 41000

SET Don_ gia = (SELECT Don_ gia D001 DL0991 t2 41000

: 0003 AB0091 8 107000

FROM sua WHERE ct_hoadon.Ma_sua | a "

= sua.Ma_sua) D604 vraaor2 8 103800

D003 DL0006 13 — 11900

Dô04 AB0001 l§ 107000

D002 1430001 5 196000

0001 NTFOG2 8 45000

D004 AB0002 25 107000

eee eeoeo

eeeee

eeoee see®

eee

ee

LTV Ma nguon mở PHP - Module 3 25

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 54

Cong GUC

MediaFire

Trang 14

Delete

¬ 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

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

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

Ma_hang_sua FROM sua)

$333

eeee

cece eee

ee

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 56

Cong GMC

MediaFire

Ngày đăng: 11/01/2020, 20:31

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w