Câu lệnh MySQL UPDATE được sử dụng để cập nhật các bản ghi hiện có trong một bảng trong cơ sở dữ liệu MySQL. Có 3 cú pháp cho câu lệnh CẬP NHẬT tùy thuộc vào loại cập nhật mà bạn muốn thực hiện
cú pháp
Ở dạng đơn giản nhất, cú pháp của câu lệnh CẬP NHẬT khi cập nhật một bảng trong MySQL là
UPDATE table SET column1 = expression1, column2 = expression2, ... [WHERE conditions];Tuy nhiên, cú pháp đầy đủ cho câu lệnh UPDATE của MySQL khi cập nhật một bảng là
UPDATE [ LOW_PRIORITY ] [ IGNORE ] table SET column1 = expression1, column2 = expression2, ... [WHERE conditions] [ORDER BY expression [ ASC | DESC ]] [LIMIT number_rows];HOẶC LÀ
Cú pháp của câu lệnh UPDATE khi cập nhật một bảng với dữ liệu từ một bảng khác trong MySQL là
UPDATE table1 SET column1 = (SELECT expression1 FROM table2 WHERE conditions) [WHERE conditions];HOẶC LÀ
Cú pháp cho câu lệnh UPDATE của MySQL khi cập nhật nhiều bảng là
UPDATE table1, table2, .. SET column1 = expression1, column2 = expression2, ... WHERE table1.column = table2.column AND conditions;Tham số hoặc Đối số
LOW_PRIORITYTùy chọn. Nếu LOW_PRIORITY được cung cấp, quá trình cập nhật sẽ bị trì hoãn cho đến khi không có tiến trình nào đọc từ bảng. LOW_PRIORITY có thể được sử dụng với các bảng MyISAM, MEMORY và MERGE sử dụng khóa cấp độ bảng. BỎ QUATùy chọn. Nếu IGNORE được cung cấp, tất cả các lỗi gặp phải trong quá trình cập nhật sẽ bị bỏ qua. Nếu cập nhật trên một hàng dẫn đến vi phạm khóa chính hoặc chỉ mục duy nhất, thì cập nhật trên hàng đó sẽ không được thực hiện. cột1, cột2Các cột bạn muốn cập nhật. biểu thức1, biểu thức2Các giá trị mới để gán cho cột1, cột2. Vì vậy, cột1 sẽ được gán giá trị của biểu thức1, cột2 sẽ được gán giá trị của biểu thức2, v.v. điều kiện WHERETùy chọn. Các điều kiện phải được đáp ứng để cập nhật để thực thi. ĐẶT HÀNG BẰNG biểu thứcTùy chọn. Nó có thể được sử dụng kết hợp với LIMIT để sắp xếp các bản ghi một cách thích hợp khi giới hạn số lượng bản ghi được cập nhật. GIỚI HẠN số_hàngTùy chọn. Nếu LIMIT được cung cấp, nó sẽ kiểm soát số lượng bản ghi tối đa để cập nhật trong bảng. Nhiều nhất, số lượng bản ghi được chỉ định bởi number_rows sẽ được cập nhật trong bảngVí dụ - Cập nhật cột đơn
Hãy xem một ví dụ truy vấn CẬP NHẬT MySQL rất đơn giản
UPDATE customers SET last_name = 'Anderson' WHERE customer_id = 5000;Ví dụ CẬP NHẬT MySQL này sẽ cập nhật last_name thành 'Anderson' trong bảng khách hàng trong đó customer_id là 5000
Ví dụ - Cập nhật nhiều cột
Hãy xem ví dụ CẬP NHẬT MySQL nơi bạn có thể muốn cập nhật nhiều cột với một câu lệnh CẬP NHẬT
UPDATE customers SET state = 'California', customer_rep = 32 WHERE customer_id > 100;Khi muốn cập nhật nhiều cột, bạn có thể thực hiện việc này bằng cách tách các cặp cột/giá trị bằng dấu phẩy
Ví dụ về câu lệnh CẬP NHẬT MySQL này sẽ cập nhật trường thành phố trong bảng khách hàng thành thành phố từ bảng nhà cung cấp trong đó customer_id khớp với nhà cung cấp_id
Tóm lược. cập nhật dữ liệu là một trong những nhiệm vụ quan trọng nhất khi bạn làm việc với cơ sở dữ liệu. Trong hướng dẫn này, bạn sẽ học cách sử dụng câu lệnh MySQL
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2 để cập nhật dữ liệu trong một bảngGiới thiệu về câu lệnh
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2 của MySQLCâu lệnh
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2 cập nhật dữ liệu trong một bảng. Nó cho phép bạn thay đổi các giá trị trong một hoặc nhiều cột của một hàng hoặc nhiều hàngSau đây minh họa cú pháp cơ bản của câu lệnh
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2UPDATE [LOW_PRIORITY] [IGNORE] table_name SET column_name1 = expr1, column_name2 = expr2, ... [WHERE condition];
Code language: SQL (Structured Query Language) (sql)Trong cú pháp này
- Đầu tiên, chỉ định tên của bảng mà bạn muốn cập nhật dữ liệu sau từ khóa
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2 - Thứ hai, chỉ định cột nào bạn muốn cập nhật và giá trị mới trong mệnh đề
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)7. Để cập nhật giá trị trong nhiều cột, bạn sử dụng danh sách các phép gán được phân tách bằng dấu phẩy bằng cách cung cấp một giá trị trong phép gán của mỗi cột ở dạng giá trị bằng chữ, biểu thức hoặc truy vấn con - Thứ ba, chỉ định những hàng nào sẽ được cập nhật bằng cách sử dụng một điều kiện trong mệnh đề
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)8. Mệnh đềSELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)9 là tùy chọn. Nếu bạn bỏ qua nó, câu lệnhSELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2 sẽ sửa đổi tất cả các hàng trong bảng
Lưu ý rằng mệnh đề
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)9 quan trọng đến mức bạn không được quên. Đôi khi, bạn có thể chỉ muốn cập nhật một hàng;MySQL hỗ trợ hai công cụ sửa đổi trong câu lệnh
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2- Công cụ sửa đổi
UPDATE employees SET email = 'mary.patterson@classicmodelcars.com' WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)4 hướng dẫn câu lệnhSELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2 trì hoãn cập nhật cho đến khi không có kết nối đọc dữ liệu từ bảng.UPDATE employees SET email = 'mary.patterson@classicmodelcars.com' WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)4 có hiệu lực đối với các công cụ lưu trữ chỉ sử dụng khóa cấp độ bảng, chẳng hạn nhưUPDATE employees SET email = 'mary.patterson@classicmodelcars.com' WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)7,UPDATE employees SET email = 'mary.patterson@classicmodelcars.com' WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)8 vàUPDATE employees SET email = 'mary.patterson@classicmodelcars.com' WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)9 - Công cụ sửa đổi
1 row(s) affected
0 cho phép câu lệnhSELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2 tiếp tục cập nhật các hàng ngay cả khi xảy ra lỗi. Các hàng gây ra lỗi như xung đột khóa trùng lặp không được cập nhật
MySQL
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2 ví dụHãy thực hành câu lệnh
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)21) Sử dụng MySQL
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2 để sửa đổi các giá trị trong một ví dụ về một cộtXem bảng
1 row(s) affected
5 sau đây từ cơ sở dữ liệu mẫuTrong ví dụ này, chúng tôi sẽ cập nhật email của
1 row(s) affected
6 thành email mới1 row(s) affected
7Đầu tiên, tìm email của Mary từ bảng
1 row(s) affected
5 bằng cách sử dụng câu lệnh1 row(s) affected
9 sau đâySELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)Thứ hai, cập nhật địa chỉ email của
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)0 thành email mớiSELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)1.UPDATE employees SET email = 'mary.patterson@classicmodelcars.com' WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)MySQL đã ban hành số lượng hàng bị ảnh hưởng
1 row(s) affected
Trong tuyên bố
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2 này- Mệnh đề
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)8 chỉ định hàng có mã số nhân viênSELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)4 sẽ được cập nhật - Mệnh đề
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)7 đặt giá trị của cộtSELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)6 cho email mới
Thứ ba, thực hiện lại câu lệnh
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)7 để xác minh thay đổiSELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2) Sử dụng MySQL
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2 để sửa đổi giá trị trong nhiều cộtĐể cập nhật các giá trị trong nhiều cột, bạn cần chỉ định các phép gán trong mệnh đề
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)7. Ví dụ: câu lệnh sau cập nhật cả cột họ và email của nhân viên số 1056UPDATE employees SET lastname = 'Hill', email = 'mary.hill@classicmodelcars.com' WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)Hãy xác minh những thay đổi
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)3) Sử dụng MySQL
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2 để thay thế chuỗi ví dụVí dụ sau cập nhật các phần miền của email của tất cả
UPDATE employees SET lastname = 'Hill', email = 'mary.hill@classicmodelcars.com' WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)1 với mã văn phòngUPDATE employees SET lastname = 'Hill', email = 'mary.hill@classicmodelcars.com' WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2UPDATE employees SET email = REPLACE(email,'@classicmodelcars.com','@mysqltutorial.org') WHERE jobTitle = 'Sales Rep' AND officeCode = 6;
Code language: SQL (Structured Query Language) (sql)Trong ví dụ này, hàm
UPDATE employees SET lastname = 'Hill', email = 'mary.hill@classicmodelcars.com' WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)3 thay thếUPDATE employees SET lastname = 'Hill', email = 'mary.hill@classicmodelcars.com' WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)4 trong cột email bằngUPDATE employees SET lastname = 'Hill', email = 'mary.hill@classicmodelcars.com' WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)54) Sử dụng MySQL
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2 để cập nhật các hàng được trả về bởi một ví dụ về câu lệnhSELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)7Bạn có thể cung cấp các giá trị cho mệnh đề
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)7 từ câu lệnhSELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)7 truy vấn dữ liệu từ các bảng khácVí dụ: trong bảng
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)0, một số khách hàng không có bất kỳ đại diện bán hàng nào. Giá trị của cộtSELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)1 làSELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2 như sauSELECT customername, salesRepEmployeeNumber FROM customers WHERE salesRepEmployeeNumber IS NULL;
Code language: SQL (Structured Query Language) (sql)Chúng tôi có thể thuê đại diện bán hàng và cập nhật thông tin cho những khách hàng đó.
Để làm điều này, chúng ta có thể chọn một nhân viên ngẫu nhiên có chức danh công việc là
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)3 từ bảng1 row(s) affected
5 và cập nhật nó cho bảng1 row(s) affected
5Truy vấn này chọn một nhân viên ngẫu nhiên từ bảng
1 row(s) affected
5 có chức danh công việc làSELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)3SELECT employeeNumber FROM employees WHERE jobtitle = 'Sales Rep' ORDER BY RAND() LIMIT 1;
Code language: SQL (Structured Query Language) (sql)Để cập nhật cột mã số nhân viên đại diện bán hàng trong bảng
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)0, chúng tôi đặt truy vấn ở trên trong mệnh đềSELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)7 của câu lệnhSELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2 như sauSELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)0Nếu bạn truy vấn dữ liệu từ bảng
1 row(s) affected
5, bạn sẽ thấy rằng mọi khách hàng đều có một đại diện bán hàng. Nói cách khác, truy vấn sau không trả về hàng nàoSELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)1Trong hướng dẫn này, bạn đã học cách sử dụng câu lệnh
SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056;
Code language: SQL (Structured Query Language) (sql)2 của MySQL để cập nhật dữ liệu trong bảng cơ sở dữ liệu