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

 

docx 26 trang kimcuc 6260
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

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:

  • docxbai_giang_lap_trinh_vien_ma_nguon_mo_php_module_3_bai_2_truy.docx
  • pdfttth_dh_khtn2_6874_541349.pdf