Bài giảng Lập trình viên mã nguồn mở PHP - Module 3, Bài 2: Truy vấn trong cơ sở dữ liệu MySQL
Truy vấn đơn giản
□Chọn ra dữ liệu của các cột có trong một bảng
• Cú pháp:
SELECT Danh_sách_các_cột
FROM Tên_bảng
•Với tên các cột trong danh_sách_các_cột phải chính xác
• Dùng * khi muốn lấy dữ liệu từ tất cả các cột trong bàng
Chọn ra dữ liệu của các cột có trong
một bảng Hiền thị thông tin của các hãng sữa có trong báng hangsua gồm có các cột như sau: mã hãng sữa, tên hãng
•Ví dụ
sữa, điện thoại
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình viên mã nguồn mở PHP - Module 3, Bài 2: Truy vấn trong cơ sở dữ liệu MySQL", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Lập trình viên mã nguồn mở PHP - Module 3, Bài 2: Truy vấn trong cơ sở dữ liệu MySQL
Trường ĐH Khoa Học Tự Nhiên Tp. Hồ Chí Minh [ỘJLÕ] TRUNG TÂM TIN HỌC LTV MÃ NGUỎN MỜ PHP Module 3 - Bài 2: Truy vấn trong CSDL MySQL -- SELECT Ngành LT & CSDL www.t3h.vn Truy vấn đơn giản □Chọn ra dữ liệu của các cột có trong một bảng Cú pháp: SELECT Danh_sách_các_cột FROM Tên_bảng •Với tên các cột trong danh_sách_các_cột phải chính xác Dùng * khi muốn lấy dữ liệu từ tất cả các cột trong bàng aa LTV Mã nguồn mờ PHP - Module 3 3 Truy vấn đơn giản □Chọn ra dữ liệu của các cột có trong một bảng Hiền thị thông tin của các hãng sữa có trong báng hangsua gồm có các cột như sau: mã hãng sữa, tên hãng •Ví dụ sữa, điện thoại SELECT Ma_hang_sua, Ma_hang_sua Ten_hang_sua Dienjhoai Ten_hang_sua VNM Vinamilk 8794561 FROM hang sua NTF Nutrfood 7895632 AB Abbott 8741258 Hiền thị tất cà các thông tin có DS Daisy 5789321 trong bàng hangsua DL Dutch Lady 7826451 SELECT * DM Dumex 6258943 FROM hang sua MJ Mead Jonhson 8741258 LTV Mã nguồn mờ PHP - Module 3 Sắp xếp □ ORDER BY Ma_hang_sua Ten_hang_sua Email AB Abbott abbott@ab com Liệt kè thông tin mã hãng sữa, tên hảng sữa và email, sắp tăng dần/ giảm dần theo tên hãng sữa DS Daisy daisy@ds com DM Dumex dumex@dm com DL Dutch Lady dutchlady@dl com SELECT Ma_hang_sua, Ten_hang_sua, Email MJ Mead Jonhson meadjohn@mj com NTF I Wood nutifood@ntf com FROM hang_sua VMM Vinamilk '.inamilk@vnm com ORDER BY Ten_hang_sua Ma_hang_sua Ten_hang_sua Email VNM Vinamilk wnamilkQ'mm com SELECT Ma hang sua, HTF Hutifood nutrfood@ntf com Ten_hang_sua, Email MJ Mead Jonhson mead)0hn@m| com FROM hang_sua DL Dutch Lady dutchlady@dl com DM Dumex dumex@dm com ORDER BY Ten_hang_sua DS Daisy daisy@ds com DESC AB Abbott abbott@ab com bd LTV Mã nguồn mờ PHP - Module 3 7 MC VMediaFire z II c MC Lọc theo mẩu tin MC ■ □WHERE Ma_sua Ten_sua Ma_hang_sua Don_gia AB0001 Gam Advance AB 107000 SELECT Ma_sua, Ten_sua, Ma_hang_sua, Don_gia AB0002 Gain IQ AB 107000 AB0003 Abbott Grow AB 87000 FROM sua AB0004 Abbott Grow School AB 87000 WHERE Ma hang sua = "AB" AB0005 Abbott Pedia Sure AB 146000 AB0006 Similac Meo Sure AB 145000 Ma_tua Tensua Trongjuong SELECT Ma_sua, Ten_sua, MJ0001 Enfa Mama A* 900 Trong luong MJ0002 EnfaLac 400 FROM sua MJ0003 EnfaGro<v 400 fAJ0004 EnfaPro 900 WHERE (Ten_sua LIKE MJ0005 EnfaPro A« 900 "“/oDielacVo" OR Ten_sua VTIM006 Dieiac Alpha 900 LIKE "%Enfa%") AND VTIM009 Dielac Canxi Premier 2000 400 Trongjuong IN(400, 500, 900) VIIM011 Dietac Sure 400 , VTIM012 Dieiac Mamma 900 ỊE?'O bd LTV Mã nguồn mờ PHP - Module 3 15 Truy vấn trên nhiều bảng □ Loại 1 Có thể sử dụng mệnh đề WHERE để liên kết dữ liệu của nhiều bảng trong truy vấn Cú pháp: SELECT Danh_sách_các_cột FROM Tên_bảng_1, Tên_bảng_2, ... WHERE Tên_bảng_1 -tên_cột = T ê n_b ả n g_2. tê n_cột [ORDER BY Tên_cột__sắp_xếp [DESC, ...]] IBO LTV Mã nguồn mờ PHP - Module 3 17 Truy vấn trên nhiều bảng □ Loại 2 Khi muốn liên kết các bảng có quan hệ với nhau để lấy ra dữ liệu chung —> kết hợp SELECT ... FROM với mệnh đề JOIN. (MC VMediaFire lift Khi sử dụng JOIN để nối các bảng cần phải lưu ý những bảng này phải có các cột liên hệ với nhau và thứ tự quan hệ được chỉ định giữa các bảng sẽ làm ảnh hưởng tới kết quả truy vấn. 19 LTV Mã nguồn mờ PHP - Module 3 Truy vấn trên nhiều bảng • Ví dụ: ■Trong ví dụ quản lý bán sữa, khi muốn in một hóa đơn bán sữa cho khách hàng, theo thiết kế sẽ có một sổ bảng liên quan đến nhau. ■ Nếu muốn biết các sản phẩm sữa được bán cho ai thì liên quan tới bảng khách hàng, khách hàng mua những sản phẩm gì thì liên quan tới bảng chi tiết hóa đơn, sữa được mua có tên là gì thì liên quan tới bảng sữa, ... ■Để tạo được các mối quan hệ này và truy xuất dữ liệu —> dùng JOIN để kết nối các bảng với nhau. 20 LTV Mã nguồn mờ PHP - Module 3 Truy vấn trên nhiều bảng □ Inner join Khi kết nối các bảng dùng INNER JOIN —* chỉ định việc so sánh giá trị trong các cột của các bảng là tương đương - dư liệu đều có ở cả hai bảng. Kết quả sau khi thực hiện câu lệnh,truy vấn kết hợp INNER JOIN là các mẩủ tin thỏã điều kiện quan hệ ở cả hai bảng Cú pháp: SELECT Danh_sách_các_cột FROM Tên_bảng INNER JOIN Tên bảng_liên_kết ON Điều_kiện_liên_kết [WHERE Điều_kiện_lọc] [ORDER BY Danh_sách_các_cột_sắp_xếp [DESC]] LTV Mã nguồn mờ PHP - Module 3 21 Truy vấn trên nhiều bảng □ Left join, right join Khi kết nối các bảng dùng LEFT|RIGHT JOIN —> chỉ định việc so sánh giá trị trong các cột của các bảng được ừu tiên cho, mối quan hệ bên nhánh trái I nhanh phẩi. Việc thay đổi thử tự ưu tiên này sẽ làm ảnh hưởng tơi kết quả truy v’ấn. Cú pháp: SELECT Danh_sách_các_cột FROM Tên_bảng LEFT|RIGHT JOIN Tên_bảng_liên_kết ON Điều_kiện_liên_kết [WHERE Đieu_kiện_lọc] [ORDER BY Danh_sách_các_cột_sắp_xếp [DESC]] 23 LTV Mã nguồn mờ PHP - Module 3 Truy vấn trên nhiều bảng □ Left join, right join • Ví dụ: Hiển thị danh sách tất cả các khách hàng hiện có trong bảng khách hàng và hóa đơn mua hàng trong bảng hóa đơn gồm: mã khách hàng, số hóa đơn, ngày hóa đơn. SELECT khach_hang.Ma_khach_hang, So_hoa_don, Ngay_hd FROM khach_hang LEFT JOIN hoa_don ON khach_hang.Ma_khach_hang = hoa don.Ma khach hang Ma khach hang So hoa don ỉlqav hd khoõl D001 2007-07-31 kh002 D002 2007-07-30 kh002 DOM 2007-08-11 kh003 D003 2007-08-10 kh004 NULL kh005 M/LZ. NULL kh006 NULL NULL kh008 NULL NULL LTV Mã nguồn mờ PHP - Module 3 24 Truy vấn trên nhiều bảng □ Mệnh đề liên kết dữ liệu nhiều bảng • CÚ pháp: SELECT Danh_sách_các_cột FROM Tên_bảng_1 INNER|LEFT|RIGHT JOIN Tên_bàng_2 ON Điều_kiện_liên_kết_bang_1_2 INNER|LEFT|RIGHT JOIN Tên_bảng_3 ON Điều_kiện_liên_kết... [WHERE Điều_kiện_lọc] [ORDER BY Danh_sách_các_cột_sắp_xếp [DESC]] LTV Mã nguồn mờ PHP - Module 3 25 MC Truy vấn có nhóm & hàm tính toán trên nhóm □Group by Câu lệnh SELECT ... FROM kết hợp với mệnh đề GROUP BY giúp nhóm dữ liệu của các dòng dữ liệu bên trong bảng và sử dụng thêm các hàm thống kê đi kèm đẻ tính toán dữ liệu có tính chất thống ké Cú pháp: SELECT Danh_sách_các_cột, Hàm_thống_kê [as tên] FROM Tên_bảng [WHERE Điều_kiện_lọc] GROUP BY Danh_sách_các_cột_nhóm_dữ_liệu [ORDER BY Tên_cột_sắp_xếp [DESC, ...]] LTV Mã nguồn mờ PHP - Module 3 Truy vấn có nhóm & hàm tính toán trên nhóm □Group by • Các hàm thống kê: ■AVG: hàm trả về giá trị trung bình theo nhóm trong câu lệnh truy vấn trên bảng COUNT: hàm trả về số lượng mẩu tin theo nhóm trong câu truy vấn trên bảng MIN: hàm trả về giá trị nhỏ nhất theo nhóm MAX: hàm trả về giá trị lớn nhất theo nhóm SUM: hàm trả về tổng các giá trị theo nhóm 2E 29 LTV Mã nguồn mờ PHP - Module 3 Truy vấn có nhóm & hàm tính toán trên nhóm □Group by • Ví dụ: Thống kê Số lượng sữa của mỗi hãng sữa, sắp xếp dữ liệu tăng dần theo số lượng sữa Ma_hang_sua Ten_hang_iua So_luong_»ua OS Daisy 2 MJ Mead Jonhson 5 AS Abbott 6 NĨF riutifood 7 01 Dutch Lady 11 VfJM Vinamilk 12 SELECT Hang_sua.Ma_hang_sua, Ten_hang_sua, COUNT(sua.Ma_sua) AS So_luong_sua FROM hang_sua INNER JOIN sua ON hang_sua.Ma_hang_sua = sua.Mahangsua GROUP BY Ma_hang_sua, Ten_hang_sua ORDER BY So_luong_sua 30 LTV Mã nguồn mờ PHP - Module 3 Truy vấn có nhóm & hàm tính toán trên nhóm □Group by • Ví dụ: Căn cứ vào bảng chi tiết hóa đơn để thống kê tổng số tiền của mỗi hóa đơn, sắp xếp dữ liệu tãng dần theo tổng sổ tiền SELECT So_hoa_don, Sum(So_luong*Donjgia) as Tong_so_tien FROM ct_hoadon GROUP BY (So_hoa_don) ORDER BY Sum(So luong*Don gia]T Sohoadon Tongsotien D001 1480000 D002 1656000 D003 2484500 D004 5573000 fl □a LTV Mã nguồn mờ PHP - Module 3 31 MC Lọc theo nhóm ■ □HAVING Câu lệnh SELECT ... FROM kết hợp với mệnh đề HAVING giúp lọc lại dữ liệu sau khi đã gom nhóm dữ liệu bằng mệnh đề GROUP BY Cú pháp: SELECT Danh_sách_các_cột, Hàm_thống_kê [as tên] FROM Tên_bảng [WHERE ĐiềU—kiệnlọc] GROUP BY Danh_sách_các_cột_nhóm_dữ_liệu HAVING Điều_kiện_lọc_sau_khi_nhóm MC [ORDER BY Tên_cột_sắp_xếp [DESC, ...]] M LTV Mã nguồn mờ PHP - Module 3 33 Lọc theo nhóm ■ □ HAVING •Ví dụ: Thống kê số lượng sữa của mỗi hãng sữa, sao cho chỉ lọc ra những hãng sữa có số lượng sữa >5 LTV Mã nguồn mờ PHP - Module 3 34
File đính kèm:
- bai_giang_lap_trinh_vien_ma_nguon_mo_php_module_3_bai_2_truy.docx
- ttth_dh_khtn2_6874_541349.pdf