Giới thiệu
Khi một phần dữ liệu đi vào cơ sở dữ liệu, rất khó có khả năng nó vẫn ở trạng thái tĩnh trong suốt thời gian nằm trong bảng. Dữ liệu được cập nhật để phản ánh những thay đổi trong hệ thống mà chúng đại diện để vẫn phù hợp và cập nhật. SQLite cho phép bạn thay đổi các giá trị trong bản ghi bằng cách sử dụng UPDATE
Lệnh SQL.
UPDATE
các chức năng tương tự như INSERT
(trong đó bạn chỉ định các cột và giá trị mong muốn của chúng) và DELETE
(trong đó bạn cung cấp các tiêu chí cần thiết để nhắm mục tiêu các bản ghi cụ thể). Bạn cũng có thể sửa đổi dữ liệu từng cái một hoặc hàng loạt. Trong bài viết này, chúng ta sẽ đi sâu vào cách sử dụng UPDATE
một cách hiệu quả để quản lý dữ liệu của bạn đã được lưu trữ trong các bảng.
Sử dụng UPDATE
để sửa đổi dữ liệu
Cú pháp cơ bản của UPDATE
lệnh trông giống như sau:
UPDATE my_tableSET column1 = value1, column2 = value2,WHERE id = 1;
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
- xác định bất kỳ tiêu chí nào mà SQLite cần đánh giá để xác định bản ghi nào phù hợp
Trong khi bạn có thể chỉ định giá trị trực tiếp cho các cột như chúng tôi đã làm ở trên, bạn cũng có thể sử dụng cú pháp danh sách cột, như thường thấy trong INSERT
lệnh.
Ví dụ:chúng ta có thể thay đổi ví dụ trên để trông như sau:
UPDATE my_tableSET (column1, column2) = (value1, value2)WHERE id = 1;
Trả về các bản ghi được sửa đổi bởi UPDATE
lệnh
Theo mặc định, SQLite không hiển thị số hàng bị ảnh hưởng bởi UPDATE
tuyên bố. Tuy nhiên, SQLite đã thêm RETURNING
mệnh đề được mô hình hóa sau PostgreSQL trong phiên bản 3.35.0
. Mệnh đề này khiến các lệnh trả về tất cả hoặc một phần của các bản ghi đã được sửa đổi.
Bạn có thể sử dụng dấu hoa thị *
để trả về tất cả các cột của các hàng đã sửa đổi giống như một SELECT
tuyên bố:
UPDATE my_tableSET column1 = value1, column2 = value2,WHERE id = 1RETURNING *;
Ngoài ra, bạn cũng có thể chỉ định các cột chính xác mà bạn muốn hiển thị có / không có bí danh bằng cách sử dụng AS
:
UPDATE my_tableSET column1 = value1, column2 = value2WHERE id = 1RETURNING column1 AS 'first column';
Cập nhật bản ghi dựa trên các giá trị trong một bảng khác
Cập nhật dữ liệu dựa trên dữ liệu bên ngoài mới là một quá trình được sắp xếp tương đối hợp lý. 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, với SQLite, 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 trong một bảng khác trong cơ sở dữ liệu của bạn. Cú pháp cơ bản sẽ giống như sau:
UPDATE table1SET table1.column1 =( SELECT table2.column1 FROM table2 WHERE table1.column2 = table2.column2);
Tại đây, chúng tôi đang cập nhật trực tiếp giá trị của column1
trong table1
là sự trả về của một SELECT
truy vấn con trên table2
, nhưng chỉ trong các hàng có column2
của table1
khớp với column2
của table2
. FROM
mệnh đề chỉ ra kết nối giữa hai bảng và WHERE
chỉ định các điều kiện.
Ví dụ, giả sử rằng chúng ta có hai bảng được gọi là book
và author
.
CREATE TABLE author ( id INTEGER PRIMARY KEY, first_name TEXT, last_name TEXT, last_publication TEXT);CREATE TABLE book ( id INTEGER PRIMARY KEY, author_id INT REFERENCES author.id title TEXT, publication_year INTEGER);INSERT INTO author (first_name, last_name)VALUES ('Leo', 'Tolstoy'), ('James', 'Joyce'), ('Jean-Paul', 'Sarte'); INSERT INTO book (author_id, title, publication_year)VALUES (1, 'Anna Karenina', '1877'), (1, 'War and Peace', '1867'), (2, 'Ulysses', '1920'), (2, 'Dubliners', '1914'), (3, 'Nausea', '1938');
Hai bảng này có mối quan hệ với book.author_id
tham chiếu đến author.id
. Hiện tại last_publication
cho author
bảng là NULL
. Chúng tôi có thể điền nó với cuốn sách được xuất bản mới nhất của tác giả trong book
của chúng tôi bảng sử dụng FROM
và WHERE
các mệnh đề để kết hợp hai bảng lại với nhau.
Ở đây, chúng tôi hiển thị một ví dụ về cập nhật last_publication
:
UPDATE author SET last_publication=( SELECT title FROM book WHERE author_id = author.id ORDER BY author_id, publication_year DESC);
Nếu bạn truy vấn author
bây giờ, nó sẽ hiển thị cho bạn tiêu đề của ấn phẩm gần đây nhất của họ trong cơ sở dữ liệu:
SELECT * FROM author;
+------------+------------+-----------+--------------------------+ id first_name last_name last_publication +-------------+------------+-----------+--------------------------+ 1 Leo Tolstoy Anna Karenina 2 James Joyce Ulysses 3 Jean-Paul Sarte Nausea +-------------+------------+-----------+--------------------------+
Kết luận
Trong hướng dẫn này, chúng tôi đã xem xét các cách cơ bản mà bạn có thể sửa đổi dữ liệu hiện có trong bảng bằng cách sử dụng UPDATE
yêu cầu. Việc thực thi các khái niệm cơ bản này cho phép bạn chỉ định tiêu chí chính xác cần thiết để xác định các hàng hiện có trong bảng, cập nhật tên cột với các giá trị và tùy chọn trả về các hàng đã bị ảnh hưởng với RETURNING
. UPDATE
lệnh rất quan trọng để quản lý dữ liệu của bạn sau lần chèn đầu tiên vào cơ sở dữ liệu của bạn.