⑴ 第八十二章 SQL命令 UPDATE(一)
为指定表中的指定列设置新值。
UPDATE 命令更改表中列的现有值。
可以直接更新表中的数据,也可以通过视图进行更新,或者使用括在括号中的子查询进行更新。
通过视图进行更新受制于需求和限制,如 CREATE view 中所述。
UPDATE 命令为包含这些列的一个或多个现有基表行提供一个或多个新列值。
将数据值赋给列是使用值赋值语句完成的。
默认情况下,值赋值语句更新表中的所有行。
更常见的是, UPDATE 根据条件表达式指定对特定的行(或行)进行更新。
默认情况下, UPDATE 操作遍历表中的所有行,并更新满足条件表达式的所有行。
如果没有行满足条件表达式, UPDATE 将成功完成并设置 SQLCODE=100 (不再有数据)。
可以指定 WHERE 子句或 WHERE CURRENT OF 子句(但不能同时指定两者)。
如果使用了 WHERE CURRENT OF 子句, UPDATE 将更新游标当前位置的记录。
定位操作请参见 WHERE CURRENT OF 。
UPDATE 操作将 %ROWCOUNT 局部变量设置为更新的行数,将 %ROWID 局部变量设置为更新的最后一行的 ROWID 值。
默认情况下, UPDATE 操作是一个全有或全无事件。
要么更新所有指定的行和列,要么不更新。
INSERT OR UPDATE 语句是 INSERT 语句的变体,执行插入和更新操作。
首先,它尝试执行一个插入操作。
如果插入请求失败由于违反唯一键(字段( s )的一些独特的关键,存在这一行已经有相同的值( s )为插入指定的行),然后它会自动变成一个更新请求这一行,并插入或更新使用指定的字段值来更新现有的行。
默认情况下,多行UPDATE是一个原子操作。
如果不能更新一行或多行,则 UPDATE 操作失败,不会更新任何行。
IRIS设置 SQLCODE 变量,该变量指示 UPDATE 的成功或失败,如果操作失败,还设置 %msg 。
要更新表,更新必须满足所有表、列名和值要求,如下所示。
表:
列名和值:
唯一的例外是将 SERIAL (%Library.Counter) 字段添加到具有现有数据的表时。
对于这个添加的计数器字段,现有的记录将具有NULL值。
在这种情况下,可以使用 UPDATE 将 NULL 更改为整数值。
可以通过多种方式为指定的列分配新值。
当将标量表达式值赋给列列表时,每个指定的列必须有一个标量表达式。
在为隐式列列表赋值时,必须按照 DDL 中定义的列的顺序为每个可更新字段提供一个值。
(没有指定不可更新的 RowID 列。)
这些值可以是指定新值的文字,也可以是指定现有值的字段名。
不能指定占位符逗号或省略尾随字段。
只能使用主机变量在嵌入式 SQL 中执行此值赋值。
与所有其他值赋值不同,这种用法允您延迟指定哪些列要更新到运行时(通过在运行时填充数组)。
所有其他类型的更新都要求必须在编译时指定要更新的列。
此语法不能用于链接表;
尝试这样做会导致 SQLCODE=-155 错误。
⑵ SQL语言中修改表中数据的命令是什么
SQL语言中修改表中数据的命令可以使用update。
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值;
更新修改语句 update table_name set col_name = xx where col_name = oo。
(2)sql更新命令扩展阅读
SQL语言修改数据库,移动数据库文件
ALTER DATABASE Publish SET OFFLINE/*将Publish数据库设置为离线(脱机)状态*/
ALTER DATABASE Publish
MODIFY FILE
(
NAME = 'Publish_n1'
FILENAME = 'D:Publish.ndf'
) /*数据库文件位置*/
ALTER DATABASE Publish SET ONLINE/*将数据库设置为联机状态*/
⑶ 第八十三章 SQL命令 UPDATE(二)
数据以逻辑模式格式存储。
例如,日期存储为整数天数,时间存储为从午夜开始的秒数, %List 存储为编码字符串。
大多数其他数据,如字符串和数字,不需要转换;
无论当前模式如何,它们都以相同的格式输入、更新和存储。
对于已转换的数据,可以在 LOGICAL 模式(默认)中更新数据值,或者通过指定选择模式,使用更易于阅读的格式( DISPLAY 模式或 ODBC 模式)更新数据值。
例如,通过指定选择模式,可以以 DISPLAY 格式(例如 2/22/2018 )、ODBC格式(例如 2018-02-22 )或逻辑格式(例如 64701 )更新日期。
对于某些数据类型,还可以在ODBC或 DISPLAY 选择模式下以 LOGICAL 格式指定数据。
IRIS支持列表结构数据类型 %list (数据类型类 %Library.List )。
这是一种压缩的二进制格式,并不映射到 SQL的相应本机数据类型。
它对应的数据类型为 VARBINARY ,默认 MAXLEN 为 32749 。
因此,动态SQL不能使用 UPDATE 或 INSERT 来设置类型为 %List 的属性值。
可以按照如下方法更新流字段中的数据值:
或流的 OREF 的字符串版本,例如:
不能使用流字段的内容更新非流字段。
这将导致一个 SQLCODE -303 错误:“不支持在UPDATE赋值中隐式地将流值转换为非流字段”。
要用 Stream 数据更新字符串字段,必须首先使用 SUBSTRING 函数将 Stream 数据的前 n 个字符转换为字符串,如下面的示例所示:
用 COMPUTECODE 定义的字段可以作为 UPDATE 操作的一部分重新计算它的值,如下所示:
当没有实际更新发生时, COMPUTEONCHANGE 计算字段不会重新计算:当 update 操作的新字段值与之前的字段值相同时。
在大多数情况下,将计算字段定义为只读。
这防止更新操作直接更改一个值,该值是涉及其他字段值的计算结果。
在本例中,试图使用 UPDATE 覆盖计算字段的值将导致 SQLCODE -138 错误。
但是,可能希望修改一个计算字段值,以反映对一个(或多个)源字段值的更新。
可以通过使用更新触发器来实现这一点,该更新触发器在您更新了指定的源字段之后重新计算计算过的字段值。
例如,对 Salary 数据字段的更新可能触发重新计算 Bonus computed 字段的触发器。
这个更新触发器重新计算 Bonus 并成功完成,即使 Bonus 是一个只读字段。
可以使用 CREATE TABLE ON UPDATE 关键字短语来定义一个字段,当记录被更新时,该字段被设置为文字或系统变量(例如当前时间戳)。
当更新 %SerialObject 中的数据时,必须更新引用嵌入 %SerialObject 的表(持久化类);
不能直接更新 %SerialObject 。
从引用表中,可以:
此类型的更新可能不会执行 %SerialObject 属性值的验证。因此,强烈建议在使用%List结构更新 %SerialObject 属性值之后,使用 $SYSTEM.SQL.Schema.ValidateTable() 方法执行表数据验证。
此类型的更新执行 %SerialObject 属性值的验证。
UPDATE 命令可能没有 FROM 关键字。它可以简单地指定要更新的表(或视图),并使用 WHERE 子句选择要更新的行。
但是,还可以在 value-assignment -语句之后包括一个可选的 FROM 子句。此 FROM 子句指定用于确定要更新哪些记录的一个或多个表。 FROM 子句通常(但并非总是)与涉及多个表的 WHERE 子句一起使用。 FROM 子句可以很复杂,并且可以包括ANSI联接语法。 UPDATE FROM 子句允许 SELECT FROM 子句中支持的任何语法。此 UPDATE FROM 子句提供与 Transact-SQL 的功能兼容性。
以下示例显示如何使用此 FROM 子句。它更新 Employees 表中的那些记录,其中也可以在 Requirees 表中找到相同的 EmpId :
如果 UPDATE TABLE-REF 和 FROM 子句引用同一个表,则这些引用可能是引用同一个表,也可能是引用该表的两个实例的联接。这取决于如何使用表别名:
指定 %Keyword 参数将按如下方式限制处理:
注意:由于使用 %NOCHECK 可能导致无效数据,因此只有在从可靠的数据源执行批量插入或更新时才应使用此%关键字参数。
用户必须具有当前命名空间的相应 %NOCHECK 管理权限才能应用此限制。否则将导致 SQLCODE-99 错误,因为 %msg 用户 ‘name’ 没有 %NOCHECK 权限。
如果希望在指定 %NOCHECK 时阻止导致非唯一数据值的更新,请在更新之前执行 EXISTS 检查。
如果只希望禁用外键引用完整性检查,请使用 $SYSTEM.SQL.Util.SetOption(“FilerRefIntegrity”) 方法,而不是指定 %NOCHECK 。或者,可以使用 NOCHECK 关键字定义外键,这样就永远不会执行外键引用完整性检查。
%PROFILE 为主查询模块收集 SQLStats 。
%PROFILE_ALL 为主查询模块及其所有子查询模块收集 SQLStats 。
可以以任何顺序指定多个 %keyword 参数。
多个参数由空格分隔。
⑷ 、SQL语言中,删除、创建基本表的命令,删除、更新、增加数据的命令
创建数据库:Create database bookstore;删除数据库:drop database bookstore;UPDATE databases是更新数据库。
⑸ 修改表结构的sql命令
SQL语句中修改表结构的命令是ALTER TABLE。ALTER TABLE 语句用于在已有的表中添加、修改或删除列。
案例:表结构CREATE TABLE `login_user` ( `id` int(32) NOT NULL AUTO_INCREMENT, `name` varchar(225) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '名字'。
sql命令:
1、update :用于更新表中的数据
update table_name
set goods_name=a,goods_id=b,...
WHEREsome_column=some_value;
2、delete:用于删除表中的行
delete from table_name where some_column=some_value;
注:where语句是指定哪条记录被更新,如果省略了则所有记录都被更新。