Lỗi update nhiều dòng trong sql từ dòng thứ 2

Lỗi update nhiều dòng trong sql từ dòng thứ 2
Giới thiệu các câu lệnh SQL thực hiện viện Thêm mới bản ghi (INSERT), sửa dữ liệu (UPDATE) và xoá dữ liệu (DELETE). Đây là những câu lệnh rất quan trọng trong việc thao tác với các hệ quản trị cơ sở dữ liệu và lập trình thao các với các Database.

Nội dung

1. Câu lệnh thêm mới bản ghi – SQL Insert

  
INSERT INTO ([])  
VALUES ()  

Ví dụ: thêm một sinh viên mới vào bảng SINHVIEN

  
INSERT INTO SINHVIEN (MaSV, HoDem, Ten, NgaySinh, GioiTinh, Tinh, MaLoP)  
VALUES ("561205", "Nguyễn Tiến", "Minh", "3/8/92", "nam", "Hà Nội","K57CNSHA");  

  • Nếu các giá trị sau từ khoá VALUES hoàn toàn phù hợp về thứ tự với các cột trong bảng, thì danh sách các cột có thể được bỏ qua.

Ví dụ: thêm một sinh viên mới vào bảng SINHVIEN không có danh sách cột

  
INSERT INTO SINHVIEN  
VALUES ("561205", "Nguyễn Tiến", "Minh", "3/8/92", "nam", "Hà Nội","K57CNSHA");  

  • Ta có thể thêm các bản ghi vào bảng từ câu lệnh truy vấn (Select)

  
INSERT INTO  (, ...)  
  

hoặc

  
INSERT INTO    
  

Ví dụ: thêm tất cả các dòng trong bảng DSSV vào bảng SINHVIEN

  
INSERT INTO SINHVIEN  
SELECT * FROM DSSV ;  

Lưu ý: hai bảng DSSV và SINHVIEN phải có cấu trúc giống nhau

2. Câu lệnh sửa bản ghi – SQL Update

  
UPDATE   
SET  = ,   = ,   
...,  
 = < giá trị n>  
[WHERE <điềukiện>];   

Ý nghĩa:

  • Giá trị của các cột , … Của những bản ghi thoả mãn điều kiện sau WHERE sẽ được sửa đổi thành , ….
  • Nếu không có mệnh đề WHERE thì tất cả các bản ghi của bảng sẽ được sửa đổi.

Ví dụ: sửa hộ khẩu của các sinh viên từ Hà Tây thành Hà Nội

  
UPDATE SINHVIEN  
SET Tinh = "Hà Nội"  
WHERE Tinh = "Hà Tây";   

3. Câu lệnh xoá bản ghi – SQL Delete

  
DELETE FROM   
[WHERE <điều kiện>];  

Ý nghĩa:

  • Các bản ghi thoả mãn điều kiện WHERE sẽ bị xoá khỏi bảng.
  • Nếu không có mệnh đề WHERE thì tất cả các bản ghi của bảng sẽ bị xóa khỏi bảng.

Ví dụ: xóa tất cả các bản ghi trong bảng DSSV

  
DELETE FROM DSSV;  

Ví dụ: Xóa sinh viên lớp K53MTA khỏi bảng SINHVIEN

  
INSERT INTO SINHVIEN (MaSV, HoDem, Ten, NgaySinh, GioiTinh, Tinh, MaLoP)  
VALUES ("561205", "Nguyễn Tiến", "Minh", "3/8/92", "nam", "Hà Nội","K57CNSHA");  

0

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 KhachhangIDHoTenTenLienLacDiachiThanhphoMaBuudienQuocGia1Đặng Tuấn AnhĐặng Tuấn Anhnkhbiq Bà Rịa - Vũng TàuBà Rịa - Vũng Tàu222Đứ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

KhachhangIDHoTenTenLienLacDiachiThanhphoMaBuudienQuocGia1Nguyên Văn BĐặng Tuấn Anhnkhbiq Bà Rịa - Vũng TàuHạ Long222Đứ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'