當前位置:首頁 » 操作系統 » 資料庫withupdate

資料庫withupdate

發布時間: 2022-09-24 09:07:01

① oracle資料庫update語句

  1. 使用b表數據更新a表,那麼where條件是什麼,也就是說,更新a表中哪些數據,用b表中的哪些數據更新,二者的關系是什麼。從你的語句中我看不出b表和a表的關聯。

  2. 找到關聯條件後,通過關聯條件查出的b表數據是否唯一,如果不唯一,還是會出現「返回值多於一行」的錯誤。

  3. 按照你的表結構和數據,假設A表和B表中的name列唯一,以name作為關聯,可以這樣寫來實現你的更新目的。

  4. update A set cou2 = (select B_cou1 from B where B.B_name = A.name) where name in (select B_name from B where B.B_name = A.name)

  5. 這條語句必須滿足name在a、b表中唯一的條件,才能使用。

sql資料庫裡面表的創建時間怎麼改

放到查詢分析器里執行
use
資料庫名
sp_configure
'allow
updates',1
reconfigure
with
override
go
update
sysobjects
set
crdate='2007-05-30'
where
id=object_id('表名')
go
sp_configure
'allow
updates',0
reconfigure
with
override
可能會碰到一個錯誤提示:「未啟用對系統目錄的特殊更新。
打開mssql
server
屬性---》伺服器選項----》啟用對系統目錄的特殊更新(允許對系統目錄進行直接修改)
即可。

③ 在資料庫(MS-SQL)中,UPDATE的用法,UPDATE表示用(NOLOCK)與不用(NOLOCK)的區別

NOLOCK是指在多用戶存取資料庫時別的用戶是否對某一紀錄或表加鎖,如果加鎖了,就不更新,等鎖被釋放後再更新.避免數據的"臟讀".
http://blog.csdn.net/riyao/article/details/8113372

④ SQL 中UPDATE用法

Update是一個資料庫SQL語法用語,用途是更新表中原有數據,單獨使用時使用where匹配欄位。

語法為:UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值

例如:Update table_name Set column_name = new_value Where column_name = some_value

(4)資料庫withupdate擴展閱讀

update使用注意事項:

1、sp_updatestats可以更新統計信息到最新。

2、低內存會導致未被客戶端連接的查詢計劃被清除。

3、修改表結構,修改索引後,查詢計劃會被清除,可以再修改後運行幾遍查詢。

4、使用update時候,order by 會影響查詢速度,where中使用函數則會調用篩選器進行掃描,掃描表要盡量避免。

參考資料來源:網路—update

⑤ 資料庫事務的四個隔離級別,mysql在哪一個級別

為了給程序配置資源隔離,通常我們會到 cgroup 層級樹下的控制器⾥,創建或者修改控制組⽂件。

修改方法

有兩種方法可以對配置了 systemd 的程序進行資源隔離:1. 命令行修改:通過執行systemctl set-property命令實現,形式為systemctl set-propertyname parameter=value;修改默認即時生效。2. 手工修改文件:直接編輯程序的 systemd unit file 文件,完成之後需手工執行systemctldaemon-reload更新配置,並重啟服務systemctl restart name.service。

systemd unit file 里支持的資源隔離配置項,如常見的:

  • CPUQuota=value

    該參數表示服務可以獲取的最大 CPU 時間,value 為百分數形式,高於 100% 表示可使用1 核以上的CPU。與 cgroup cpu 控制器cpu.cfs_quota_us配置項對應。

  • MemoryLimit=value

    該參數表示服務可以使用的最大內存量,value 可以使用 K, M, G, T 等後綴表示值的大小。與 cgroupmemory 控制器memory.limit_in_bytes配置項對應。

  • 事務的4種隔離級別

    READ UNCOMMITTED 未提交讀,可以讀取未提交的數據。

    READ COMMITTED 已提交讀,對於鎖定讀(select with for update 或者 for share)、update 和 delete 語句,InnoDB 僅鎖定索引記錄,而不鎖定它們之間的間隙,因此允許在鎖定的記錄旁邊自由插入新記錄。

    Gap locking 僅用於外鍵約束檢查和重復鍵檢查。

    REPEATABLE READ 可重復讀,事務中的一致性讀取讀取的是事務第一次讀取所建立的快照。

    SERIALIZABLE 序列化在了解了 4 種隔離級別的需求後,在採用鎖控制隔離級別的基礎上,我們需要了解加鎖的對象(數據本身&間隙),以及了解整個數據范圍的全集組成。

    數據范圍全集組成

    SQL 語句根據條件判斷不需要掃描的數據范圍(不加鎖);

    SQL 語句根據條件掃描到的可能需要加鎖的數據范圍;

    以單個數據范圍為例,數據范圍全集包含:(數據范圍不一定是連續的值,也可能是間隔的值組成)

⑥ sql恢復修改前數據

一,如果是oracle資料庫,且剛刪除不久,那麼可以執行下面語句
insert
into
表名
select
*
from
表名
as
of
timestamp
to_timestamp('2007-07-23
10:20:00',
'yyyy-mm-dd
hh24:mi:ss');
語句中的日期時間改成你誤操作之前的最近時間
二,如果是sqlserver資料庫,那麼
1、首先對誤刪後的資料庫做個日誌備份;
backup
log
資料庫名
to
disk='路徑及日誌備份文件名'
2、把資料庫恢復到最近一次全庫備份的日期;
RESTORE
DATABASE
資料庫名
FROM
DISK='路徑及資料庫備份文件名'
WITH
REPLACE,NORECOVERY
3、用步驟1的日誌備份把資料庫恢復到你誤刪的那一刻之前;
RESTORE
LOG
資料庫名
FROM
DISK='路徑及日誌備份文件名'
WITH
RECOVERY,STOPAT='2009-4-24
16:40:10'
語句中的日期時間改成你誤操作之前的最近時間
三,如果修改之前有做資料庫備份,可以新建一個庫,把備份還原上去,導出表數據,再導入到現在用的庫中去。.
實時備份資料庫到另一個磁碟,有多種不同的實現方式,例如:
1,有兩台伺服器的話可以做雙機熱備
2,只有一台伺服器可以做磁碟鏡像
3,也可以用專門的資料庫備份軟體

⑦ sql2000資料庫置疑怎麼處理

1、新建一同名資料庫(文件名,文件組都和原來的一樣),然後停止資料庫服務,用原來文件替換新建的資料庫文件,啟動資料庫,該資料庫被設為suspect
2、把資料庫改成緊急模式:
sp_configure
'allow',
1
reconfigure
with
override
update
sysdatabases
set
status
=
32768
where
name
=
'資料庫名'
3、把LDF文件改名,再執行
DBCC
REBUILD_LOG
('資料庫名',
'E:\fdzz\database\fdzz1204_Log.LDF'
)
4、恢復資料庫緊急模式
update
sysdatabases
set
status
=
0
where
name
=
'資料庫名'
如果不行,你就去看這篇文章.
http://www.flashmayi.com/article/show.php?id=8363&spn=1

⑧ SQL裡面update 的用法

UPDATE
更改表中的現有數據。

語法
UPDATE
{
table_name WITH ( < table_hint_limited > [ ...n ] )
| view_name
| rowset_function_limited
}
SET
{ column_name = { expression | DEFAULT | NULL }
| @variable = expression
| @variable = column = expression } [ ,...n ]

{ { [ FROM { < table_source > } [ ,...n ] ]

[ WHERE
< search_condition > ] }
|
[ WHERE CURRENT OF
{ { [ GLOBAL ] cursor_name } | cursor_variable_name }
] }
[ OPTION ( < query_hint > [ ,...n ] ) ]

< table_source > ::=
table_name [ [ AS ] table_alias ] [ WITH ( < table_hint > [ ,...n ] ) ]
| view_name [ [ AS ] table_alias ]
| rowset_function [ [ AS ] table_alias ]
| derived_table [ AS ] table_alias [ ( column_alias [ ,...n ] ) ]
| < joined_table >

< joined_table > ::=
< table_source > < join_type > < table_source > ON < search_condition >
| < table_source > CROSS JOIN < table_source >
| < joined_table >

< join_type > ::=
[ INNER | { { LEFT | RIGHT | FULL } [OUTER] } ]
[ < join_hint > ]
JOIN

< table_hint_limited > ::=
{ FASTFIRSTROW
| HOLDLOCK
| PAGLOCK
| READCOMMITTED
| REPEATABLEREAD
| ROWLOCK
| SERIALIZABLE
| TABLOCK
| TABLOCKX
| UPDLOCK
}

< table_hint > ::=
{ INDEX ( index_val [ ,...n ] )
| FASTFIRSTROW
| HOLDLOCK
| NOLOCK
| PAGLOCK
| READCOMMITTED
| READPAST
| READUNCOMMITTED
| REPEATABLEREAD
| ROWLOCK
| SERIALIZABLE
| TABLOCK
| TABLOCKX
| UPDLOCK
}

< query_hint > ::=
{ { HASH | ORDER } GROUP
| { CONCAT | HASH | MERGE } UNION
| {LOOP | MERGE | HASH } JOIN
| FAST number_rows
| FORCE ORDER
| MAXDOP
| ROBUST PLAN
| KEEP PLAN
}

參數
table_name

需要更新的表的名稱。如果該表不在當前伺服器或資料庫中,或不為當前用戶所有,這個名稱可用鏈接伺服器、資料庫和所有者名稱來限定。

WITH ( < table_hint_limited > [ ...n ] )

指定目標表所允許的一個或多個表提示。需要有 WITH 關鍵字和圓括弧。不允許有 READPAST、NOLOCK 和 READUNCOMMITTED。有關表提示的信息,請參見 FROM。

view_name

要更新的視圖的名稱。通過 view_name 來引用的視圖必須是可更新的。用 UPDATE 語句進行的修改,至多隻能影響視圖的 FROM 子句所引用的基表中的一個。有關可更新視圖的更多信息,請參見 CREATE VIEW。

rowset_function_limited

OPENQUERY 或 OPENROWSET 函數,視提供程序功能而定。有關提供程序所需功能的更多信息,請參見 OLE DB 提供程序的 UPDATE 和 DELETE 語句要求。有關行集函數的更多信息,請參見 OPENQUERY 和 OPENROWSET。

SET

指定要更新的列或變數名稱的列表。

column_name

含有要更改數據的列的名稱。column_name 必須駐留於 UPDATE 子句中所指定的表或視圖中。標識列不能進行更新。

如果指定了限定的列名稱,限定符必須同 UPDATE 子句中的表或視圖的名稱相匹配。例如,下面的內容有效:

UPDATE authors
SET authors.au_fname = 'Annie'
WHERE au_fname = 'Anne'

FROM 子句中指定的表的別名不能作為 SET column_name 子句中的限定符使用。例如,下面的內容無效:

UPDATE titles
SET t.ytd_sales = t.ytd_sales + s.qty
FROM titles t, sales s
WHERE t.title_id = s.title_id
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)

若要使上例合法,請從列名中刪除別名 t。

UPDATE titles
SET ytd_sales = t.ytd_sales + s.qty
FROM titles t, sales s
WHERE t.title_id = s.title_id
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)

expression

變數、字面值、表達式或加上括弧的返回單個值的 subSELECT 語句。expression 返回的值將替換 column_name 或 @variable 中的現有值。

DEFAULT

指定使用對列定義的默認值替換列中的現有值。如果該列沒有默認值並且定義為允許空值,這也可用來將列更改為 NULL。

@variable

已聲明的變數,該變數將設置為 expression 所返回的值。

SET @variable = column = expression 將變數設置為與列相同的值。這與 SET @variable = column, column = expression 不同,後者將變數設置為列更新前的值。

FROM < table_source >

指定用表來為更新操作提供准則。有關更多信息,請參見 FROM。

table_name [[AS] table_alias ]
為更新操作提供准則的表的名稱。
如果所更新表與 FROM 子句中的表相同,並且在 FROM 子句中對該表只有一個引用,則指定或不指定 table_alias 均可。如果所更新表在 FROM 子句中出現了不止一次,則對該表的一個(且僅僅一個)引用不能指定表的別名。FROM 子句中對該表的所有其它引用都必須包含表的別名。

view_name [ [ AS ] table_alias ]
為更新操作提供准則的視圖的名稱。帶 INSTEAD OF UPDATE 觸發器的視圖不能是含有 FROM 子句的 UPDATE 的目標。

WITH ( < table_hint > [ ...n ] )
為源表指定一個或多個表提示。有關表提示的信息,請參見本卷的"FROM"。

rowset_function [ [AS] table_alias ]
任意行集函數的名稱和可選別名。有關行集函數列表的信息,請參見行集函數。

derived_table
是從資料庫中檢索行的子查詢。derived_table 用作對外部查詢的輸入。

column_alias
替換結果集內列名的可選別名。在選擇列表中放入每個列的一個別名,並將整個列別名列表用圓括弧括起來。
<joined_table>

由兩個或更多表的積組成的結果集,例如:

SELECT *
FROM tab1 LEFT OUTER JOIN tab2 ON tab1.c3 = tab2.c3
RIGHT OUTER JOIN tab3 LEFT OUTER JOIN tab4
ON tab3.c1 = tab4.c1
ON tab2.c3 = tab4.c3

對於多個 CROSS 聯接,請使用圓括弧來更改聯接的自然順序。

<join_type>

指定聯接操作的類型。

INNER
指定返回所有相匹配的行對。廢棄兩個表中不匹配的行。如果未指定聯接類型,則這是默認設置。

LEFT [OUTER]
指定除所有由內聯接返回的行外,所有來自左表的不符合指定條件的行也包含在結果集內。來自左表的輸出列設置為 NULL。

RIGHT [OUTER]
指定除所有由內聯接返回的行外,所有來自右表的不符合指定條件的行也包含在結果集內。來自右表的輸出列設置為 NULL。

FULL [OUTER]
如果來自左表或右表的某行與選擇准則不匹配,則指定在結果集內包含該行,並且將與另一個表對應的輸出列設置為 NULL。除此之外,結果集中還包含通常由內聯接返回的所有行。

<join_hint>
指定聯接提示或執行演算法。如果指定了 <join_hint>,也必須明確指定 INNER、LEFT、RIGHT 或 FULL。有關聯接提示的更多信息,請參見 FROM。

JOIN
表示聯接所指定的表或視圖。
ON <search_condition>

指定聯接所基於的條件。盡管經常使用列和比較運算符,但此條件可指定任何謂詞,例如:

FROM Suppliers JOIN Procts
ON (Suppliers.SupplierID = Procts.SupplierID)

當條件指定列時,列不一定必須具有相同的名稱或數據類型;但是,如果數據類型不一致,則這些列要麼必須相互兼容,要麼是 Microsoft® SQL Server™ 能夠隱性轉換的類型。如果數據類型不能隱式轉換,則條件必須使用 CAST 函數顯式轉換數據類型。

有關搜索條件和謂詞的更多信息,請參見搜索條件。

CROSS JOIN

指定兩個表的矢量積。返回同樣的行,就像要聯接的表只列於 FROM 子句中,並且未指定 WHERE 子句。

WHERE

指定條件來限定所更新的行。根據所使用的 WHERE 子句的形式,有兩種更新形式:

搜索更新指定搜索條件來限定要刪除的行。

定位更新使用 CURRENT OF 子句指定游標。更新操作發生在游標的當前位置。
<search_condition>

為要更新行指定需滿足的條件。搜索條件也可以是聯接所基於的條件。對搜索條件中可以包含的謂詞數量沒有限制。有關謂詞和搜索條件的更多信息,請參見搜索條件。

CURRENT OF

指定更新在指定游標的當前位置進行。

GLOBAL

指定 cursor_name 指的是全局游標。

cursor_name

要從中進行提取的開放游標的名稱。如果同時存在名為 cursor_name 的全局游標和局部游標,則在指定了 GLOBAL 時,cursor_name 指的是全局游標。如果未指定 GLOBAL,則 cursor_name 指局部游標。游標必須允許更新。

cursor_variable_name

游標變數的名稱。cursor_variable_name 必須引用允許更新的游標。

OPTION ( < query_hint > [ ,...n ] )

指定優化程序提示用於自定義 SQL Server 的語句處理。

{ HASH | ORDER } GROUP
指定在查詢的 GROUP BY 或 COMPUTE 子句中指定的聚合使用哈希或排列。

{ LOOP | MERGE | HASH |} JOIN
指定在整個查詢中所有的聯接操作由循環聯接、合並聯接或哈希聯接來完成。如果指定了不止一個聯接提示,則查詢優化器為允許的聯接選擇開銷最少的聯接策略。如果在同一個查詢中也為特定表對指定了聯接提示,則該提示在兩表的聯接中優先。

{ MERGE | HASH | CONCAT } UNION
指定所有的 UNION 操作通過合並、哈希或串聯 UNION 集合來完成。如果指定了不止一個 UNION 提示,查詢優化器就會從這些指定的提示中選擇開銷最少的策略。

說明 如果在 FROM 子句中亦為任何特定聯接表對指定了聯接提示,則該提示優先於任何 OPTION 子句中指定的聯接提示。

FAST number_rows
指定對查詢進行優化,以便快速檢索第一個 number_rows(非負整數)。在第一個 number_rows 返回後,查詢繼續進行並生成完整的結果集。

FORCE ORDER
指定查詢語法所指示的聯接順序在查詢優化過程中予以保留。

MAXDOP number
只對指定了 sp_configure 的 max degree of parallelism 配置選項的查詢替代該選項。當使用 MAXDOP 查詢提示時,所有和 max degree of parallelism 配置選項一起使用的語義規則均適用。有關更多信息,請參見 max degree of parallelism 選項。

ROBUST PLAN
強制查詢優化器嘗試執行一個計劃,該計劃以性能為代價獲得最大可能的行大小。如果沒有可行的計劃,則查詢優化器返回錯誤,而不是將錯誤檢測延遲至查詢執行。行可能包含長度可變的列;SQL Server 允許定義最大可能大小超出 SQL Server 處理能力的行。通常,應用程序存儲實際大小在 SQL Server 處理能力范圍內的行,而不管最大可能大小。如果 SQL Server 遇到過長的行,則返回執行錯誤。
KEEP PLAN

強制查詢優化器對查詢放寬估計的重新編譯閾值。當對表中索引列的更改(更新、刪除或插入)達到估計數目時查詢會自動重新編譯,該估計數目即為重新編譯閾值。指定 KEEP PLAN 將確保當表有多個更新時不會頻繁地對查詢進行重新編譯。

注釋
僅當所修改的表是 table 變數時,用戶定義的函數的主體中才允許使用 UPDATE 語句。

table 變數在其作用域內可以像常規表一樣訪問。這樣,table 變數可作為一個表來使用,在該表中數據用 UPDATE 語句進行更新。

用 OPENDATASOURCE 函數構造的、作為伺服器名稱部分的一個四段名稱,在 UPDATE 語句中可以出現表名的任何地方都可作為表源使用。

如果對行的更新違反了某個約束或規則,或違反了對列的 NULL 設置,或者新值是不兼容的數據類型,則取消該語句、返回錯誤並且不更新任何記錄。

當 UPDATE 語句在表達式取值過程中遇到算術錯誤(溢出、被零除或域錯誤)時,則不進行更新。批處理的剩餘部分不再執行,並且返回錯誤信息。

如果對參與聚集索引的一列或多列的更新導致聚集索引和行的大小超過 8,060 位元組,則更新失敗並且返回錯誤信息。

當對表的 UPDATE 操作定義 INSTEAD-OF 觸發器時,將執行觸發器而不執行 UPDATE 語句。SQL Server 以前的版本只支持在 UPDATE 和其它數據修改語句中定義 AFTER 觸發器。

當更新查詢既更新聚集鍵又更新一個或多個 text、image 或 Unicode 列時,如果可以更改不止一行,則更新操作失敗,SQL Server 返回錯誤信息。

用 UPDATE 修改 text、ntext 或 image 列時將對列進行初始化,向其指派有效文本指針,並且分配至少一個數據頁(除非用 NULL 更新該列)。

說明 UPDATE 語句將記入日誌。如果要替換或修改大塊的 text、ntext 或 image 數據,請使用 WRITETEXT 或 UPDATETEXT 語句而不要使用 UPDATE 語句。WRITETEXT 和 UPDATETEXT 語句(根據默認)不記入日誌。

所有的 char 和 nchar 列向右填充至定義長度。

對於用於遠程表以及本地和遠程分區視圖的 UPDATE 語句,忽略 SET ROWCOUNT 選項的設置。

如果 ANSI_PADDING 設置為 OFF,則會從插入 varchar 和 nvarchar 列的數據中刪除所有尾隨空格,但只包含空格的字元串除外。這些字元串被截斷為空字元串。如果 ANSI_PADDING 設置為 ON,則插入尾隨空格。Microsoft SQL Server ODBC 驅動程序和用於 SQL Server 的 OLE DB 提供程序自動對每個連接設置 ANSI_PADDING ON。這可在 ODBC 數據源中進行配置,或者通過設置連接特性或屬性進行設置。

使用 WHERE CURRENT OF 子句的定位更新將在游標的當前位置更新單行。這比使用 WHERE <search_condition> 子句限定要更新的行的搜索更新更為精確。當搜索條件不唯一標識一行時,搜索更新將修改多行。

如果 UPDATE 語句包含了未指定每個所更新列的位置只有一個可用值的 FROM 子句(換句話說,如果 UPDATE 語句是不確定性的),則其結果將不明確。例如,對於下面腳本中的 UPDATE 語句,表 s 中的兩行都滿足 UPDATE 語句中的 FROM 子句的限定條件,但是將用 s 的哪一行來更新表 t 內的行是不明確的。

CREATE TABLE s (ColA INT, ColB DECIMAL(10,3))
GO
CREATE TABLE t (ColA INT PRIMARY KEY, ColB DECIMAL(10,3))
GO
INSERT INTO s VALUES(1, 10.0)
INSERT INTO s VALUES(1, 20.0)
INSERT INTO t VALUES(1, 0.0)
GO
UPDATE t
SET t.ColB = t.ColB + s.ColB
FROM t INNER JOIN s ON (t.ColA = s.ColA)
GO

當組合 FROM 和 WHERE CURRENT OF 子句時,可能發生同樣的問題。在本例中,表 t2 中的兩行都滿足 UPDATE 語句中的 FROM 子句的限定條件。將用表 t2 的哪一行來更新表 t1 中的行是不明確的。

CREATE TABLE t1(c1 INT PRIMARY KEY, c2 INT)
GO
CREATE TABLE t2(d1 INT PRIMARY KEY, d2 INT)
GO
INSERT INTO t1 VALUES (1, 10)
INSERT INTO t2 VALUES (1, 20)
INSERT INTO t2 VALUES (2, 30)
go

DECLARE abc CURSOR LOCAL FOR
SELECT * FROM t1

OPEN abc

FETCH abc

UPDATE t1 SET c2 = c2 + d2
FROM t2
WHERE CURRENT OF abc
GO

設置變數和列
變數名可用於 UPDATE 語句來顯示受影響的舊值和新值。這種方法應該僅用在 UPDATE 語句隻影響單個記錄時;如果 UPDATE 語句影響多個記錄,則變數只含有所更新行中的一行的值。

許可權
UPDATE 許可權默認授予 sysadmin 固定伺服器角色成員、db_owner 和 db_datawriter 固定資料庫角色成員以及表的所有者。sysadmin、db_owner 和 db_securityadmin 角色的成員和表所有者可以將許可權轉讓給其他用戶。

如果 UPDATE 語句包含 WHERE 子句,或 SET 子句中的 expression 使用了表中的某個列,則還要求所更新表的 SELECT 許可權。

示例
A. 使用簡單的 UPDATE
下列示例說明如果從 UPDATE 語句中去除 WHERE 子句,所有的行會受到什麼影響。

下面這個例子說明,如果表 publishers 中的所有出版社將總部搬遷到喬治亞州的亞特蘭大市,表 publishers 如何更新。

UPDATE publishers
SET city = 'Atlanta', state = 'GA'

本示例將所有出版商的名字變為 NULL。

UPDATE publishers
SET pub_name = NULL

也可以在更新中使用計算值。本示例將表 titles 中的所有價格加倍。

UPDATE titles
SET price = price * 2

B.把 WHERE 子句和 UPDATE 語句一起使用
WHERE 子句指定要更新的行例如,在下面這個虛構的事件中,北加利福尼亞更名為 Pacifica(縮寫為 PC),而奧克蘭的市民投票決定將其城市的名字改為 Bay City。這個例子說明如何為奧克蘭市以前的所有居民(他們的地址已經過時)更新表 authors。

UPDATE authors
SET state = 'PC', city = 'Bay City'
WHERE state = 'CA' AND city = 'Oakland'

必須編寫另一個語句來更改北加利福尼亞其它城市的居民所在的州名。

C.通過 UPDATE 語句使用來自另一個表的信息
本示例修改表 titles 中的 ytd_sales 列,以反映表 sales 中的最新銷售記錄。

UPDATE titles
SET ytd_sales = titles.ytd_sales + sales.qty
FROM titles, sales
WHERE titles.title_id = sales.title_id
AND sales.ord_date = (SELECT MAX(sales.ord_date) FROM sales)

這個例子假定,一種特定的商品在特定的日期只記錄一批銷售量,而且更新是最新的。如果不是這樣(即如果一種特定的商品在同一天可以記錄不止一批銷售量),這里所示的例子將出錯。例子可正確執行,但是每種商品只用一批銷售量進行更新,而不管那一天實際銷售了多少批。這是因為一個 UPDATE 語句從不會對同一行更新兩次。

對於特定的商品在同一天可銷售不止一批的情況,每種商品的所有銷售量必須在 UPDATE 語句中合計在一起,如下例所示:

UPDATE titles
SET ytd_sales =
(SELECT SUM(qty)
FROM sales
WHERE sales.title_id = titles.title_id
AND sales.ord_date IN (SELECT MAX(ord_date) FROM sales))
FROM titles, sales

D. 將 UPDATE 語句與 SELECT 語句中的 TOP 子句一起使用
這個例子對來自表 authors 的前十個作者的 state 列進行更新。

UPDATE authors
SET state = 'ZZ'
FROM (SELECT TOP 10 * FROM authors ORDER BY au_lname) AS t1
WHERE authors.au_id = t1.au_id

⑨ with a as (select * from ) 怎麼用這個結果去UPDATE DB2的資料庫

withtas(select*fromtemp)
updatedestbsetb.NAME=(selectt.NAMEfromtwheret.ID=b.ID)
whereexists(selectt.NAMEfromtwheret.ID=b.ID)

熱點內容
phptxt下載 發布:2024-03-28 20:12:37 瀏覽:475
如何更衣櫃密碼鎖密碼設置 發布:2024-03-28 19:42:09 瀏覽:483
如何將一台電腦當雲伺服器嗎 發布:2024-03-28 19:22:39 瀏覽:882
銀行dsk密碼什麼意思 發布:2024-03-28 19:22:35 瀏覽:10
我的世界伺服器怎麼解除ban人 發布:2024-03-28 19:21:47 瀏覽:828
ss怎麼用安卓 發布:2024-03-28 18:51:39 瀏覽:688
腳本注入到其他軟體運行 發布:2024-03-28 18:30:02 瀏覽:721
網易我的世界皮膚能用到伺服器嗎 發布:2024-03-28 18:24:44 瀏覽:805
access資料庫數據類型 發布:2024-03-28 18:16:04 瀏覽:301
安卓界面如何變成蘋果手機界面 發布:2024-03-28 18:07:17 瀏覽:742