日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

解析SQL Server 2008對(duì)T-SQL語言的增強(qiáng)(4)_Mssql數(shù)據(jù)庫教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:解讀SQL Server數(shù)據(jù)庫備份的方法
SQL Server數(shù)據(jù)庫備份有兩種方式,一種是使用BACKUP DATABASE將數(shù)據(jù)庫文件備份出去,另外一種就是直接拷貝數(shù)據(jù)庫文件mdf和日志文件ldf的方式。下面將主要討論一下后者的備份與恢復(fù)。

7. MERGE 語句

這個(gè)新增的 Transaction SQL 語句在一個(gè)基于源數(shù)據(jù)連接結(jié)果集的目標(biāo)表上執(zhí)行 INSERT、UPDATE 和 DELETE 操作。該語法允許您將一個(gè)數(shù)據(jù)源連接到目標(biāo)表或視圖上。然后在連接后的結(jié)果集上執(zhí)行多種操作。

MERGE 的語法為:

以下為引用的內(nèi)容:

[WITH<common_table_expression>[,...n]]
MERGE 
[TOP(expression)[PERCENT]] 
[INTO]target_table[[AS]table_alias]
    [WITH(<merge_hint>)]
USING<table_source>
ON<search_condition>
[WHENMATCHED[AND<search_condition>]
    THEN<merge_matched>]
[WHEN[TARGET]NOTMATCHED[AND<search_condition>]
    THEN<merge_not_matched>]
[WHENSOURCENOTMATCHED[AND<search_condition>]
    THEN<merge_matched>]
<output_clause>
[OPTION(<query_hint>[,...n])]  
;
<merge_hint>::=
    {[<table_hint_limited>[,...n]]
  [[,]INDEX(index_val[,...n])]}
<table_source>::= 
{
    table_or_view_name[[AS]table_alias][<tablesample_clause>] 
        [WITH(table_hint[[,]...n])] 
  |rowset_function[[AS]table_alias] 
        [(bulk_column_alias[,...n])] 
  |user_defined_function[[AS]table_alias]
  |OPENXML<openxml_clause> 
  |derived_table[AS]table_alias[(column_alias[,...n])] 
  |<joined_table> 
  |<pivoted_table> 
  |<unpivoted_table> 
}
<merge_matched>::=
        {UPDATESET<set_clause>|DELETE}
<set_clause>::=
  {column_name={expression|DEFAULT|NULL}
 |{udt_column_name.{{property_name=expression 
    |field_name=expression} 
    |method_name(argument[,...n])}}
 |column_name{.WRITE(expression,@Offset,@Length)}
 |@variable=expression 
  }[,...n] 
<merge_not_matched>::=
    INSERT[(<column_list>)] 
        {VALUES(<values_list>)
      |DEFAULTVALUES}
<output_clause>::=
{
  [OUTPUT<dml_select_list>INTO{@table_variable|output_table}
    [(column_list)]]
    [OUTPUT<dml_select_list>]
}
<dml_select_list>::=
{<column_name>|scalar_expression}[[AS]column_alias_identifier]
  [,...n]
<column_name>::=
  {DELETED|INSERTED|from_table_name}.{*|column_name}
 |$ACTION

示例:在一條 SQL 語句中使用 WHERE 在一張表上執(zhí)行 UPDATE 和 DELETE 操作

以下為引用的內(nèi)容:

USEAdventureWorks;
GO
MERGEProduction.ProductInventoryASpi
USING(SELECTProductID,SUM(OrderQty)FROMSales.SalesOrderDetailsod
  JOINSales.SalesOrderHeadersoh
  ONsod.SalesOrderID=soh.SalesOrderID
  ANDsoh.OrderDate=GETDATE()
  GROUPBYProductID)ASsrc(ProductID,OrderQty)
ON(pi.ProductID=src.ProductID)
WHENMATCHEDANDpi.Quantity-src.OrderQty<>0 
  THENUPDATESETpi.Quantity=pi.Quantity-src.OrderQty
WHENMATCHEDANDpi.Quantity-src.OrderQty=0 
  THENDELETE;

這個(gè)示例是一個(gè)非常典型的銷售定貨庫存問題。這個(gè)示例很簡(jiǎn)單,表達(dá)的意思就是:如果某一個(gè)產(chǎn)品產(chǎn)生了銷售定單數(shù)據(jù),則將其對(duì)應(yīng)的產(chǎn)品庫存除去該銷售定單所產(chǎn)生的數(shù)量,如果當(dāng)前庫存數(shù)量與該銷售定單數(shù)量相同,則從庫存表中刪除該產(chǎn)品的庫存紀(jì)錄。

我們看到,利用 MERGE 語句可以將復(fù)雜的 SQL 語句簡(jiǎn)化。它比起 IF、CASE 等更加靈活和強(qiáng)大。

結(jié)論

Microsoft SQL Server 2008 對(duì)事務(wù)性 SQL 語言做了一些增強(qiáng),提高了查詢效率。使得 SQl Server 成為大中型企業(yè)數(shù)據(jù)庫的首先產(chǎn)品。SQL Server 2008 將伴隨 Visual Studio 2008 一起發(fā)布,開發(fā)人員提前了解這些信息有助于在 SQL Server 的新版本發(fā)布后快速建立基于該版本的企業(yè)級(jí)應(yīng)用程序。

分享:解析SQL 2008的Change Data Capture功能
在常見的企業(yè)數(shù)據(jù)平臺(tái)管理中有一項(xiàng)任務(wù)是一直困擾SQL Server DBA們的,這就是對(duì)數(shù)據(jù)更新的監(jiān)控。很多數(shù)據(jù)應(yīng)用都需要捕獲對(duì)業(yè)務(wù)數(shù)據(jù)表的更新。筆者見過幾種解決方案: 1、在數(shù)

共4頁上一頁1234下一頁
來源:模板無憂//所屬分類:Mssql數(shù)據(jù)庫教程/更新時(shí)間:2009-08-01
相關(guān)Mssql數(shù)據(jù)庫教程

Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索

Mssql數(shù)據(jù)庫教程推薦

猜你也喜歡看這些