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