非常教程

Sqlite参考手册

语言 | Language

UPDATE

【置顶】

UPDATE(更新)

update-stmt: 隐藏

UPDATE

column-name-list: 展示

UPDATE

expr:展示

UPDATE

literal-value: 展示

UPDATE

raise-function: 展示

UPDATE

select-stmt: 展示

UPDATE

common-table-expression: 展示

UPDATE

compound-operator: 展示

UPDATE

join-clause: 展示

UPDATE

join-constraint: 展示

UPDATE

join-operator: 展示

UPDATE

ordering-term: 展示

UPDATE

result-column: 展示

UPDATE

table-or-subquery: 展示

UPDATE

type-name: 展示

UPDATE

signed-number: 展示

UPDATE

qualified-table-name: 展示

UPDATE

with-clause: 展示

UPDATE

cte-table-name: 展示

UPDATE

select-stmt: 展示

UPDATE

common-table-expression: 展示

UPDATE

compound-operator: 展示

UPDATE

join-clause: 展示

UPDATE

join-constraint: 展示

UPDATE

join-operator: 展示

UPDATE

ordering-term: 展示

UPDATE

result-column: 展示

UPDATE

table-or-subquery: 展示

UPDATE

UPDATE 语句用于修改存储在由作为 UPDATE 语句的一部分指定的 qualified-table-name 标识的数据库表的零个或多个行中的值的子集。

如果 UPDATE 语句没有 WHERE 子句,则表中的所有行均由 UPDATE 修改。否则,UPDATE 仅影响 WHERE 子句布尔表达式为真的那些行。如果 WHERE 子句对于表中的任何行都不计算为真,这并不是错误 - 这只是表示 UPDATE 语句会影响零行。

受 UPDATE 语句影响的每行的修改由 SET 关键字后面的赋值列表确定。每个赋值指定等号左边的列名称和右边的标量表达式。对于每个受影响的行,将命名列设置为通过评估相应标量表达式找到的值。如果单个列名在赋值表达式列表中多次出现,则忽略除最右侧的所有事件以外的所有事件。没有出现在分配列表中的列未被修改。标量表达式可能涉及正在更新的行的列。在这种情况下,所有标量表达式在进行任何分配之前都会被评估。

从SQLite 版本3.15.0(2016-10-14)开始,SET子句中的赋值可以是左侧列表名称的列表以及右侧相同大小的行值。

在 UPDATE 关键字后面的可选 “OR action ” 冲突条款允许用户在这一个 UPDATE 命令期间提名特定的约束冲突解决算法。有关更多信息,请参阅标题为 “CONFLICT” 的部分。

CREATE TRIGGER 中 UPDATE 语句的限制

以下附加语法限制适用于在 CREATE TRIGGER 语句的主体内发生的 UPDATE 语句。

  • 在触发器体内指定为 UPDATE 语句的一部分的表名必须是不合格的。换句话说,模式名称触发器中不允许在 UPDATE 表名上使用前缀。除非触发器附加到的表位于 TEMP 数据库中,否则由触发器程序更新的表必须与它位于同一个数据库中。如果触发器附加到的表位于 TEMP 数据库中,那么正在更新的表的非限定名称将按照与顶级语句相同的方式进行解析(首先搜索 TEMP 数据库,然后再搜索主数据库,然后是任何其他数据库按照它们附加的顺序)。
  • 触发器中的 UPDATE 语句不允许 INDEXED BY 和 NOT INDEXED 子句。
  • 无论用于构建SQLite的编译选项如何,触发器都不支持 UPDATE 的 LIMIT 和 ORDER BY 子句。

可选的LIMIT和ORDER BY子句

如果 SQLite 是使用 SQLITE_ENABLE_UPDATE_DELETE_LIMIT 编译时选项构建的,那么 UPDATE 语句的语法将扩展为可选的 ORDER BY 和 LIMIT 子句,如下所示:

update-stmt-limited:

UPDATE

如果 UPDATE 语句具有 LIMIT 子句,则通过评估随附的表达式并将其转换为整数值来找到将要更新的最大行数。负值被解释为“no limit”。

如果 LIMIT 表达式的计算结果为非负值N,并且 UPDATE 语句具有 ORDER BY 子句,则在缺少 LIMIT 子句的情况下将更新的所有行都将根据 ORDER BY 进行排序并更新前N个。如果UPDATE语句也有一个 OFFSET 子句,那么它被类似地评估并转换为一个整数值。如果 OFFSET 表达式的计算结果为非负值M,则跳过前面的M行,然后更新后面的N行。

如果 UPDATE 语句没有 ORDER BY 子句,那么在应用 LIMIT 和 OFFSET 子句以确定哪些实际更新之前,在没有 LIMIT 子句的情况下将被更新的所有行将以任意顺序组合。

UPDATE 语句中的 ORDER BY 子句仅用于确定哪些行落入 LIMIT 中。行被修改的顺序是任意的,不受 ORDER B子句的影响。

 SQLite is in the Public Domain.
Sqlite

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来

主页 https://sqlite.org/
源码 https://www.sqlite.org/src/
发布版本 3.21.0

Sqlite目录

1.C界面 | C Interface
2.C Interface: Session Module
3.CLI
4.数据库文件表 | Database File Format
5.数据类 | Datatypes
6.动态内存分配 | Dynamic Memory Allocation
7.外键约束 | Foreign Key Constraints
8.全文索引 | Full-Text Search
9.损坏方式 | How To Corrupt
10.JSON
11.语言 | Language
12.局限性 | Limits
13.锁定和并发 | Locking and Concurrency
14.其他 | Miscellaneous
15.PRAGMA Statements
16.查询计划程序 | Query Planner
17.R*Tree Module
18.RBU Extension
19.语法图 | Syntax Diagrams
20.Tcl Interface
21.虚拟表机制 | Virtual Table Mechanism
22.预写日志 | Write-Ahead Logging
23.SQL 教程
24.SQL 简介
25.SQL 语法
26.SQL DELETE 语句
27.SQL UPDATE 语句
28.SQL NOT NULL 约束
29.SQL 约束
30.SQL CREATE TABLE 语句
31.SQL CREATE DATABASE 语句
32.SQL INSERT INTO SELECT 语句
33.SQL SELECT INTO 语句
34.SQL CREATE VIEW、REPLACE VIEW、 DROP VIEW 语句
35.SQL AUTO INCREMENT 字段
36.SQL ALTER TABLE 语句
37.SQL 撤销索引、表以及数据库
38.SQL CREATE INDEX 语句
39.SQL DEFAULT 约束
40.SQL CHECK 约束
41.SQL FOREIGN KEY 约束
42.SQL PRIMARY KEY 约束
43.SQL UNIQUE 约束
44.SQL 通用数据类型
45.SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数
46.SQL NULL 值 – IS NULL 和 IS NOT NULL
47.SQL Server 和 MySQL 中的 Date 函数
48.SQL MS Access、MySQL 和 SQL Server 数据类型
49.SQL 函数
50.SQL 总结
51.SQL 主机
52.SQL 快速参考
53.SQL ROUND() 函数
54.SQL Server GETDATE() 函数
55.MySQL DATE_FORMAT() 函数
56.MySQL DATEDIFF() 函数
57.MySQL DATE_SUB() 函数
58.MySQL DATE_ADD() 函数
59.MySQL EXTRACT() 函数
60.MySQL DATE() 函数
61.MySQL CURTIME() 函数
62.MySQL CURDATE() 函数
63.MySQL NOW() 函数
64.SQL Server CONVERT() 函数
65.SQL Server DATEDIFF() 函数
66.SQL Server DATEADD() 函数
67.SQL Server DATEPART() 函数
68.SQLite 命令
69.SQLite 安装
70.SQLite 简介
71.SQLite 运算符
72.SQLite Select 语句
73.SQLite 删除表
74.SQLite 创建表
75.SQLite Insert 语句
76.SQLite 分离数据库
77.SQLite 附加数据库
78.SQLite 创建数据库
79.SQLite 数据类型
80.SQLite 语法
81.SQLite Order By
82.SQLite Limit 子句
83.SQLite Glob 子句
84.SQLite Like 子句
85.SQLite Delete 语句
86.SQLite Update 语句
87.SQLite AND/OR 运算符
88.SQLite Where 子句
89.SQLite 表达式
90.SQLite Distinct 关键字
91.SQLite Having 子句
92.SQLite Group By
93.SQLite Join
94.SQLite 约束
95.SQLite PRAGMA
96.SQLite 事务
97.SQLite 视图
98.SQLite Truncate Table
99.SQLite Alter 命令
100.SQLite Indexed By