Nhiều bảng cơ sở dữ liệu quản lý dữ liệu sẽ cần được thay đổi hoặc cập nhật theo thời gian. Lệnh SQL UPDATE
có thể trợ giúp trong những tình huống này bằng cách cho phép bạn thay đổi các giá trị được lưu trữ trong một bảng
Để cập nhật bản ghi, bạn phải cung cấp các cột sẽ xảy ra thay đổi và giá trị mới của chúng. Để cho MySQL biết bản ghi nào cần nhắm mục tiêu, bạn cũng cần đưa ra tiêu chí đối sánh để nó có thể xác định hàng hoặc các hàng cần thay đổi. Trong bài viết này, chúng ta sẽ thảo luận cách sử dụng UPDATE
để thay đổi từng giá trị của dữ liệu bảng của bạn một lần hoặc hàng loạt
Sử dụng UPDATE
để sửa đổi dữ liệu
Cú pháp cơ bản của lệnh UPDATE
trông như thế này
UPDATE
SET
= ,
=
WHERE
;
Như đã trình bày ở trên, cấu trúc cơ bản bao gồm ba mệnh đề riêng biệt
- chỉ định một bảng để hành động,
- cung cấp các cột bạn muốn cập nhật cũng như các giá trị mới của chúng và
- xác định tiêu chí để xác định bản ghi nào phù hợp
Khi cam kết thành công, MySQL xác nhận hành động bằng cách xuất ra số hàng khớp và thay đổi
Query OK, 1 row affected [0.01 sec]
Rows matched: 1 Changed: 1 Warnings: 0
LIÊN QUAN ĐẾN PRISMA. IO
Để cập nhật dữ liệu với Prisma Client, hãy đưa ra lệnh
Prisma là bộ công cụ cơ sở dữ liệu mã nguồn mở dành cho Typescript và Node. js nhằm mục đích giúp các nhà phát triển ứng dụng làm việc hiệu quả và tự tin hơn khi làm việc với cơ sở dữ liệu
Cập nhật bản ghi dựa trên các giá trị trong bảng khác
Các bản cập nhật dựa trên việc cung cấp dữ liệu bên ngoài mới tương đối đơn giản. Bạn chỉ cần cung cấp bảng, cột, giá trị mới và tiêu chí nhắm mục tiêu
Tuy nhiên, bạn cũng có thể sử dụng
UPDATE
để cập nhật có điều kiện các giá trị bảng dựa trên thông tin được lưu trữ trong một. Cú pháp cơ bản trông như thế này
UPDATE ,
SET . = .
WHERE . = .;
Ở đây, chúng tôi đang cập nhật giá trị của
2 trong bảng
Query OK, 1 row affected [0.01 sec]
Rows matched: 1 Changed: 1 Warnings: 0
3 thành giá trị được lưu trữ trong
Query OK, 1 row affected [0.01 sec]
Rows matched: 1 Changed: 1 Warnings: 0
2 của
Query OK, 1 row affected [0.01 sec]
Rows matched: 1 Changed: 1 Warnings: 0
5, nhưng chỉ trong các hàng mà
Query OK, 1 row affected [0.01 sec]
Rows matched: 1 Changed: 1 Warnings: 0
6 của
Query OK, 1 row affected [0.01 sec]
Rows matched: 1 Changed: 1 Warnings: 0
3 khớp với
Query OK, 1 row affected [0.01 sec]
Rows matched: 1 Changed: 1 Warnings: 0
6 của
Query OK, 1 row affected [0.01 sec]
Rows matched: 1 Changed: 1 Warnings: 0
5. Mặc dù giá trị chỉ thay đổi trong một bảng, nhưng chúng ta cần thêm cả hai bảng vào danh sách các bảng mà
Query OK, 1 row affected [0.01 sec]
Rows matched: 1 Changed: 1 Warnings: 0
UPDATE
hoạt động trên đó. Cấu trúc1 chỉ định các điều kiện tham gia để tích hợp hai bảng
UPDATE ,
SET . = .
WHERE . = .;
Ví dụ, giả sử rằng chúng ta có hai bảng tên là
2 và
UPDATE ,
SET . = .
WHERE . = .;
3
UPDATE ,
SET . = .
WHERE . = .;
Mở rộng để xem các lệnh để tạo và điền các bảng này
CREATE TABLE director [
id SERIAL PRIMARY KEY,
name VARCHAR[200] NOT NULL,
latest_film VARCHAR[200]
];
CREATE TABLE film [
id SERIAL PRIMARY KEY,
title VARCHAR[200] NOT NULL,
director_id INT REFERENCES director[id],
release_date DATE NOT NULL
];
INSERT INTO director [name]
VALUES
['frank'],
['bob'],
['sue'];
INSERT INTO film [title, director_id, release_date]
VALUES
['first movie', 1, '2010-08-24'],
['second movie', 1, '2010-12-15'],
['third movie', 2, '2011-01-01'],
['fourth movie', 2, '2012-08-02'];
Hai bảng này có mối quan hệ với
4 tham chiếu
UPDATE ,
SET . = .
WHERE . = .;
5. Hiện tại,
UPDATE ,
SET . = .
WHERE . = .;
6 cho bảng
UPDATE ,
SET . = .
WHERE . = .;
3 là
UPDATE ,
SET . = .
WHERE . = .;
8. Tuy nhiên, chúng ta có thể điền tên phim mới nhất của đạo diễn bằng cách sử dụng mệnh đề
UPDATE ,
SET . = .
WHERE . = .;
1 để mang hai bảng lại với nhau
UPDATE ,
SET . = .
WHERE . = .;
Ở đây, chúng tôi sử dụng mệnh đề
0 để tạo Biểu thức bảng chung [CTE] có tên là
CREATE TABLE director [
id SERIAL PRIMARY KEY,
name VARCHAR[200] NOT NULL,
latest_film VARCHAR[200]
];
CREATE TABLE film [
id SERIAL PRIMARY KEY,
title VARCHAR[200] NOT NULL,
director_id INT REFERENCES director[id],
release_date DATE NOT NULL
];
INSERT INTO director [name]
VALUES
['frank'],
['bob'],
['sue'];
INSERT INTO film [title, director_id, release_date]
VALUES
['first movie', 1, '2010-08-24'],
['second movie', 1, '2010-12-15'],
['third movie', 2, '2011-01-01'],
['fourth movie', 2, '2012-08-02'];
1 mà chúng tôi có thể tham chiếu trong câu lệnh
CREATE TABLE director [
id SERIAL PRIMARY KEY,
name VARCHAR[200] NOT NULL,
latest_film VARCHAR[200]
];
CREATE TABLE film [
id SERIAL PRIMARY KEY,
title VARCHAR[200] NOT NULL,
director_id INT REFERENCES director[id],
release_date DATE NOT NULL
];
INSERT INTO director [name]
VALUES
['frank'],
['bob'],
['sue'];
INSERT INTO film [title, director_id, release_date]
VALUES
['first movie', 1, '2010-08-24'],
['second movie', 1, '2010-12-15'],
['third movie', 2, '2011-01-01'],
['fourth movie', 2, '2012-08-02'];
UPDATE
của mình
WITH latest_films AS [
SELECT
f1.*
FROM
film f1
WHERE
f1.id = [SELECT
f2.id
FROM
film f2
WHERE
f2.director_id = f1.director_id
ORDER BY f2.release_date DESC LIMIT 1]]
UPDATE
director, latest_films
SET
director.latest_film = latest_films.title
WHERE
director.id = latest_films.director_id;
Nếu bạn truy vấn bảng
3, nó sẽ hiển thị cho bạn bộ phim mới nhất của từng đạo diễn ngay bây giờ
UPDATE ,
SET . = .
WHERE . = .;
SELECT * FROM director;
+----+-------+--------------+
id | name | latest_film |
+----+-------+--------------+
1 | frank | second movie |
2 | bob | fourth movie |
3 | sue | NULL |
+----+-------+--------------+
3 rows in set [0.00 sec]
Phần kết luận
Trong bài viết này, chúng tôi đã trình bày cách sử dụng lệnh
UPDATE
để thay đổi giá trị của các bản ghi MySQL hiện có. LệnhUPDATE
rất linh hoạt khi được kết hợp với các cấu trúc SQL khác, cho phép bạn sửa đổi dữ liệu theo những cách thú vị tùy theo các điều kiện và giá trị được tìm thấy trong cơ sở dữ liệu. Khi bạn đã quen với thao tác này, bạn sẽ có thể tìm ra những cách mới để thay đổi dữ liệu của mình cho phù hợp với yêu cầu của bạnLàm cách nào để cập nhật một bảng trong MySQL?
Truy vấn CẬP NHẬT MySQL là một câu lệnh DML được sử dụng để sửa đổi dữ liệu của bảng MySQL trong cơ sở dữ liệu. .CẬP NHẬT tên_bảngSET cột_name1 = new-value1,column_name2=new-value2,[Mệnh đề WHERE]Làm cách nào để sử dụng lệnh cập nhật trong MySQL?
Điều này sẽ sửa đổi bất kỳ giá trị trường nào của bất kỳ bảng MySQL nào. .cú pháp. Khối mã sau đây có cú pháp SQL chung của lệnh CẬP NHẬT để sửa đổi dữ liệu trong bảng MySQL − CẬP NHẬT tên_bảng SET trường1 = giá trị mới1, trường2 = giá trị mới2 [Điều khoản WHERE].Thí dụ. .cú pháp. .Thí dụLàm thế nào bạn có thể cập nhật một bảng hiện có?
Đầu tiên, chỉ ra bảng mà bạn muốn cập nhật trong mệnh đề CẬP NHẬT. Thứ hai, chỉ định các cột mà bạn muốn sửa đổi trong mệnh đề SET. Các cột không được liệt kê trong mệnh đề SET sẽ giữ nguyên giá trị ban đầu của chúng. Thứ ba, chỉ định những hàng nào sẽ cập nhật trong mệnh đề WHERELàm cách nào để cập nhật một trường trong MySQL?
Lệnh MySQL UPDATE có thể được sử dụng để cập nhật nhiều cột bằng cách chỉ định danh sách cột_name = new_value được phân tách bằng dấu phẩy . Trong đó column_name là tên của cột sẽ được cập nhật và new_value là giá trị mới mà cột sẽ được cập nhật.