Ngu ngơ học làm web (104) - mySQL – cập nhật dữ liệu

Tiếp theo của: Ngu ngơ học làm web (103) - mySQL – truy vấn con (sub query)
-----

Phần 104. mySQL – cập nhật dữ liệu


Xem và làm theo clip số 8 của thầy Nguyễn Anh Tuấn:

Cú pháp của lệnh UPDATE:

UPDATE <ten_bang>
SET ten_field = gia_tri, ten_field2 = gia_tri2
WHERE dieu_kien

Lưu ý: cẩn thận với các lệnh liên quan đến cập nhật dữ liệu, vì nó làm thay đổi giá trị của cơ sở dữ liệu.

Ví dụ,

1. Hãy cập nhật lại đơn giá cho món ăn có tên là Gà quay, giá mới là 60000 VNĐ.

UPDATE mon_an
SET don_gia = 60000
WHERE ten_mon = "Gà quay"

2. Hãy cập nhật lại đơn giá cho từng thực đơn là số tiền của các món ăn trong bảng mon_an.

UPDATE thuc_don td
SET don_gia = (SELECT sum(so_luong * don_gia) AS ThanhTien
FROM thuc_don_mon_an tdma INNER JOIN mon_an ma ON tdma.ma_mon = ma.ma_mon WHERE ma_thuc_don = td.ma_thuc_don ORDER BY 1)

3. Giảm 5% đơn giá cho hóa đơn có số hóa đơn là 2

UPDATE hoa_don
SET tong_tien = tong_tien * 0.95
WHERE ma_hoa_don = 2

4. Tạo thêm cột gia_tri cho bảng hoa_don, sau đó tính giá trị cho mỗi hóa đơn và cập nhật cho cột giá trị của bảng này.

UPDATE hoa_don hd
SET tri_gia = (SELECT sum(so_luong * don_gia) FROM chi_tiet_hoa_don WHERE ma_hoa_don = hd.ma_hoa_don)

Xem và làm theo clip số 9 của thầy Nguyễn Anh Tuấn:

Cú pháp của lệnh DELETE:

DELETE FROM <ten_bang>
WHERE dieu_kien

1. Xóa khách hàng có mã khách hàng là 5 trong bảng khach_hang

DELETE FROM khach_hang WHERE ma_khach_hang = 5

Lưu ý: nếu có thiết lập ràng buộc khóa ngoại giữa các bảng thì cần xóa các mẩu tin ở các bảng có liên quan trước.

2. Xóa các món ăn có loại món ăn là “Cơm”

DELETE m.* FROM mon_an m INNER JOIN loai_mon_an l ON m.ma_loai = l.ma_loai WHERE l.ten_loai = "Cơm"

Lưu ý: sử dụng bí danh m.* để xác định là sẽ xóa dữ liệu trên bảng mon_an.

3. Xóa những món ăn có đơn giá nhỏ hơn 50000

DELETE FROM mon_an WHERE don_gia < 50000

4. Xóa những thực đơn chưa có món ăn nào

DELETE FROM thuc_don WHERE ma_thuc_don NOT IN (SELECT ma_thuc_don FROM thuc_don_mon_an)

5. Xóa những khách hàng không có hóa đơn

DELETE FROM khach_hang WHERE ma_khach_hang NOT IN (SELECT ma_khach_hang FROM hoa_don)

Xem và làm theo clip số 10 của thầy Nguyễn Anh Tuấn:

Cú pháp của lệnh:

- Thêm một dòng: INSERT INTO <ten_bang> VALUES(các giá trị tương ứng với các field)

- Thêm nhiều dòng: INSERT INTO <ten_bang> SELECT danh_sach_field FROM <bang> [WHERE GROUP BY]; lưu ý: danh_sach_field phải tương ứng với các field của ten_bang.

Ví dụ,

1. Thêm thực đơn mới, thông tin gồm:

Tên thực đơn: Thực đơn 13
Đơn giá: 0
Nội dung: Súp cua, lẩu thái, tôm nướng, gà quay
Hình: thuc-don13.jpg

Câu lệnh:

INSERT INTO thuc_don
VALUES("NULL", "Thực đơn 13", 0, 0, "Súp cua, lẩu thái, tôm nướng, gà quay", "thuc-don13.jpg")

2. Sao chép cấu trúc bảng hoa_don ra bảng hoa_don_backup

Chọn bảng hoa_don, chọn mục Operations, trong mục Copy table to… đặt tên cho bảng mới là hoa_don_backup, chọn mục Structure only, bấm nút Go.

3. Thêm tất cả hóa đơn được lập trong tháng 1 năm 2017 từ bảng hoa_don vào hoa_don_backup

INSERT INTO hoa_don_backup
SELECT * FROM hoa_don WHERE MONTH(ngay_dat) = 1 AND YEAR(ngay_dat) = 2017

4. Thêm năm món ăn mới vào bảng mon_an

Chèn từng món ăn với các thông tin tương ứng với từng trường như sau:

INSERT INTO mon_an

VALUES(‘ma_mon’, ‘ma_loai’, ‘ten_mon’, ‘noi_dung_tom_tat’, ‘noi_dung_chi_tiet’, ‘don_gia’, ‘don_gia_khuyen_mai’, ‘khuyen_mai’, ‘hinh’, ‘ngay_cap_nhat’, ‘dvt’, ‘trong_ngay’)
-----------
Cập nhật 9/2/2017
-----------
Xem thêm:
Tổng hợp các bài viết về Ngu ngơ học làm web