第講SQL編程基礎_第1頁
第講SQL編程基礎_第2頁
第講SQL編程基礎_第3頁
第講SQL編程基礎_第4頁
第講SQL編程基礎_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第5講T-SQL編程基礎哈爾濱師范大學恒星學院本講主要內(nèi)容T-SQL

程序語言概況T-SQL

程序語言基礎運算符與函數(shù)常用工具簡介123

Transact-SQL語言(簡稱T-SQL

語言),是由Microsoft

公司開發(fā)的一種

SQL語言,它是標準SQL程序設計語言的增強版,使得應用程序與SQLServer數(shù)據(jù)庫引擎溝通.

T-SQL提供了標準SQL

的DDL、DCL

和DML功能,加上擴展的函數(shù)、系統(tǒng)存儲過程以及程序設計結構(例如IF

和WHILE)讓程序設計更有靈活性,還可以實現(xiàn)對數(shù)據(jù)庫管理的功能.

T-SQL語言是SQLServer的核心.

一.

T-SQL程序語言概況

隨著MicrosoftSQLServer版本的演進,衍生自ANSISQL的T-SQL語言變得獨立且功能強大,擁有眾多用戶,是解決各種數(shù)據(jù)問題的主流語言.在SQLServer的功能大量擴增并廣泛進入企業(yè)各系統(tǒng)后,日益龐大的數(shù)據(jù)量讓T-SQL發(fā)揮了重要的作用.

T-SQL

語言主要包括三種類型的語句:數(shù)據(jù)定義語言(DateDefinitionLanguage,DDL),數(shù)據(jù)控制語言(DateControlLanguage,DCL),數(shù)據(jù)操縱語言(DateManipulationLanguage,DML),簡要介紹如下.

數(shù)據(jù)定義語言(DDL),除了可以用來建立數(shù)據(jù)庫與數(shù)據(jù)庫相關對象之外,還可以修改及刪除數(shù)據(jù)庫對象.例如,數(shù)據(jù)庫、表及視圖等對象.T-SQL程序語言的分類數(shù)據(jù)定義語言說明CREATE建立數(shù)據(jù)庫對象ALTER修改數(shù)據(jù)庫對象DROP將該數(shù)據(jù)庫對象刪除表5-1

數(shù)據(jù)定義語言(DDL)USE

pubsCREATETABLEmyOrders(OrderIDint,OrderDatesmalldatetime,CustomerIDChar(10),ShipDddressvarchar(100))

數(shù)據(jù)控制語言(DCL)用來設置用戶對數(shù)據(jù)庫對象的訪問權限,如下表.數(shù)據(jù)控制語言說明GRANT賦予某個用戶具有數(shù)據(jù)庫對象的權限D(zhuǎn)ENY禁止使用該數(shù)據(jù)庫對象,且不能繼承REVOKE收回之前設置的權限表5-2

數(shù)據(jù)控制語言(DCL)GRANT

SELECT

ON

myOrders

TO

Jack

數(shù)據(jù)操縱語言(DML)用來訪問表中的數(shù)據(jù),下表5-3

列出了每個語句的使用方式.數(shù)據(jù)操縱語言說明SELECT從表或視圖中選擇行INSERT將行插入到表或視圖中UPDATE在表或視圖中更新行DELETE在表或視圖中刪除行表5-3

數(shù)據(jù)操縱語言(DML)SELECT*FROMmyOrders

T-SQL語言的目的在于為處理大量數(shù)據(jù)提供必要的結構化處理能力,因此,它并沒有提供VB

和C

所具有的某些語言特性.其它功能仍需要前端設計工具(如FoxPro、Delphi、Java

VB

等)

來處理.所以,一般稱SQLServer、Oracle

和mySQL

等數(shù)據(jù)庫管理系統(tǒng)為“數(shù)據(jù)庫引擎”.

二.

T-SQL

程序語言基礎

批處理是由一條或多條T-SQL語句構成,應用程序?qū)⑺鳛閱蝹€代碼單元發(fā)送給系統(tǒng).

SQL

腳本文件或者查詢編輯器的窗口都可以包含多個批處理.

在這種情況下,需要使用批處理分隔符關鍵字GO

來結束每一個批處理.

使用GO

來結束批處理時,只能把它自己放在單獨的一行上.

結束一個批處理時,將會釋放所有由該批處理所創(chuàng)建的局部變量、臨時表、游標.

1.

T-SQL批處理

---以下代碼會列出該服務器上所有的數(shù)據(jù)庫名稱SELECT

name

FROM

sys.databases實戰(zhàn)練習

---查詢登錄的用戶賬號,使用的數(shù)據(jù)庫與當前的數(shù)據(jù)庫服務器的系統(tǒng)日期和時間SELECT

SUSER_SNAME(),DB_NAME(),

GETDATE()

在SSMS

的工具條上會標明當前的數(shù)據(jù)庫,你也可以使用它來改變當前的數(shù)據(jù)庫.

在代碼中,則可以使用USE

命令來選定當前的數(shù)據(jù)庫.

使用USE

命令來顯式地選定正確的數(shù)據(jù)庫是一種好的開發(fā)方法,不要把選定正確的數(shù)據(jù)庫交給用戶去做.切換數(shù)據(jù)庫

有些特殊的T-SQL

命令必須單獨地放在它自己的批處理之中,或者說必須將它們與其他的批處理命令分別放到不同的批處理中.

數(shù)據(jù)定義語言命令(CREATE、ALTER和DELETE)就是這樣

T-SQL命令,應當將它們放到他們自己的批處理中去,這是一項要牢記的規(guī)則.

DDL命令

可以在查詢編輯器中打開一個.sql腳本文件,按下F5

鍵或者選擇工具欄中的!執(zhí)行項來執(zhí)行一個

SQL腳本程序中的全部批處理.

在查詢編輯器中可以通過突出顯示來選擇一些命令,然后執(zhí)行這些選定的T-SQL

命令.

在應用程序中,可以通過使用ADO

或者ODBC

來提交并執(zhí)行

T-SQL批處理.執(zhí)行批處理

對于T-SQL代碼應格式化,以方便閱讀.T-SQL命令往往都會寫得較長.但T-SQL會忽略空格和行尾的換行符,即不需要使用特殊的續(xù)行符號來編寫長達數(shù)行的

T-SQL命令,從而顯著地提高了T-SQL

代碼的可讀性.

注釋符號(略).

2.格式化T-SQL代碼

在完懲成程躺序代傷碼的撥編寫霸后,私可以可單擊總”文件”菜單育中的繁”保存”因或披”另存武為”榮選項,將程證序代碼償存為*.s觀ql文件.該文鄰件是四文本躬格式,故可顫以使用衫任何割文本織編輯危器(如No曬te早Pa脹d,Ul名tr輩aE商di抹t)來進行悼編輯.若先尺前已暴經(jīng)打繭開多舉個”查詢辛編輯趁器”究窗口,并編寫晌了多近個文精件,則可態(tài)以使勉用會”保存陶全部繡查詢”的方做式來曬保存壓所有碧的程策序代寒碼.3.保存搖程序江代碼在T-餃SQ濟L中可首以使沿用兩側種變繭量,楊一種籍是局部變磁量(Lo坊ca倦l俯V翠ar通ia鄭bl刷e),混另外銅一種候是全茶局變量(Gl非ob疾al蟲Va婚ri名ab貢le).●局部玻變量局部功變量坡是用喊戶可弦自定連義的名變量逼,它欣的作怖用范圍死僅在懲程序偽內(nèi)部.局部括變量團必須該以@開頭種,而宏且必費須先脹作說明:DE鈔CL錫AR嗽E@變量圣名竿變景量類講型4.變量在T-叔SQ顛L中對宅變量盾賦值育的語瓜法如贏下:SE細LE初CT@局部超變量=變量匪值SE伴T@局部謠變量=變量通值兩種腎賦值耽命令別的主壺要區(qū)別在于串:SE浙LE施CT可以首從表然、子武查詢檢或者津視圖堆中檢索數(shù)度據(jù),捆也可匆以包裹含其蘿它的SE蜻LE琴CT子句,并且一次練可為跡多個紛變量卷賦值.SE笛T只能址從表列達式焦中獲懶取數(shù)賞據(jù).兩個赤命令啄中都傳可以幟使用哥函數(shù).變量蛙的賦哪值問題1考慮蹄下面鈴的程址序會補有什企么結恩果:DE落CL其AR挎E@s扔tr麻Na般me錘C它HA異R(肝10畜)SE鍛LE屢CT@s斑tr廳Na狠me推=‘著Sm駛al杏lF做is叉h’PR柏IN重T@s帆tr敘Na駐meGO問題2考慮佳下面角程序惡運行儀的結括果:DE惰CL舌AR血E@Te購st高I尿NT棉,@Te岔st閘Tw按o督NV指AR溉CH繼AR嗓(2咽5)PR嫩IN帽T@Te濾stPR揉IN庸T@Te預st是Tw洽oSE些T@Te尤st威=1SE難T@Te著st酸Tw閘o=濁'a逆v斗al慣ue嬌'GOPR數(shù)IN虧T@T魚es媽t--棋-問題3考慮靠下面業(yè)程序類運行銜的結喘果:US托ENo艇rt講hw滴in顛dDE藝CL轎AR淺E@T距em負pI朝D估IN期T,@T柳em粒pL道as懼tN遇am頓e濟VA喊RC桑HA侮R(耗25參)SE屆T@T綁em燥pI孕D=遮99SE倆LE欠CT@T問em鄰pI皂D=案Em驚pl擇oy線ee遣ID迎,@T雅em來pL賭as樸tN拔am亞e=呈LN秧am狂eFR農(nóng)OMdb年o.做em徒pl曾oy矩eeSE欠LE重CT@T喜em柱pI住D,避@奧Te許mp爺La堅st裝Na療me全局先變量每是可塊以調(diào)葬用的俊系統(tǒng)姑變量夸,庫它們恒是只護讀的攻,不牽能被武創(chuàng)建.它們蕩的作傍用是澇提供量系統(tǒng)稈的信妹息.全局趕變量趙以@@開頭危,最木常用膠的有厲:@@的Er曠ro然r--檢--最近算一次梨執(zhí)行楊的T-揚SQ兼L語句茂的錯供誤編憲號@@苦Id弄en阿ti磨ty--撕--為當浩前連勁接所收生成奶的最呼后一死個標災識值@@柄Ne回st聲Le侵ve戚l--販--當前槽存儲貧過程輝的最村大嵌好套層泛次數(shù)@@標Se場rv虛er鉤Na枝me--橡--當前添服務姓器的縫名字@@稍sp鼠id--鏟--當前飲用戶恭進程調(diào)的會孕話id@@甜cp的u_堡bu播sy--步--SQ奧L紅Se割rv鮮er自上搬次啟攤動后咳的工查作時賣間全局撥變量許多遭人對T-部SQ悠L的初載步印排象是妹它的鞭流程碰控制命塔令較攏少.實際緊上,巧雖然植它的皮流程庭控制潮命令賞沒有其鋒它語動言那查樣豐撐富,扔但已院經(jīng)足翠夠了.它為接數(shù)據(jù)處理蹲命令雙提供天的布領爾擴郊展--蘋--如EX嫩IS匆TS、IN和CA副SE--垮--補充撒了IF和WH估IL接E語句蛙的不琴足.●IF這個翼語句浸的特允別之監(jiān)處在森于:咳利用燭它只繼能對阻其后的巴一條棗語句餡的執(zhí)削行與續(xù)否進狐行控鴉制.同時歇,它遵也沒有TH搬EN,以剛及EN續(xù)DI悼F等命用令.5流程挽控制例如考慮置下面酒程序跡運行叨的結故果:IF1=螺0PR柳IN些T'Li六ne期On始e'PR稀IN飲T'Li攀ne趙Tw驕o'在這傾個腳得本中窯,IF條件德應該址返回涂一個陰假值,從而弦不會品執(zhí)行IF下面失的第英一條PR糟IN衰T命令.一個IF命令引只能談控制恥一條氧語句顏的執(zhí)旗行與眼否,這顯堪然缺攀乏實揭用性.要解濾決這源個問痛題,誼可始以使用BE傷GI謊N/EN系D塊,爺它蔑可將余多條榴命令殃作為渣一個整體.IFco紐奉nd獸it慘io船nBE晶GI丸Nmu耳lt柳ip兵le豎li筍ne啄sEN友DIF毀…E婆LS妄E…語句IF皇EX捷IS饒TS輩()結構濫根據(jù)SE惹LE視CT命令系返回的結托果集甩是否用包含采有行頁來進榨行判摸斷.只要蛾查詢返回掘了一俘條記癥錄,芬就可接以停賀止執(zhí)挪行查懶詢,棋轉(zhuǎn)而執(zhí)行沸批處免理中掉其他犁的語惰句,豪所以長這種者方法呈的速度更市快.US耀E商品六庫存IF緞EX轟IS轉(zhuǎn)TS愧(S膀EL慨EC四T慈*駕FR偏OM衛(wèi)sh換an番gp嘆inWH盒ER坑E產(chǎn)品宏數(shù)量=0)BE謙GI崖NPR溝IN哪T‘已有近產(chǎn)品氧缺貨捏’EN躲D●WH粒IL群E…甘CO睛NT絡IN匯UE掛…B錢RE敞AKWH液IL儉E命令盒在設繞定的賭條件改成立完時,瘡會重弊復執(zhí)行出命令療行或芽程序憤塊.其語漲法如賠下:WH無IL擊E捧<命令乓行|程序闖塊>BE憂GI岸N<命令促行|程序另塊>[B首RE伶AK文][C撒ON膨TI篩UN后E][命令斃行|程序痛塊]EN含D其它倒控制謝命令柔參見畜教科鳴書.WH往IL般E…語句●CA痕SE搬…分支脹語句●RE都TU債RN終止郊語句●WA負IT屠FO渡R…暫停順語句●PR清IN啦T輸出出語句其語墊法格稻式和路用法哄參見伙教科閣書.其它著流程莖控制殘語句Mi鞠cr與os郵of維t撿SQ惠L百Se唱rv劈燕er酷2員00森8提供井了7種類型的脖運算氏符,碑分別債是算蜻術運稼算符堅、賦未值運限算符旱、位運聞算符影、比劫較運賠算符描、邏良輯運接算符岡、字很符串運算疑符和課一元籌運算供符.SQ卸L用Se季rv彩er提供晉了許升多系隙統(tǒng)內(nèi)臣置函狡數(shù),襲同時漠也允浴許用誦戶根柔據(jù)需蹲要自輩己定以義函元數(shù).SQ葛L奇Se垮rv巨e提供園的常掉用的退內(nèi)置冠函數(shù)鑄主要敵有以藥下幾蘿類:烏數(shù)學守函數(shù)腰、字灰符串消函數(shù)門、日究期函特數(shù)、踩轉(zhuǎn)換狀函數(shù)點、聚優(yōu)合函息數(shù)等.三.運算否符與金函數(shù)數(shù)據(jù)途庫基塌礎與執(zhí)應用封(SQ遭L匪Se瓣rv秋er刪2床00吹8)運算符說明語法Not對表達式的值取反NotExpressionAnd與,如果表達式的值都為True,結果為True,否則為FalseExpression1andExpression2Or或,如果表達式的值都為False,結果為False,否則為TrueExpression1orExpression2Between…and如果操作數(shù)在某個范圍內(nèi),結果為TrueExpressionbetweenAandBIn如果操作數(shù)等于值列表中的任何一個,結果為TrueExpressionin(值表或子查詢)Like如果字符型操作數(shù)與某個模式匹配,結果為TrueExpression1likeExpression2Exists如果子查詢結果不空,結果為TrueExists(子查詢)Any或Some如果操作數(shù)與一列值中的任何一個比較結果為True,結果為TrueExpression>any(值表或子查詢)All如果操作數(shù)與一列值中所有值的比較結果為True,結果為TrueExpression<all(值表或子查詢)邏輯現(xiàn)運算丸符數(shù)據(jù)額庫基泛礎與界應用糖(SQ更L擾Se糾rv焰er煤2悉00全8)按位夏運算份符對異兩個設二進牽制數(shù)疫據(jù)或級整數(shù)悲數(shù)據(jù)追進行聞位操作哈,但賓是兩環(huán)個操襪作數(shù)違不能傍同時貞為二漏進制弓數(shù)據(jù)螞,必塔須有一剖個為飽整數(shù)過數(shù)據(jù).SQ什L堆Se雖rv水er芽2選00搜8提供舍的按仰位運算呀符如模下表拘所示.運算符說明語法&按位與Expression1&Expression2|按位或Expression1|Expression2^按位異或Expression1^Expression2~按位去反~Expression按位齊運算燦符數(shù)據(jù)嘴庫基婚礎與題應用兇(SQ創(chuàng)L黎Se葵rv茶er吧2奪00蝦8)~(按天位取吐反)*(乘季)、/(除葛)、%(取育余)+(正營)、-(負藍)、+(加逗)、斜(+字符乎串串桿聯(lián))躬、-(減弦)、&(按昌位與羊)、^(按瓦位異沸或)稅、|(按具位或嘆)=、>、<、>=、<=、<>、!=峰,疤!>、!<(比釀較運予算符察)No婦tAn林dAl夕l、An恭y、Be坦tw首ee庫n、In、Li思ke、Or、So神me=(賦帽值)運算健符的汗優(yōu)先澡級數(shù)據(jù)連庫基遇礎與鞏應用鍋(SQ姿L科Se辛rv饅er粱2框00燦8)Ab呈s察(軍nu第me塌ri加c_疲ex司pr批es胃si叛on團):返回羅指定磨數(shù)值潮表達榴式的萍絕對育值Ro煌un俊d滲(訓nu碧me圈ri獻c_急ex柄pr栽es懶si蕩on熟,復l或en冤gt趕h頑[煮,f綢un疫ct欣io寶n份]此):返回決一個獨舍入色到指廊定的降長度脂或精揭度的滔數(shù)值Fl縮慧oo旗r春(灶nu寨me脅ri留c_遍ex塵pr盆es斷si澤on擱):返回板小于倚或等儀于指星定數(shù)筋值表蔑達式競的最耽大整堤數(shù)Ce書il罰in貸g霜(良nu眉me默ri墻c_字ex崗pr情es垃si殖on喜):返回喝大于迫或等抗于指德定數(shù)珠值表艷達式災的最汪小整彈數(shù)Po派we宜r睛(講fl悅oa萄t_暫ex敢pr魯es綱si下on頸,涼y墻):返回訪指定化表達揀式的薄指定杏冪的可值Sq裙rt銅(陜f責lo勾at衡_e武xp觀re迷ss先io容n宏):返回到指定其表達腹式的燙平方?jīng)Q根Sq亞ua畏re袍(圣f梯lo戶at營_e靈xp耀re熱ss逼io喜n掩):返回掩指定址表達異式的蚊平方Ex睜p扒(糖fl所oa曉t_淘ex熊pr著es死si克on軍):返回夸指定皺的表芬達式咳的指紫數(shù)值Lo慎g悄(閱fl辮oa擠t_貸ex險pr嘩es搬si灣on罰):返回辨指定的表達吩式的爺自然看對數(shù)Lo山g1貿(mào)0以(待fl蹄oa鋪t_芳ex孔pr洋es秒si澇on浙):返回判指定棚表達酸式的睛以10為底薄的對鹽數(shù)Si蔽n意(捧fl住oa券t_鍬ex蓋pr除es闊si吳on柿):返回作指定亮角度陵(以廁弧度紹為單番位)齊的三現(xiàn)角正千弦值Co牽s嘩(警fl墾oa風t_怒ex失pr招es浙si拘on最):返回酷指定課角度鏟(以渣弧度之為單統(tǒng)位)乎的三擱角余偷弦值常用符的數(shù)偵學函擇數(shù)數(shù)據(jù)玻庫基域礎與小應用蹦(SQ飽L義Se揭rv昌er犬2沃00鉤8)As繡ci奪i干(慨ch舌ar描ac男te醫(yī)r_胡ex胡pr恨es貿(mào)si崖on劣):返回屢字符甩表達鄰式中竹最左洞側的財字符過的AS躲CI膜I代碼棟值Ch漫ar沖(漏i以nt猛eg曠er礎_e腹xp翅re址ss得io持n費):將in撤t型的AS惹CI叨I代碼廢轉(zhuǎn)換澤為字六符St跨r紐奉(貝fl東oa慮t_棋ex使pr雁es同si肉on休[延,盼l催en踩gt褲h發(fā)[粱,謎de眉ci昏ma班l(xiāng)歌]缸]憂):返回況由數(shù)屠字數(shù)扛據(jù)轉(zhuǎn)張換來稿的字看符數(shù)白據(jù)Le量n廚(迷st環(huán)ri哭ng亞_e重xp守re茫ss戲io框n宋):返回勢指定蝕字符幫串表莊達式鉤的字塵符數(shù)配,其忙中不京包含穩(wěn)尾隨偽空格Su臟bs胡tr哲in決g白(谷va理lu撈e_贏ex飽pr辮es槳si土on謀,妥st堆ar公t_桌ex根pr母es賀si柿on征,鋤l嬌en浴gt然h_友ex猾pr坡es液si軌on歐):返回霉字符紡表達纏式的居從st巖ar乖t_蔽ex柱pr首es謝si暴on位置錄開始艘的長扮度為le蟲ng沖th暗_e含xp蓄re枯ss嘆io逃n的子催串Le錯ft章(言c輸ha糊ra霉ct揭er晃_e腥xp靈re盆ss堂io酬n匙,漢in鄙te顫ge般r_末ex場pr注es支si齒on私):返回壇字符叨串中禾從左斗邊開滲始指槐定個公數(shù)的憂字符Ri執(zhí)gh德t健(飽ch然ar戶ac差te燥r_頓ex棒pr姜es測si跡on淋,發(fā)i泡nt乎eg宇er帖_e版xp玩re是ss允io稱n采):返回穩(wěn)字符移串中儉從右?guī)н呴_居始指異定個筆數(shù)的至字符Lt戚ri辣m(扣c弓h(huán)a默ra蹲ct視er簡_e諒xp棒re叨ss殲io址n跌):返回師刪除坊了前珠導空納格之停后的輸字符骨表達述式Rt形ri稍m呀(淹ch芝ar業(yè)ac見te跌r_喜ex摔pr修es漂si畝on退):截斷戰(zhàn)所有僵尾隨雅空格往后返嚼回一霞個字悅符串常用劈燕的字防符串睬函數(shù)數(shù)據(jù)吉庫基揚礎與脹應用怒(SQ揚L申Se榮rv流er燈2強00蝕8)Ge街td尸at壓e罩(掙):返回漲系統(tǒng)師當前音的日離期和鵝時間Ye買ar時(燙d摩at祖e肢):返回買表示晨指定熔參數(shù)da蓮te的“乞年”根部分顯的整筒數(shù)Mo飄nt尤h平(暈da文te晶):返回桂表示壯指定抵參數(shù)da疊te的“胃月”眉部分釋的整寬數(shù)Da煤y應(飲

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論