- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
10-2-2 记录建构子-范例SQL指令码档
10-6 DML指令的OUTPUT子句-新版功能 新版2008更擴充功能支援「可組成DML」(Composable DML),可以將擁有OUTPUT子句的DML指令,作為INSERT指令中FORM子句資料來源的子查詢。 10-6 DML指令的OUTPUT子句-範例2-1 請執行Ch10-6-02.sql在【教務系統】資料庫建立【記錄業績目標】資料表,內含【原始目標】和【最新目標】欄位。 我們準備使用可組成DML在更新【客戶業績】資料表的業績目標時,使用OUTPUT子句的輸出來新增資料表的記錄資料,可以記錄更新前後業績目標的改變。 10-6 DML指令的OUTPUT子句-範例2-2 SQL指令碼檔:Ch10-6-03.sql 當在【客戶業績】資料表更新業績目標20%時,可以使用可組成DML來新增記錄,以便記錄業績目標超過200時欄位值的前後變化,如下所示: INSERT INTO 記錄業績目標 (客戶編號, 原始目標, 最新目標) SELECT c.客戶編號, c.原始目標, c.最新目標 FROM ( UPDATE 客戶業績 10-6 DML指令的OUTPUT子句-範例2-3 SET 業績目標 = 業績目標 + (業績目標 * 0.20) OUTPUT Inserted.客戶編號 AS 客戶編號, Deleted.業績目標 AS 原始目標, Inserted.業績目標 AS 最新目標 ) c WHERE c.最新目標 200 10-3-2 在UPDATE指令使用子查詢-範例1 SQL指令碼檔:Ch10-3-2-01.sql 在【學生】資料表更新姓名欄位,更新欄位值是使用子查詢從【員工】資料表取得,如下所示: UPDATE 學生 SET 姓名 = (SELECT 姓名 FROM 員工 WHERE 身份證字號=H098765432) WHERE 學號 = S108 10-3-2 在UPDATE指令使用子查詢-範例2 SQL指令碼檔:Ch10-3-2-02.sql 使用Ch10-2-3-01.sql新增的【課程備份】資料表為例,將【班級】上課學生超過3位的課程學分改為4學分,如下所示: UPDATE 課程備份 SET 學分 = 4 FROM (SELECT 課程編號, COUNT(*) AS 學生數 FROM 班級 GROUP BY 課程編號) AS 上課 WHERE 課程備份.課程編號 = 上課.課程編號 AND 上課.學生數 3 從課程編號群組查詢,計算紀錄的數量成為[學生數]欄位出來成為[上課]表 10-3-2 在UPDATE指令使用子查詢-範例3 SQL指令碼檔:Ch10-3-2-03.sql 使用Ch10-2-3-01.sql和Ch10-2-3-02.sql新增的【課程備份】和【課程備份2】資料表為例,將【課程備份】的課程學分改為5學分,當此課程編號存在【課程備份2】資料表時,如下所示: UPDATE 課程備份 SET 學分 = 5 WHERE 課程編號 IN ( SELECT 課程編號 FROM 課程備份2) 如果課程編號有出現在[課程備份2]就把學分改5 練習題 學號(學號,身分證字號) 學生(身分證字號,id) 成績(id,姓名,資料庫分數) 已知某學生學號9700001,利用各關聯表性質,找出他的資料庫分數,改成100分 * 10-3-3 合併更新-說明 通常UPDATE指令是更新同一個資料表的記錄資料,在WHERE子句的查詢條件也是同一個資料表。如果更新資料的欄位值或條件是位於其他不同的資料表,我們可以在FORM子句使用合併查詢來取得條件或欄位值來進行資料表記錄的更新。 UPDATE指令不只可以更新同一個資料表的記錄資料,加上JOIN指令就可以進行不同資料表的合併更新。 10-3-3 合併更新-範例1 SQL指令碼檔:Ch10-3-3-01.sql 在【班級】資料表更新【科系】欄位為CIS且在教室300-K上課的時間,將時間改為9:00am,如下所示: UPDATE 班級 SET 班級.上課時間 = ‘9:00am’ FROM 班級 INNER JOIN 教授 =班級合併教授兩個表 ON 班級.教授編號 = 教授.教授編號=合併的基準要外來鍵來做對齊 WHERE 教授.科系 = ‘CIS’ AND 班級.教室 = ‘300-K’ 練習題 [成績]資料表(學號,姓名,數學,國語,英語,總分,平均) [學籍]資料表(學號,性別,城市,電話) 用學號當作基準,用合併更新的方式,將兩個表合併,然後找出居住在台北市而且數學不及格的同學,將他們的國語改成100 * 10-3-3 合併更新-範例2 SQL指令碼檔:C
原创力文档


文档评论(0)