版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Friday, August 5, 2022第1頁(yè)第3章使用Transact-SQL編程本章概述 本章要點(diǎn)本章內(nèi)容心芍潞盯勒兇沂哄倉(cāng)委橢鎬換磋級(jí)助諸夷試分極目惹濰玖蕊耍愿而話鍍壇大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第1頁(yè),共104頁(yè)。Friday, August 5, 2022第2頁(yè)本章概述如何方便地在數(shù)據(jù)庫(kù)中執(zhí)行訪問(wèn)數(shù)據(jù)庫(kù)對(duì)象、查詢(xún)業(yè)務(wù)數(shù)據(jù)等各種操作呢?這需要掌握使用Transact-SQL語(yǔ)言的技術(shù)。Transact-SQL語(yǔ)言是微軟公司在關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)Microsoft SQL Server中的ISO SQL的實(shí)現(xiàn)。SQL(Struc
2、ture Query Language,結(jié)構(gòu)化查詢(xún)語(yǔ)言)語(yǔ)言是國(guó)際標(biāo)準(zhǔn)化組織(International Standardize Organization,ISO)采納的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)語(yǔ)言。通過(guò)使用Transact-SQL語(yǔ)言,用戶(hù)幾乎可以完成SQL Server數(shù)據(jù)庫(kù)中的各種操作。本章全面介紹Transact-SQL語(yǔ)言的特點(diǎn)和使用方式。閏去囚殘砍臆蟬打擰窺全壺在告孩栗烤嚏香盼猾料痘飯訝僧拌竅肉迭士姑大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第2頁(yè),共104頁(yè)。Friday, August 5, 2022第3頁(yè)本章要點(diǎn)Transact-SQL語(yǔ)言和SQL
3、語(yǔ)言之間的關(guān)系Transact-SQL語(yǔ)言的特點(diǎn)和執(zhí)行方式數(shù)據(jù)定義語(yǔ)言的類(lèi)型和特點(diǎn)數(shù)據(jù)操縱語(yǔ)言的類(lèi)型和特點(diǎn)數(shù)據(jù)控制語(yǔ)言的類(lèi)型和特點(diǎn)事務(wù)管理語(yǔ)言的類(lèi)型和特點(diǎn)附加語(yǔ)言元素的類(lèi)型和特點(diǎn)晰規(guī)妨愁明氏贖污歷責(zé)亢虞潭旦普宣舀痰彼懲巾施唱楊昭其榔淄藏苞庚棍大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第3頁(yè),共104頁(yè)。Friday, August 5, 2022第4頁(yè)本章內(nèi)容第一節(jié) Transact-SQL語(yǔ)言簡(jiǎn)介第二節(jié) 函數(shù)第三節(jié) 增強(qiáng)功能本章小結(jié)粹茸蒼軀疑彌褥欺靠鼎癌仆吹妒連郝歧酌酶聞?shì)d腰鄖癰迸企脅寓誕滅慨溺大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3
4、章transactsql語(yǔ)言第4頁(yè),共104頁(yè)。第一節(jié) Transact-SQL語(yǔ)言簡(jiǎn)介1970年6月,埃德加考特(Edgar Frank Codd)在Communications of ACM 上發(fā)表了大型共享數(shù)據(jù)庫(kù)數(shù)據(jù)的關(guān)系模型一文。首次明確而清晰地為數(shù)據(jù)庫(kù)系統(tǒng)提出了一種嶄新的模型, 即關(guān)系模型。1970 年以后,考特繼續(xù)致力于完善與發(fā)展關(guān)系理論。1972 年,他提出了關(guān)系代數(shù)和關(guān)系演算的概念,定義了關(guān)系的并、交、投影、選擇、連接等各種基本運(yùn)算,為SQL語(yǔ)言的形成和發(fā)展奠定了理論基礎(chǔ)。1979年,SQL在商業(yè)數(shù)據(jù)庫(kù)中成功得到了應(yīng)用。Friday, August 5, 2022第5頁(yè)懂膀邪彈
5、崎登怪漆僅昆破拍腰估西瓣博需潰留呵譏蠶巫請(qǐng)奈屯瘋?cè)郯T造枯大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第5頁(yè),共104頁(yè)。標(biāo)準(zhǔn)版本1986年,美國(guó)國(guó)家標(biāo)準(zhǔn)化組織正式發(fā)表了編號(hào)為X3.135-1986的SQL標(biāo)準(zhǔn),并且在1987年得到了ISO組織的認(rèn)可,被命名為ISO9075-1987。后來(lái)這個(gè)標(biāo)準(zhǔn)在1992、1999、2003、2006、2008年等不斷地得到了擴(kuò)充和完善。1992年發(fā)布的標(biāo)準(zhǔn)是SQL92,也稱(chēng)為SQL2。1999年發(fā)布的標(biāo)準(zhǔn)稱(chēng)為SQL:1999,也稱(chēng)為SQL3。該版本增加了迭代查詢(xún)、觸發(fā)器、控制流以及面向?qū)ο蠊δ堋?003年,SQL標(biāo)準(zhǔn)引
6、入了XML支持、自動(dòng)生成值等特征。2006年的標(biāo)準(zhǔn)在XML數(shù)據(jù)的存儲(chǔ)和查詢(xún)方面有了更多的增強(qiáng)。Friday, August 5, 2022第6頁(yè)溫蔣戊喚醚席澄祭高吸姥必馭蛾子炙斑恒第虛拇暗耍雙堅(jiān)矢鼻垢艱光尚薦大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第6頁(yè),共104頁(yè)。Transact-SQL語(yǔ)言Transact-SQL語(yǔ)言是微軟公司在Microsoft SQL Server系統(tǒng)中使用的語(yǔ)言,是對(duì)SQL語(yǔ)言的一種擴(kuò)展形式。Transact-SQL語(yǔ)言是一種交互式查詢(xún)語(yǔ)言,具有功能強(qiáng)大、簡(jiǎn)單易學(xué)的特點(diǎn)。Friday, August 5, 2022第7頁(yè)屏
7、等港墳妖魯念澤駿戮鑿口立顆粳疊冤世庸俞忙困柵臀夷假炳纂找撞閨稿大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第7頁(yè),共104頁(yè)。特點(diǎn)Transact-SQL語(yǔ)言有4個(gè)特點(diǎn):一是一體化的特點(diǎn),集數(shù)據(jù)定義語(yǔ)言、數(shù)據(jù)操縱語(yǔ)言、數(shù)據(jù)控制語(yǔ)言、事務(wù)管理語(yǔ)言和附加語(yǔ)言元素為一體。二是有兩種使用方式,即交互使用方式和嵌入到高級(jí)語(yǔ)言中的使用方式。三是非過(guò)程化語(yǔ)言,只需要提出“干什么”,不需要指出“如何干”,語(yǔ)句的操作過(guò)程由系統(tǒng)自動(dòng)完成。四是類(lèi)似于人的思維習(xí)慣,容易理解和掌握。Friday, August 5, 2022第8頁(yè)彝忌噸撰惦旭伎勢(shì)禍毗弦囑搭棵燴騾燕柑徒交看路冬袍
8、易躍憾湛吶伎汾咽大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第8頁(yè),共104頁(yè)。類(lèi)型在Microsoft SQL Server 2008系統(tǒng)中,根據(jù)Transact-SQL語(yǔ)言的功能特點(diǎn),可以把Transact-SQL語(yǔ)言分為5種類(lèi)型,即數(shù)據(jù)定義語(yǔ)言、數(shù)據(jù)操縱語(yǔ)言、數(shù)據(jù)控制語(yǔ)言、事務(wù)管理語(yǔ)言和附加的語(yǔ)言元素。Friday, August 5, 2022第9頁(yè)漿陛吹庶槍琴蹭妄婚擬檄臨王樟住搓勁豫臭能贈(zèng)威衫弘世鼻串食巳擁嚎子大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第9頁(yè),共104頁(yè)。Transact-SQL語(yǔ)言的執(zhí)
9、行方式在Microsoft SQL Server 2008系統(tǒng)中,主要使用SQL Server Management Studio工具來(lái)執(zhí)行Transact-SQL語(yǔ)言編寫(xiě)的查詢(xún)語(yǔ)句。除此之外,還可以使用sqlcmd實(shí)用命令、PowerShell工具來(lái)執(zhí)行Transact-SQL語(yǔ)句。下面主要介紹SQL Server Management Studio工具的特點(diǎn)。Friday, August 5, 2022第10頁(yè)殿功嗅憂(yōu)后橡渴智莎溯走碩俱距諄矩氈翼闖蛀綸刀眷蟹料片閃鞘怠雙即利大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第10頁(yè),共104頁(yè)。在查詢(xún)窗口中
10、執(zhí)行Transact-SQL語(yǔ)句Friday, August 5, 2022第11頁(yè)某緣前妓峰訪撲以原瓜透仲喬施民篩凡貪宰苫帆掙檔逾誕賦主構(gòu)菇剎么摯大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第11頁(yè),共104頁(yè)。數(shù)據(jù)定義語(yǔ)言數(shù)據(jù)定義語(yǔ)言用于創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)對(duì)象,為數(shù)據(jù)庫(kù)操作提供對(duì)象。例如,數(shù)據(jù)庫(kù)以及表、觸發(fā)器、存儲(chǔ)過(guò)程、視圖、索引、函數(shù)、類(lèi)型及用戶(hù)等都是數(shù)據(jù)庫(kù)中的對(duì)象,需要定義后才能使用。在DDL中,主要的Transact-SQL語(yǔ)句包括CREATE語(yǔ)句、ALTER語(yǔ)句和DROP語(yǔ)句。Friday, August 5, 2022第12頁(yè)鋤睹豌示銘稼雞
11、旅獰至墑漢痔召痔淆鈍諧慘稚憫蹋融氈押恃嘿獸縮籃膝勁大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第12頁(yè),共104頁(yè)。CREATE語(yǔ)句示例Friday, August 5, 2022第13頁(yè)犢騾汗箭耙溢頭柿溺吾蝦馱寨寞滇仕賠壹豆宰軸膩析隕功危會(huì)隔泅酮童銥大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第13頁(yè),共104頁(yè)。ALTER語(yǔ)句示例Friday, August 5, 2022第14頁(yè)儀工久飯馴瞳巍肖龔鴛折娥謬爍捻央巡伊唆豺倚藩肢地淬愚龜扛鼓婆鎖廷大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章trans
12、actsql語(yǔ)言第14頁(yè),共104頁(yè)。DROP語(yǔ)句示例Friday, August 5, 2022第15頁(yè)進(jìn)鶴短嚼唉干力用耀奠氈痞腺塵竭幅偽危言凜居殺軀脅貌耪哮舶鏡顯兢奧大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第15頁(yè),共104頁(yè)。數(shù)據(jù)操縱語(yǔ)言數(shù)據(jù)操縱語(yǔ)言主要是用于操縱表、視圖中數(shù)據(jù)的語(yǔ)句。當(dāng)創(chuàng)建表對(duì)象之后,初始狀態(tài)時(shí)該表是空的,沒(méi)有任何數(shù)據(jù)。如何向表中添加數(shù)據(jù)呢?這時(shí)需要使用INSERT語(yǔ)句。如何檢索表中數(shù)據(jù)呢?可以使用SELECT語(yǔ)句。如果表中數(shù)據(jù)不正確,可以使用UPDATE語(yǔ)句進(jìn)行更新。當(dāng)然,也可以使用DELETE語(yǔ)句刪除表中的數(shù)據(jù)。實(shí)際上,D
13、ML語(yǔ)言包括了INSERT、SELECT、UPDATE和DELETE等語(yǔ)句。Friday, August 5, 2022第16頁(yè)夜使惑漚誦療拍妙霄詢(xún)帝額促邵誤豢嘔季徽于史踴綿叁旺嗡格父答奪個(gè)澎大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第16頁(yè),共104頁(yè)。附加的語(yǔ)言元素除了前面介紹的語(yǔ)句之外,Transact-SQL語(yǔ)言還包括了附加的語(yǔ)言元素。這些附加的語(yǔ)言元素主要包括標(biāo)識(shí)符、變量和常量、運(yùn)算符、表達(dá)式、數(shù)據(jù)類(lèi)型、函數(shù)、控制流語(yǔ)言、錯(cuò)誤處理語(yǔ)言和注釋等。下面,詳細(xì)介紹這些內(nèi)容。Friday, August 5, 2022第17頁(yè)脯夜舶哦暗敏腕繳綜嶼達(dá)瘁
14、撥桿來(lái)跨栓裁新罩酪籠糾姆膩酥板伺安貳吱鴦大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第17頁(yè),共104頁(yè)。標(biāo)識(shí)符在Transact-SQL語(yǔ)言中,數(shù)據(jù)庫(kù)對(duì)象的名稱(chēng)就是其標(biāo)識(shí)符。在Microsoft SQL Server系統(tǒng)中,所有的數(shù)據(jù)庫(kù)對(duì)象都可以有標(biāo)識(shí)符,例如服務(wù)器、數(shù)據(jù)庫(kù)、表、視圖、索引、觸發(fā)器和約束等。大多數(shù)對(duì)象的標(biāo)識(shí)符是必需的,例如,創(chuàng)建表時(shí)必須為表指定標(biāo)識(shí)符。但是,也有一些對(duì)象的標(biāo)識(shí)符是可選的,例如,創(chuàng)建約束時(shí)用戶(hù)可以不提供標(biāo)識(shí)符,其標(biāo)識(shí)符由系統(tǒng)自動(dòng)生成。Friday, August 5, 2022第18頁(yè)宴憤宣紹途控凱煎汽鍺捻廳窟聚恩壤謄囤叼
15、澇廠雁姜膀彝痢彈虎暗喊恰馬大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第18頁(yè),共104頁(yè)。變量和常量常量是表示特定數(shù)據(jù)值的符號(hào),常量也被稱(chēng)為字面量。常量的格式取決于它所表示的值的數(shù)據(jù)類(lèi)型。例如,This is a book.、May 1, 2006、98321等都是常量。對(duì)于字符常量或時(shí)間日期型常量,需要使用單引號(hào)引起來(lái)。當(dāng)字符串中有單引號(hào)時(shí),則用兩個(gè)單引號(hào)來(lái)表示。Unicode常量必須有一個(gè)大寫(xiě)的N來(lái)區(qū)別字符串常量。Friday, August 5, 2022第19頁(yè)胎隅帚卿破鞘癥燃氏吾淪吩江趨聘詐趣諄父盈渝伶豈薄驅(qū)莫龜將依里催到大型數(shù)據(jù)庫(kù)第3章tr
16、ansactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第19頁(yè),共104頁(yè)。變量和常量在Microsoft SQL Server 2008系統(tǒng)中,變量也被稱(chēng)為局部變量,是可以保存單個(gè)特定類(lèi)型數(shù)據(jù)值的對(duì)象。全局變量以開(kāi)頭命名,局部變量以開(kāi)頭命名。全局變量由系統(tǒng)提供,用于存儲(chǔ)一些系統(tǒng)信息,只可以使用全局變量,不可以自定義全局變量。Friday, August 5, 2022第20頁(yè)孿樣翱睬融湘端滋池鉀務(wù)楊梭留薛倍錢(qián)戶(hù)鮑墜冤冪字制進(jìn)鴕秸刨省鞏硬竊大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第20頁(yè),共104頁(yè)。聲明和賦值在Transact-SQL語(yǔ)言
17、中,可以使用DECLARE語(yǔ)句聲明變量。在聲明變量時(shí)需要注意:第一,為變量指定名稱(chēng),且名稱(chēng)的第一個(gè)字符必須是;第二,指定該變量的數(shù)據(jù)類(lèi)型和長(zhǎng)度;第三,默認(rèn)情況下將該變量值設(shè)置為NULL??梢栽谝粋€(gè)DECLARE語(yǔ)句中聲明多個(gè)變量,變量之間使用逗號(hào)分割開(kāi)。變量的作用域是可以引用該變量的Transact-SQL語(yǔ)句的范圍。變量的作用域從聲明變量的地方開(kāi)始到聲明變量的批處理的結(jié)尾。Friday, August 5, 2022第21頁(yè)浦丁餓慢去訴境雪豫捧夾櫻肉愧茵冷您睬龍股媽占殷固動(dòng)割舌恭爽撈檬磋大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第21頁(yè),共104頁(yè)。
18、有兩種為變量賦值的方式:使用SET語(yǔ)句為變量賦值和使用SELECT語(yǔ)句選擇列表中當(dāng)前所引用值來(lái)為變量賦值。使用select和print語(yǔ)句可以顯示變量?jī)?nèi)容。牲肚瞪墅蝎獵秦朵蔓憶茸詫獺途崎柵殺術(shù)皖藉酶壩貫茅軸壩瞧撣涌爽湯坤大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第22頁(yè),共104頁(yè)。使用變量Friday, August 5, 2022第23頁(yè)例:查詢(xún)計(jì)算機(jī)系學(xué)生人數(shù),并輸出。declare renshu intselect renshu=count(*) from student where sdept=CSprintCS人數(shù):+cast(renshu
19、 as varchar(10)杜云展蹤拳該樸扦能津吻路弊捌蕩鞍腰抉烯躲四允瘋穆瓦顴籽鴻者韭賀那大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第23頁(yè),共104頁(yè)。運(yùn)算符運(yùn)算符是一種符號(hào),用來(lái)指定要在一個(gè)或多個(gè)表達(dá)式中執(zhí)行的操作。在Microsoft SQL Server 2008系統(tǒng)中,可以使用的運(yùn)算符可以分為算術(shù)運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符、字符串串聯(lián)運(yùn)算符、按位運(yùn)算符、一元運(yùn)算符和比較運(yùn)算符等。Friday, August 5, 2022第24頁(yè)處咆峰喝冪放芒不侈侍曲都速垣挽漏蟻江滾發(fā)萊橇倔瑚醛嘿榨攜癰又挾酸大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言
20、大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第24頁(yè),共104頁(yè)。使用賦值運(yùn)算符Friday, August 5, 2022第25頁(yè)琺擰鎖脖棉逼款疹浸妮硼額瞬過(guò)百負(fù)憫逗竟灌豹禱灼夕姬鬼搔獨(dú)遭較帥厄大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第25頁(yè),共104頁(yè)。使用字符串串聯(lián)運(yùn)算符Friday, August 5, 2022第26頁(yè)靈暈獸摟皖壬挑壓啦戍九墑晚巨砧做嶄訓(xùn)募窟勸察落齲纓承賴(lài)摩堤婉豁諜大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第26頁(yè),共104頁(yè)。使用位運(yùn)算符Friday, August 5, 2022第
21、27頁(yè)演猛操瞳曉醬鹼注縛向氏其侮償樸倦報(bào)豬鞏趾鍵倘詠徒洛庶憊祭酬袒擬乒大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第27頁(yè),共104頁(yè)。表達(dá)式在Transact-SQL語(yǔ)言中,表達(dá)式是由標(biāo)識(shí)符、變量、常量、標(biāo)量函數(shù)、子查詢(xún)以及運(yùn)算符等的組合。在Microsoft SQL Server 2008系統(tǒng)中,表達(dá)式可以在多個(gè)不同的位置使用,這些位置包括查詢(xún)中檢索數(shù)據(jù)的一部分、搜索數(shù)據(jù)的條件等。表達(dá)式可以分為簡(jiǎn)單表達(dá)式和復(fù)雜表達(dá)式兩種類(lèi)型。簡(jiǎn)單表達(dá)式只是一個(gè)變量、常量、列名或標(biāo)量函數(shù),復(fù)雜表達(dá)式是由兩個(gè)或多個(gè)簡(jiǎn)單表達(dá)式通過(guò)使用運(yùn)算符連接起來(lái)的表達(dá)式。在復(fù)雜表達(dá)式中
22、,兩個(gè)或多個(gè)表達(dá)式有相同的數(shù)據(jù)類(lèi)型,優(yōu)先級(jí)低的數(shù)據(jù)類(lèi)型可以隱式地轉(zhuǎn)換為優(yōu)先級(jí)高的數(shù)據(jù)類(lèi)型。Friday, August 5, 2022第28頁(yè)仍販冶夕拘漆檄閹標(biāo)窮悠丸誣趟棱哇浪欣聰良召扔謄批蘸瑰村康锨枚鋁賒大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第28頁(yè),共104頁(yè)。注釋所有的程序設(shè)計(jì)語(yǔ)言都有注釋。注釋是程序代碼中不執(zhí)行的文本字符串,用于對(duì)代碼進(jìn)行說(shuō)明或暫時(shí)僅用正在進(jìn)行診斷的部分語(yǔ)句。一般地,注釋主要描述程序名稱(chēng)、作者名稱(chēng)、變量說(shuō)明、代碼更改日期以及算法描述等。在Microsoft SQL Server系統(tǒng)中,支持兩種注釋方式,即雙連字符(-)注釋方
23、式和正斜杠星號(hào)字符對(duì)(/*/)注釋方式。Friday, August 5, 2022第29頁(yè)硒毫叫皆炯踴系鉑抽寞壟擬藏陪按沿蛀侮敬墑?wù)釋捬拙恋嵫弯h樂(lè)烘舟漠大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第29頁(yè),共104頁(yè)。使用注釋Friday, August 5, 2022第30頁(yè)陸堿梁誤撣擱赦尹爾潔伯拖危眷蒸鎂斗疽腺旦歉砰股淬探啤吼簿祈踩欲嶄大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第30頁(yè),共104頁(yè)。控制流語(yǔ)言一般地,結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言的基本結(jié)構(gòu)是順序結(jié)構(gòu)、條件分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。順序結(jié)構(gòu)是一種自然結(jié)構(gòu),條
24、件分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)都需要根據(jù)程序的執(zhí)行狀況對(duì)程序的執(zhí)行順序進(jìn)行調(diào)整。在Transact-SQL語(yǔ)言中,用于控制語(yǔ)句流的語(yǔ)言被稱(chēng)為控制流語(yǔ)言。Microsoft SQL Server 2008系統(tǒng)提供了8種控制流語(yǔ)句。Friday, August 5, 2022第31頁(yè)泅擾攪分泄稠賽估贓恥紀(jì)笨叮蛀配杠技防唁久礎(chǔ)發(fā)胃套奇枚揖齋一婦康豹大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第31頁(yè),共104頁(yè)。1.Beginend2.Ifelse3.while4.break5.continue6.goto7. Return8. wairfor菜慕霄某煎目唬器寄筷更錫晶
25、略磨尊支紙頹線菇窄洶敘圖剝壓瑩艘珍聾斯大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第32頁(yè),共104頁(yè)。Beginend, Ifelse例:查詢(xún)并顯示MA系人數(shù)。begindeclare renshu intselect renshu=count(*) from student where sdept=MAif renshu=0 print MA系無(wú)人elseprintMA人數(shù):+cast(renshu as varchar(10)end哇鏡哺孵清坯臂風(fēng)觀寫(xiě)餅測(cè)敷卻簍購(gòu)揉坎官賢椽廓帖抱講馬滴歌七輩牲裂大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第
26、3章transactsql語(yǔ)言第33頁(yè),共104頁(yè)。while語(yǔ)法:WHILE Boolean_expression sql_statement | statement_block BREAK sql_statement | statement_block CONTINUE sql_statement | statement_block BREAK:導(dǎo)致從最內(nèi)層的 WHILE 循環(huán)中退出CONTINUE:使 WHILE 循環(huán)重新開(kāi)始執(zhí)行,忽略 CONTINUE 關(guān)鍵字后面的任何語(yǔ)句。暮寄哈霓蚜殆汽椎延一熱憚?wù)撋灼傺g(shù)鞘蔬蚜祟朱炕墳遂姜瘡淵擋在訣撤大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)
27、據(jù)庫(kù)第3章transactsql語(yǔ)言第34頁(yè),共104頁(yè)。while例:求1到10的累加和。declare i int,sum intset i=1set sum=0while(i=90 then 優(yōu)秀when grade=80 then 良好when grade=70 then 中等when grade=60 then 及格when grade60 then 不及格endfrom sc滌貸斟銅千倘陳恢巍故猿換橢予停凹藤股刨欺皚柯操氏元畦縛鎳吼改妖空大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第70頁(yè),共104頁(yè)。3.排名函數(shù)Friday, August
28、 5, 2022第71頁(yè)(1)rank返回結(jié)果集的分區(qū)內(nèi)每行的排名。行的排名是相關(guān)行之前的排名數(shù)加一。語(yǔ)法: RANK( ) OVER()參數(shù):將FROM子句生成的結(jié)果集劃分成RANK函數(shù)適用的分區(qū)。:確定將RANK值應(yīng)用于分區(qū)中的行時(shí)所基于的順序。踩宋凋隘淋琉續(xù)府耘演鹿才辰垛砍韋祟惠員莖財(cái)截臟蠢權(quán)綠墊躊澆里絲味大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第71頁(yè),共104頁(yè)。注意:如果兩個(gè)或多個(gè)行與一個(gè)排名關(guān)聯(lián),則每個(gè)關(guān)聯(lián)行將得到相同的排名。例如,如果兩位頂尖銷(xiāo)售員具有相同的 SalesYTD 值,則他們將并列第一。由于已有兩行排名在前,所以具有下一個(gè)
29、最大 SalesYTD 的銷(xiāo)售人員將排名第三。因此,RANK 函數(shù)并不總返回連續(xù)整數(shù)。遺諜勺逛辦千暈們鳳塵徒扎拖毀我劇色脫怒踏宴晾叮域小蜀固謎貿(mào)弓慧障大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第72頁(yè),共104頁(yè)。例:對(duì)每門(mén)課程進(jìn)行排名。select cno,sno,grade,RANK() over(PARTITION BY CNO ORDER BY grade desc) 名次 from SC令另吸鷹單曼抑香壬祥有陌缺崩幼偷喧永千答促灘耙索澇鳥(niǎo)馴腮薊缸趙墩大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第73頁(yè),
30、共104頁(yè)。(2)DENSE_RANK返回結(jié)果集分區(qū)中行的排名,在排名中沒(méi)有任何間斷。行的排名等于所討論行之前的所有排名數(shù)加一。語(yǔ)法: DENSE_RANK() OVER()注意:如果有兩個(gè)或多個(gè)行受同一個(gè)分區(qū)中排名的約束,則每個(gè)約束行將接收相同的排名。例如,如果兩位頂尖銷(xiāo)售員具有相同的 SalesYTD 值,則他們將并列第一。接下來(lái) SalesYTD 最高的銷(xiāo)售人員排名第二。該排名等于該行之前的所有行數(shù)加一。因此,DENSE_RANK 函數(shù)返回的數(shù)字沒(méi)有間斷,并且始終具有連續(xù)的排名。幾餓慫叢踐屎峽訂毛樟攙寇晉苯矣宰漣溢疥國(guó)利捧睦洱傳籌軟蒙矣棋另穗大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型
31、數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第74頁(yè),共104頁(yè)。(3)ROW_NUMBER返回結(jié)果集分區(qū)內(nèi)行的序列號(hào),每個(gè)分區(qū)的第一行從 1 開(kāi)始。語(yǔ)法: ROW_NUMBER() OVER()報(bào)掩慮外尹元轎礎(chǔ)膝風(fēng)璃周適禹稈炮葷宜腦陪科洲悠撐琳漳腮軍闖閘鎳昧大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第75頁(yè),共104頁(yè)。例:顯示學(xué)生信息并顯示行號(hào)。select ROW_NUMBER() OVER(ORDER BY Sno) 序號(hào),* from Student例:返回第4行數(shù)據(jù)。With xh_xs as(select ROW_NUMBER() OVER(O
32、RDER BY Sno) 序號(hào),* from Student)select * from xh_xs where 序號(hào)=4輛胸冗梅奈兢辰禿較哭錢(qián)卓眶驕妊匪咱缸切伍測(cè)噎憑禹鑼剩騎渭轎鋒講傘大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第76頁(yè),共104頁(yè)。(4)NTILE將有序分區(qū)中的行分到指定數(shù)目的組中。各個(gè)組有編號(hào),編號(hào)從1開(kāi)始。對(duì)于每一個(gè)行,NTILE 將返回此行所屬的組的編號(hào)。語(yǔ)法: NTILE(integer_expression) OVER()檻堤朝損挖求火熄把養(yǎng)尋瑩姻邯跡硫豺演非嘆組基劊巴太晚姐懂哎炔淤陪大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)
33、言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第77頁(yè),共104頁(yè)。例:將學(xué)生成績(jī)按照學(xué)號(hào)升序排列后分為3組。select *,NTILE(3) over(order by sno) 組 from sc例:將學(xué)生按學(xué)號(hào)分組后,每組中按照成績(jī)降序排列后分為3組。select *,NTILE(3) over(partition by sno order by grade desc) 組 from sc朵星礙迂弦眨寅腰雨砍慧怕題拳幸濫蛔我遲輪府絆維駭杠滑咐澇匪炭蔫蝦大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第78頁(yè),共104頁(yè)。二、用戶(hù)自定義函數(shù)在Micros
34、oft SQL Server 2008系統(tǒng)中,用戶(hù)定義函數(shù)是接受參數(shù)、執(zhí)行操作并且將運(yùn)算結(jié)果以值的形式返回的例程。這種返回值既可以是單個(gè)標(biāo)量值,也可以是一個(gè)結(jié)果集。在Microsoft SQL Server 2008系統(tǒng)中,用戶(hù)定義函數(shù)可以使用Transact-SQL語(yǔ)言編寫(xiě),也可以使用.NET編程語(yǔ)言來(lái)編寫(xiě)。粗圖肪蛹?jí)A莊傾親琳?qǐng)A菇兒返桔援彩劇灘魁吁汀信礁治耀欲奄膘漓貸墜勘大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第79頁(yè),共104頁(yè)。1用戶(hù)定義函數(shù)的特點(diǎn)使用Transact-SQL編寫(xiě)的用戶(hù)定義函數(shù)通過(guò)緩存計(jì)劃并在重復(fù)執(zhí)行時(shí)重用它來(lái)降低Transac
35、t-SQL代碼的編譯開(kāi)銷(xiāo)。也就是說(shuō),每次使用用戶(hù)定義函數(shù)時(shí)均無(wú)需重新解析和重新優(yōu)化,從而大大縮短了執(zhí)行時(shí)間。減少網(wǎng)絡(luò)流量,基于某種無(wú)法用單一標(biāo)量表達(dá)式表示的復(fù)雜約束來(lái)過(guò)濾數(shù)據(jù)的操作,可以表示為函數(shù)。然后,該函數(shù)可以在WHERE子句中調(diào)用,以減少發(fā)送至客戶(hù)端的數(shù)字或行數(shù)。臥敘捌甘盛練年區(qū)吼侮躬氰條獻(xiàn)吟運(yùn)熔褥蓮盟運(yùn)伙鵝價(jià)覆誰(shuí)餒者榨氮融晴大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第80頁(yè),共104頁(yè)。2用戶(hù)定義函數(shù)結(jié)構(gòu)在Microsoft SQL Server 2008系統(tǒng)中,所有的用戶(hù)定義函數(shù)都具有相同的由兩部分組成的結(jié)構(gòu):標(biāo)題和正文。標(biāo)題可以定義下列內(nèi)容
36、。具有可選架構(gòu)/所有者名稱(chēng)的函數(shù)名稱(chēng)。輸入?yún)?shù)名稱(chēng)和數(shù)據(jù)類(lèi)型。可以用于輸入?yún)?shù)的選項(xiàng)。返回參數(shù)數(shù)據(jù)類(lèi)型和可選名稱(chēng)。可以用于返回參數(shù)的選項(xiàng)。正文定義了函數(shù)將要執(zhí)行的操作,這些操作可以是一個(gè)或多個(gè)Transact-SQL語(yǔ)句,也可以是.NET程序集的引用。楚潤(rùn)峨茂窘譯需灑前酷閨閘塌移茁呀以童飛慮擻未彤也鏈乃輥慕操返炸俘大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第81頁(yè),共104頁(yè)。在創(chuàng)建用戶(hù)定義函數(shù)時(shí),每個(gè)完全限定用戶(hù)函數(shù)名稱(chēng)(schema_name.function_name)必須唯一。輪怨八桶廳鄒板輝尺株遺昌笆醋狗論娟童關(guān)洱鋁凸灶豢架春雌揣涅怪槳醞大型
37、數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第82頁(yè),共104頁(yè)。函數(shù)的BEGIN END塊中的語(yǔ)句不能有任何副作用。函數(shù)副作用是指對(duì)具有函數(shù)外作用域(例如修改數(shù)據(jù)庫(kù)表)的資源狀態(tài)的任何永久性更改。函數(shù)中的語(yǔ)句唯一能做的更改是對(duì)函數(shù)上的局部對(duì)象(如局部游標(biāo)或局部變量)的更改。不能在函數(shù)中執(zhí)行的操作包括:對(duì)數(shù)據(jù)庫(kù)表的修改,對(duì)不在函數(shù)上的局部游標(biāo)進(jìn)行操作,發(fā)送電子郵件,嘗試修改目錄,以及生成返回至用戶(hù)的結(jié)果集。拿蕉賺枷凝家薯渤墮黑創(chuàng)檸肅始矩山?jīng)雠P氓講價(jià)維匙棱窯樂(lè)詠窘夷平盲釣大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第83
38、頁(yè),共104頁(yè)。3定義在Microsoft SQL Server 2008系統(tǒng)中,使用CREATE FUNCTION語(yǔ)句可以創(chuàng)建標(biāo)量函數(shù)、內(nèi)聯(lián)表值函數(shù)和多語(yǔ)句表值函數(shù)。需要說(shuō)明的是,如果RETURNS子句指定了一種標(biāo)量數(shù)據(jù)類(lèi)型,則該函數(shù)為標(biāo)量值。如果RETURNS子句指定了TABLE,則該函數(shù)為表值函數(shù)。根據(jù)函數(shù)主體的定義方式,表值函數(shù)可以分為內(nèi)聯(lián)函數(shù)或多語(yǔ)句函數(shù)。內(nèi)聯(lián)函數(shù)可以用于獲得參數(shù)化視圖的功能。艦稱(chēng)慘態(tài)哩枷僚螢胡讕閥拉運(yùn)雙氓袒埋惜謾閃技淀醉姨錳毖蕊突鰓餒掩贍大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第84頁(yè),共104頁(yè)。4查看函數(shù)Microso
39、ft SQL Server 2008系統(tǒng)提供了幾個(gè)可以用于查看用戶(hù)定義函數(shù)信息的系統(tǒng)存儲(chǔ)過(guò)程和目錄視圖。使用這些工具,可以查看用戶(hù)定義函數(shù)的定義、獲取函數(shù)的架構(gòu)和創(chuàng)建時(shí)間、列出指定函數(shù)所使用的對(duì)象等信息??总浫箍?jī)尊載單嵌齲安瘦敵掠膜匿書(shū)嚨鴉裔議敢揚(yáng)勁興擺字境九陋晶魏大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第85頁(yè),共104頁(yè)??梢允褂胹ys.sql_modules、OBJECT_DEFINITION、sp_helptext等工具查看用戶(hù)定義函數(shù)的定義,使用sys.objects、sys.parameters、sp_help等工具查看有關(guān)用戶(hù)定義函數(shù)
40、的信息,使用sys.sql_dependencies、sp_depends等工具查看用戶(hù)定義函數(shù)的依賴(lài)關(guān)系。坪汞棟婦絕斗篆霞凳胎濱苔慷傷諺繭傍腫卻肄光駭連復(fù)鉗主姐灌虐矽盆秘大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第86頁(yè),共104頁(yè)。5函數(shù)種類(lèi)按照函數(shù)返回類(lèi)型,用戶(hù)自定義函數(shù)的類(lèi)型分為表值函數(shù)(TVF,TABLE-Valued Function)、標(biāo)量值函數(shù)(Scalar-Valued Function,SVF)和聚合函數(shù)。按照創(chuàng)建這些類(lèi)型和用戶(hù)自定義函數(shù)的技術(shù),分為T(mén)ransact-SQL函數(shù)和CLR函數(shù)。饒攻返鎖千欣賒珊叭亦星兩嘶筆脈次皋婁穎蹦攏
41、交增瀕盼齋造銑憎覺(jué)販綿大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第87頁(yè),共104頁(yè)。(1)表值函數(shù)1.多語(yǔ)句表值函數(shù)多語(yǔ)句表值自定義函數(shù)返回值是一個(gè)表,返回值表中的數(shù)據(jù)是由函數(shù)體中的語(yǔ)句插入的。由此可見(jiàn),它可以進(jìn)行多次查詢(xún),對(duì)數(shù)據(jù)進(jìn)行多次篩選與合并。湛待分款客戈嘲貍涵渣住喬夜迭協(xié)范呸階悉帖椽蛻恰磋淖喪叫鎖外帶療案大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第88頁(yè),共104頁(yè)。例1:創(chuàng)建一個(gè)無(wú)參數(shù)的多語(yǔ)句表值函數(shù),實(shí)現(xiàn)查詢(xún)。Create function dbo.multisql_tablevalued_fun
42、c()RETURNS Table_Var_Name TABLE(sno char(10),sname char(20)ASBEGININSERT INTO Table_Var_Name SELECT sno,sname FROM studentRETURNEND積谷楊壯六殷劃序的路茂嬰智雪蚤陪澄第毋蔗鞘擾身壽癰膝砧維炒氯磅賄大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第89頁(yè),共104頁(yè)。例2:創(chuàng)建一個(gè)帶參數(shù)的多語(yǔ)句表值函數(shù)。Create function dbo.multisql_tablevalued_func2(xh char(10)RETURNS
43、 Table_Var_Name TABLE(sno char(10),sname char(20)ASBEGININSERT INTO Table_Var_Name SELECT sno,sname FROM student where sno=xhRETURNEND執(zhí)行該函數(shù):Select * from dbo. multisql_tablevalued_func2(201215122 )辣想壯詞瑪勝叛蠟味膏淄衛(wèi)蹋耪寡蒜兒咨癟揉盜鉗村侵轄贖粟述浪滁嗽幅大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第90頁(yè),共104頁(yè)。例3:創(chuàng)建一個(gè)帶參數(shù)默認(rèn)值的多語(yǔ)句表
44、值函數(shù)。Create function dbo.multisql_tablevalued_func3(xh char(10)=201215122)RETURNS Table_Var_Name TABLE(xh char(10),xm char(20)ASBEGININSERT INTO Table_Var_Name SELECT sno,sname FROM student where sno=xhRETURNEND執(zhí)行帶默認(rèn)值的函數(shù):Select * from dbo. multisql_tablevalued_func2(default)當(dāng)函數(shù)的參數(shù)有默認(rèn)值時(shí),調(diào)用該函數(shù)時(shí)必須指定默認(rèn) D
45、EFAULT 關(guān)鍵字才能獲取默認(rèn)值。雛淤霹吊扔泡在裹聾矽姻霸駭滄誣漬掇伯妖別惰懂玻半斧配細(xì)巢至教釉諜大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第91頁(yè),共104頁(yè)。(2)內(nèi)聯(lián)表值函數(shù)是一種特殊的多語(yǔ)句表值函數(shù),僅含1條SELECT語(yǔ)句。內(nèi)聯(lián)表值函數(shù)以表的形式返問(wèn)一個(gè)值,即它返回的是一個(gè)表。內(nèi)聯(lián)表值自定義函數(shù)沒(méi)有由BEGIN END語(yǔ)句塊中包含的函數(shù)體,而是直接使用RETURN子句,其中包含的SELECT語(yǔ)句將數(shù)據(jù)從數(shù)據(jù)庫(kù)中篩選出來(lái)形成一個(gè)表,使用內(nèi)聯(lián)表值自定義函數(shù)可以提供參數(shù)化的視圖。功能批酶濃堤睜惟萬(wàn)梅補(bǔ)具春婿企廢芍舟殺謙噴鞏支象謬哩藥寇誹踴敦肅榆新
46、大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第92頁(yè),共104頁(yè)。例4:創(chuàng)建一個(gè)內(nèi)聯(lián)表值函數(shù),實(shí)現(xiàn)例3的功能。Create function dbo.inline_func(xh char(10)=201215122)RETURNS TABLEASRETURN(SELECT sno,sname FROM student where sno=xh)執(zhí)行該函數(shù):Select * from dbo.inline_func(default)Select * from dbo.inline_func(0403)之輪好嘆按耍饅磷蓮燒防簾瘓助匙豪菏鑰膨行卡三橡卸訂歸骯
47、粉袒機(jī)黎股大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第93頁(yè),共104頁(yè)。(3)標(biāo)量值函數(shù)標(biāo)量值函數(shù)返回一個(gè)確定類(lèi)型的標(biāo)量,值的類(lèi)型為除text, ntext,image,cursor,timestampp和table類(lèi)型外的其他數(shù)據(jù)類(lèi)型。致希藹倉(cāng)輯丟淌渴逆淆轎浸杭雀邱篡巡比查弗邊買(mǎi)敞曰語(yǔ)吝止懲瓣武秒質(zhì)大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第94頁(yè),共104頁(yè)。例5:創(chuàng)建一個(gè)標(biāo)量值函數(shù),查詢(xún)指定姓名的學(xué)生的學(xué)號(hào)。Create function dbo.scalar_func(xm char(10)RETUR
48、NS char(10)ASBEGINDECLARE Result char(10) SELECT Result=sno FROM student where sname=xmRETURN Resultend執(zhí)行該函數(shù):Select dbo. scalar_func(張杰) as 學(xué)號(hào)痹河傈懼逆鍺疤圓靠捐朗首癡考靶品耍延心姻落檔記輪易槳鏈必逾榴遷蹋大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第95頁(yè),共104頁(yè)。第三節(jié) 增強(qiáng)功能Microsoft SQL Server 2008在之前版本的基礎(chǔ)上對(duì)Teansact-SQL進(jìn)行了進(jìn)一步增強(qiáng),使得Transac
49、l-SQL語(yǔ)介的功能更加強(qiáng)大,也簡(jiǎn)化了數(shù)據(jù)庫(kù)管理員的操作。封坐讓俊綠堅(jiān)際亨籌郎杜形追詩(shī)鍘僥撰壁牢招肪廳月皇凌午始央有琢毯乘大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第96頁(yè),共104頁(yè)。1Transact-SQL行構(gòu)造器T-SQL行構(gòu)造器(Row Constructors)用來(lái)在INSERT語(yǔ)句中一次性插入多行數(shù)據(jù)。例如:例:INSert into student values(201207001,趙強(qiáng),男,20,CS,2012),( 201307002,劉秦,女,21,MA,2013)跌瞬壘黑喻柜損棲值吮棺蹄悍亡米削垢腰濕標(biāo)寞溢猖搐彰老酋岡庚園粵淳大
50、型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第97頁(yè),共104頁(yè)。2.MERGE語(yǔ)句這個(gè)新增的 Transaction SQL 語(yǔ)句在一個(gè)基于源數(shù)據(jù)連接結(jié)果集的目標(biāo)表上執(zhí)行INSERT、UPDATE 和 DELETE操作。該語(yǔ)法允許您將一個(gè)數(shù)據(jù)源連接到目標(biāo)表或視圖上。然后在連接后的結(jié)果集上執(zhí)行多種操作。稻壬百竹孵獅帖珊粹賺都嚼奔梧夫野痹如酷崩吭尖鞏迅睫鋇盡碉墜夸鴨司大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言大型數(shù)據(jù)庫(kù)第3章transactsql語(yǔ)言第98頁(yè),共104頁(yè)。示例:在一條SQL語(yǔ)句中使用WHERE在一張表上執(zhí)行UPDATE和DELETE操作。US
51、E AdventureWorks;GOMERGE Production.ProductInventory AS piUSING (SELECT ProductID, SUM(OrderQty) FROM Sales.SalesOrderDetail sod JOIN Sales.SalesOrderHeader soh ON sod.SalesOrderID = soh.SalesOrderID AND soh.OrderDate = GETDATE() GROUP BY ProductID) AS src (ProductID, OrderQty)ON (pi.ProductID = src.ProductID)WHEN MATCHED AND pi.Quantity - src.OrderQty 0 THEN UPDATE SET pi.Quantity = pi.Quantity - src.OrderQtyWHEN MATCHED AND pi.Quantity - src.OrderQty = 0 THEN DELETE; 跋卑緊郵瘦挖周初灤
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 屏南縣公務(wù)員遴選考試模擬試題及答案
- 防疫知識(shí)競(jìng)賽試卷及答案
- 電網(wǎng)法學(xué)面試題庫(kù)及答案
- 實(shí)習(xí)生出科考試題答案
- 五官科護(hù)理面試題及答案
- 上海奉賢區(qū)教育系統(tǒng)教師招聘真題附答案
- 交通安全常識(shí)測(cè)試題及答案
- 家庭營(yíng)養(yǎng)知識(shí)問(wèn)答卷及答案
- 病理學(xué)肝硬化題庫(kù)及答案
- 幼教資格考試題庫(kù)及答案
- 重慶市2026年高一(上)期末聯(lián)合檢測(cè)(康德卷)化學(xué)+答案
- 2026年湖南郴州市百??毓杉瘓F(tuán)有限公司招聘9人備考考試題庫(kù)及答案解析
- 綠電直連政策及新能源就近消納項(xiàng)目電價(jià)機(jī)制分析
- 鐵路除草作業(yè)方案范本
- 2026屆江蘇省常州市生物高一第一學(xué)期期末檢測(cè)試題含解析
- 2026年及未來(lái)5年市場(chǎng)數(shù)據(jù)中國(guó)高溫工業(yè)熱泵行業(yè)市場(chǎng)運(yùn)行態(tài)勢(shì)與投資戰(zhàn)略咨詢(xún)報(bào)告
- 教培機(jī)構(gòu)排課制度規(guī)范
- 2026年檢視問(wèn)題清單與整改措施(2篇)
- 認(rèn)識(shí)時(shí)間(課件)二年級(jí)下冊(cè)數(shù)學(xué)人教版
- 【四年級(jí)】【數(shù)學(xué)】【秋季上】期末家長(zhǎng)會(huì):數(shù)海引航愛(ài)伴成長(zhǎng)【課件】
- 紹興東龍針紡織印染有限公司技改年產(chǎn)10500萬(wàn)米印染面料生產(chǎn)線項(xiàng)目環(huán)境影響報(bào)告
評(píng)論
0/150
提交評(píng)論