Làm cách nào để cập nhật hàng trong MySQL?

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

SET

<column1> = <value1>,

<column2> = <value2>

WHERE

<match_condition>;

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 <table1>, <table2>

SET <table1>.<column1> = <table2>.<column1>

WHERE <table1>.<column2> = <table2>.<column2>;

Ở đây, chúng tôi đang cập nhật giá trị của

Query OK, 1 row affected (0.01 sec)

Rows matched: 1 Changed: 1 Warnings: 0

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à UPDATE hoạt động trên đó. Cấu trúc

UPDATE <table1>, <table2>

SET <table1>.<column1> = <table2>.<column1>

WHERE <table1>.<column2> = <table2>.<column2>;

1 chỉ định các điều kiện tham gia để tích hợp hai bảng

Ví dụ, giả sử rằng chúng ta có hai bảng tên là

UPDATE <table1>, <table2>

SET <table1>.<column1> = <table2>.<column1>

WHERE <table1>.<column2> = <table2>.<column2>;

2 và

UPDATE <table1>, <table2>

SET <table1>.<column1> = <table2>.<column1>

WHERE <table1>.<column2> = <table2>.<column2>;

3

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

UPDATE <table1>, <table2>

SET <table1>.<column1> = <table2>.<column1>

WHERE <table1>.<column2> = <table2>.<column2>;

4 tham chiếu

UPDATE <table1>, <table2>

SET <table1>.<column1> = <table2>.<column1>

WHERE <table1>.<column2> = <table2>.<column2>;

5. Hiện tại,

UPDATE <table1>, <table2>

SET <table1>.<column1> = <table2>.<column1>

WHERE <table1>.<column2> = <table2>.<column2>;

6 cho bảng

UPDATE <table1>, <table2>

SET <table1>.<column1> = <table2>.<column1>

WHERE <table1>.<column2> = <table2>.<column2>;

3 là

UPDATE <table1>, <table2>

SET <table1>.<column1> = <table2>.<column1>

WHERE <table1>.<column2> = <table2>.<column2>;

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 <table1>, <table2>

SET <table1>.<column1> = <table2>.<column1>

WHERE <table1>.<column2> = <table2>.<column2>;

1 để mang hai bảng lại với nhau

Ở đây, chúng tôi sử dụng mệ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');

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

UPDATE <table1>, <table2>

SET <table1>.<column1> = <table2>.<column1>

WHERE <table1>.<column2> = <table2>.<column2>;

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ờ

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ệnh UPDATE 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ạn

Làm cách nào để cập nhật hàng trong MySQL?

Câu lệnh UPDATE được sử dụng với mệnh đề SET và WHERE. Mệnh đề SET được sử dụng để thay đổi giá trị của cột được chỉ định. .
CẬP NHẬT tên_bảng
SET cột_name1 = new-value1,
column_name2=new-value2,
[Mệnh đề WHERE]

Làm cách nào để cập nhật tất cả các hàng trong MySQL?

Cú pháp. CẬP NHẬT tên_bảng SET cột_name1 = new_value1, column_name2 = new_value2 ---- điều kiện WHERE ; .

Làm cách nào để cập nhật nhiều hàng trong MySQL?

Có một số cách để thực hiện. CHÈN VÀO học viên (id, điểm1, điểm2) GIÁ TRỊ (1, 5, 8), (2, 10, 8), (3, 8, 3), (4, 10, 7

Làm cách nào để cập nhật một cột 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.