Cập nhật dữ liệu UPDATE SQL
Với câu lệnh UPDATE chúng ta có thể cập nhật dữ liệu cho bảng (sửa đổi các dòng dữ liệu có sẵn). Với cú pháp cơ bản như sau:
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
Trong đó bạn cần chỉ ra các cột và giá trị cần cập nhật vào cột sau từ khóa SET. Mệnh đề WHERE thường đi cùng trong trường hợp này nhằm xác định rõ các dòng nào sẽ được cập nhật. nếu thiếu mệnh đề WHERE toàn bộ các dòng dữ liệu sẽ cập nhật theo giá trị mới đưa vào!
Ví dụ bảng dữ liệu mẫu SQLite có bảng Customers với thông tin của dòng có CustomerID bằng 1 như sau:
Select * from Khachhang where KhachhangID = 1
KhachhangID | HoTen | TenLienLac | Diachi | Thanhpho | MaBuudien | QuocGia |
---|---|---|---|---|---|---|
1 | Đặng Tuấn Anh | Đặng Tuấn Anh | nkhbiq Bà Rịa - Vũng Tàu | Bà Rịa - Vũng Tàu | 222 | Đức |
Ở đây có một file CSDL mẫu dạng SQLite, bạn có thể tải về nghiên cứu, thực hành: CSDL SQLite mẫu. Hoặc sử dụng trực tiếp công cụ Online: Chạy SQL
Giờ bạn dùng lệnh UPDATE để đổi HoTen thành 'Nguyên Văn B' và Thanhpho thành 'Hạ Long'
UPDATE Khachhang SET HoTen = 'Nguyên Văn B', Thanhpho= 'Hạ Long' WHERE KhachhangID = 1
Sau khi chạy lệnh trên, kiểm tra lại bằng câu lệnh SELECT
Select * from Khachhang where KhachhangID = 1
Kết quả dữ liệu đã cập nhật mới
KhachhangID | HoTen | TenLienLac | Diachi | Thanhpho | MaBuudien | QuocGia |
---|---|---|---|---|---|---|
1 | Nguyên Văn B | Đặng Tuấn Anh | nkhbiq Bà Rịa - Vũng Tàu | Hạ Long | 222 | Đức |
Cập nhật nhiều dòng
Mệnh đề WHERE dùng để xác định các dòng sẽ cập nhật. Qua đó, có thể xác định được một dòng, nhiều dòng, không dòng nào hay toàn bộ các dòng sẽ cập nhật. Nếu nhiều dòng được cập nhật trong một câu lệnh UPDATE thì dữ liệu cập nhật là giống nhau.
Ví sụ sau là một số trường hợp (bạn nên cận thận lưu lại CSDL vì lệnh cập nhật thay đổi trên nhiều dòng).
UPDATE Khachhang SET HoTen='Xuân Thu' WHERE Quocgia='Ý'
Nếu chạy lệnh trên tất các các dòng có Quocgia là Ý sẽ được cập nhật HoTen là 'Xuân Thu'
UPDATE Khachhang SET HoTen='Xuân Thu'
Không có mệnh đề WHERE nên nếu chạy mã trên toàn bộ các dòng được cập nhật trường HoTen có giá trị là 'Xuân Thu'