SQLite - UPDATE 语句

你好,未来的数据库法师们!今天,我们将深入SQLite的奇妙世界,学习它最强大的魔法之一 - UPDATE 语句。想象你是一位图书管理员,你需要更改一些书籍卡片上的信息。这正是UPDATE语句在我们数据库中所做的事情!

SQLite - UPDATE Query

什么是 UPDATE 语句?

UPDATE语句就像一根魔法棒,允许我们修改数据库表中的现有记录。当需要更改已存储在数据库中的数据时,它非常有用。

为什么我们需要 UPDATE 语句?

假设你正在管理一个书店数据库。有一天,你发现一本书的价格已经改变。你不需要删除旧记录并创建一个新的,只需简单地用新价格更新现有记录。这就是UPDATE语句派上用场的地方!

语法

现在,让我们来看看UPDATE语句的魔法……我是说,语法:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

让我们分解一下:

  1. UPDATE table_name:在这里指定你想要更新的表。
  2. SET column1 = value1, column2 = value2, ...:在这里列出你想更改的列及其新值。
  3. WHERE condition:这是可选的,但非常重要。它指定哪些行应该被更新。如果你省略它,表中的所有行都将被更新!

示例

示例 1:更新单个列

让我们从一个简单的示例开始。假设我们有一个名为books的表,其中包含列idtitleauthorprice。我们想要更新一本书的价格。

UPDATE books
SET price = 19.99
WHERE id = 1;

这个查询将更新id为1的书的价格为19.99。

示例 2:更新多个列

现在,假设我们想要同时更新一本书的价格和作者:

UPDATE books
SET price = 24.99, author = 'Jane Doe'
WHERE title = 'The Great Adventure';

这个查询将把标题为'The Great Adventure'的书籍的价格更改为24.99,作者更改为'Jane Doe'。

示例 3:更新所有行

有时,你可能想要更新表中的所有行。小心这个操作,它就像对整个图书馆施加了一个咒语!

UPDATE books
SET price = price * 1.1;

这个查询将所有书籍的价格提高了10%。注意我们没有使用WHERE子句,所以它会影响所有行。

示例 4:在更新中使用表达式

你还可以在UPDATE查询中使用表达式。假设我们想要为所有昂贵的书籍提供折扣:

UPDATE books
SET price = price * 0.9
WHERE price > 50;

这个查询将所有价格超过50的书籍的价格降低了10%。

示例 5:基于另一个表更新

你甚至可以根据另一个表中的信息更新数据。假设我们有一个sales表,我们想要更新books表中的popular列:

UPDATE books
SET popular = 1
WHERE id IN (SELECT book_id FROM sales GROUP BY book_id HAVING COUNT(*) > 100);

这个看起来复杂的查询将标记销售超过100次的书籍为受欢迎。

常见的 UPDATE 方法

以下是一些你可能发现有用的常见UPDATE方法:

方法 描述 示例
简单更新 更新单个列 UPDATE books SET price = 19.99 WHERE id = 1;
多列更新 更新多个列 UPDATE books SET price = 24.99, author = 'Jane Doe' WHERE id = 1;
更新所有行 更新表中的所有行 UPDATE books SET price = price * 1.1;
有条件更新 更新满足条件的行 UPDATE books SET price = price * 0.9 WHERE price > 50;
子查询更新 基于子查询更新 UPDATE books SET popular = 1 WHERE id IN (SELECT book_id FROM sales GROUP BY book_id HAVING COUNT(*) > 100);

记住,年轻的法师们,力量越大,责任越大。在施放UPDATE咒语之前,请务必检查你的WHERE子句。你不会希望意外地更改图书馆中的所有书籍,而只是想更新一本!

练习这些咒语……呃,查询,很快你将成为数据库魔法的专家。快乐编码,愿你的数据库始终保持最新!

Credits: Image by storyset