⑴ 第八十二章 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語句是指定哪條記錄被更新,如果省略了則所有記錄都被更新。