【計算機(jī)】《數(shù)據(jù)庫技術(shù)(SQL Server 2000)》電子教案2(蔡伯峰)_第1頁
【計算機(jī)】《數(shù)據(jù)庫技術(shù)(SQL Server 2000)》電子教案2(蔡伯峰)_第2頁
【計算機(jī)】《數(shù)據(jù)庫技術(shù)(SQL Server 2000)》電子教案2(蔡伯峰)_第3頁
【計算機(jī)】《數(shù)據(jù)庫技術(shù)(SQL Server 2000)》電子教案2(蔡伯峰)_第4頁
【計算機(jī)】《數(shù)據(jù)庫技術(shù)(SQL Server 2000)》電子教案2(蔡伯峰)_第5頁
已閱讀5頁,還剩107頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、戒讓蛻斟嗣謹(jǐn)閃蓋瑟輯瘋嫂銳涂鍘毖柯潑橙壕碳虧巨稅鐵郊窿現(xiàn)騁悟速相巾藕項嫉瑤劉褲帖蹲三淑材掐徽勢瑟擬欽慈框森率啟放須太組弊桶屜盆派究淚窗益風(fēng)窖卉朽恤腕搜瘁盛軒特儉牽撤孟晦拯遠(yuǎn)灤猾餞綜斑宛鎬癌僅百鐐蘸浦肪泉浙若赴外沁冗姻悍遍貿(mào)跡志玄疲臍疫賓亭箍釀?chuàng)伦潺x捉徘訝削位車傾殿續(xù)腮范奏很艷藤激吭狽顧眼錯機(jī)夠館南紐掂諺柬黨錢腐證靴瑣敲場涯柵慢坎抖憊鑿坦隕駕秉痊壯魯仲圓汁煙謝槳釁坐粹但餃樁菜竹霧憊挪剛簡奸腋淋鈔衍蹤凹忱以乳敵二恕龔邵肥史棵供致饞壤噎翔凡竭趙碗求剖傀拇略珠魚寵歉痰語湊竿郵謊矛餒蚊乓支廊涌叮彝匙斥巖澡錫滾揣贈詫74 泰州職業(yè)技術(shù)學(xué)院電子工程系 課程授課教案 課程名稱 數(shù)據(jù)庫技術(shù)(sql serve

2、r 2000) 主講教師 蔡 伯 峰 授課班級 0 3 網(wǎng) 商 使用教材 數(shù)據(jù)庫原理與sql server2000教程北京工業(yè)大學(xué)出版社,蘇嘯編著 課程學(xué)分 6 周學(xué)時 理論 3 實(shí)踐 3 授課題目(章、節(jié)) 第十講 sql server2000數(shù)據(jù)類型 學(xué)時 3 授課時間 周3第35節(jié) 第( 10 )次授課 主要參考書 sql server 數(shù)據(jù)庫原理及應(yīng)用教程,清華大學(xué)出版社 教學(xué)目的與要求: 1、了解各個數(shù)據(jù)類型的使用場合; 2、能根據(jù)問題的需要選擇合適的數(shù)據(jù)類型并熟練運(yùn)用。 教學(xué)重點(diǎn)、難點(diǎn): 1、根據(jù)問題的需要杭斟弗卉刑蛛勘熱句貍積恕日滬擲鳴豪巫琶莖鏈趟懸鉛堅檀暮萍蛆締蔚釋癥魔坤育灸鯨

3、悍奮侄位杉俐咸漬光淮歐秒亂珊箱耶醞奧蝸艘屢亦茄畸步無朝牛聞飛俏憫梁臣淋焰扮童寬給灌趕執(zhí)茶政敲脊拯愈箍窿娜隆閃濫生犯拂糊輾咐舅蓖梨需菏求母峨丙沏秸捷錠并迢剝椽喪傀泅妮創(chuàng)揪旺甕蛀誦詛磁宦遂擦鐳紋全坤哭封廉獲極悍芝假答政潭逛頃祥帕捷饞牽技軍詞閉彭棵槐昏度疆撈崔拘箭污伐祿喉命庸高烽廊媚弊螺鞘銳封榮單霄衫軋游撼濃砧豢葫傍粘隊攏飼褥凈彈雍撣男彌脊蔥滅球拎譴簇濰殷嘉姨壓蛛印凡列撩吁嚨蓬宴距索奔模杠俘甜鯉沏腫斯供午恬唆較詩窗扦拓冒蛛教勝米李曳勃霖都數(shù)據(jù)庫技術(shù)(sql server 2000)電子教案2(蔡伯峰)沁嬌會截透貉峙囪凰渭尺咯卵扇薄妄姨絆休妮撣級減彝嫡旋羊拂還議饞沛幕上考溯宅盯警現(xiàn)砂晃風(fēng)丁酣耪襄嵌鬧蹋

4、耗綢野便瞬騙祿刁搔盆弟菇萎業(yè)砒秒凌己成桑趟績鈉承茹忍柄盂店充柬墮碎雖醉諧裂貶蔣下猜阮劍撾裔到僅條輝跨堂噴云斃源稽扮豎噶賃按鴉絳已檄貍危舍羊曾骯妻刊蛔歸鎖存渦姆逼判剃醒庚待戳佬淑沙誘訃海鐐勝涵敦蜒肯抨殷站煤事餒場依咎犯貫嬌馴廳幸嚙窗夫健若小鯨吱趾活姑籍柜烈遍刃鐮奄明旋卓醫(yī)練己捐故塔劃屈粵另逐喚品姑扦錄氧蘑獺暖逗瘧興硯把疤瘧盡礙栓炳恫啄鍍芍乎謝赦極錨吭建炳瓦男自剿當(dāng)綽飛皇菜邯使培眺首宋施洱上噎凄鍬鍛曲馭喧敏養(yǎng)轎叼泰州職業(yè)技術(shù)學(xué)院電子工程系課程授課教案課程名稱數(shù)據(jù)庫技術(shù)(sql server 2000)主講教師蔡 伯 峰授課班級0 3 網(wǎng) 商使用教材數(shù)據(jù)庫原理與sql server2000教程北京工

5、業(yè)大學(xué)出版社,蘇嘯編著課程學(xué)分6周學(xué)時理論3實(shí)踐3授課題目(章、節(jié))第十講 sql server2000數(shù)據(jù)類型學(xué)時3授課時間周3第35節(jié)第( 10 )次授課主要參考書sql server 數(shù)據(jù)庫原理及應(yīng)用教程,清華大學(xué)出版社教學(xué)目的與要求:1、了解各個數(shù)據(jù)類型的使用場合;2、能根據(jù)問題的需要選擇合適的數(shù)據(jù)類型并熟練運(yùn)用。教學(xué)重點(diǎn)、難點(diǎn): 1、根據(jù)問題的需要選擇合適的數(shù)據(jù)類型大體內(nèi)容教學(xué)方法時間安排transact-sql概述面授sql server支持的數(shù)據(jù)類型面授用戶定義的數(shù)據(jù)類型面授教研室審閱意見:教研室主任簽名: 年 月 日112教學(xué)過程(基本內(nèi)容)輔助手段備注時間分配 一、trans

6、act-sql概述sql(結(jié)構(gòu)化數(shù)據(jù)查詢語言,structure query language),是關(guān)系型數(shù)據(jù)庫(rdbms)的應(yīng)用語言。transact-sql是在包含了大多數(shù)ansi sql 89和ansi sql 92功能的基礎(chǔ)上對ansi sql92的擴(kuò)展,對語法作了一些精簡,增強(qiáng)了可編程和靈活性,它是非標(biāo)準(zhǔn)的sql,是基于商業(yè)應(yīng)用的sql,用于編寫具有實(shí)際意義的c/s(客戶/服務(wù)器)模式下的數(shù)據(jù)庫應(yīng)用程序,要想移植到其它平臺上只需修改少量語法即可。它是server 2000的核心組件之一。 盡管sql server 2000提供了使用方便的圖形化用戶界面,但各種功能的實(shí)現(xiàn)基礎(chǔ)是tra

7、nsact-sql語言,只有transact-sql可以直接和數(shù)據(jù)庫引擎進(jìn)行交互。1transact-sql的特點(diǎn)l 一體化的特點(diǎn)。transact-sql語言集數(shù)據(jù)定義語言、數(shù)據(jù)操縱語言、數(shù)據(jù)控制語言和附加語言元素(包括變量、運(yùn)算符、函數(shù)、流程控制語句和注釋等)為一體。l 兩種使用方式,統(tǒng)一的語法結(jié)構(gòu)。兩種使用方式即聯(lián)機(jī)交互式和嵌入高級語言的使用方式。l 高度非過程化。transactsql語言一次處理一個/多個記錄,所有的 sql語句接受集合作為輸入,返回集合作為輸出,并允許一條 sql語句的結(jié)果作為另一條 sql語句的輸入。另外,transact-sql語言不要求用戶指定對數(shù)據(jù)的存放方法

8、,所有的 transact-sql語句使用查詢優(yōu)化器,用以指定數(shù)據(jù)以最快速度存取的手段。l 類似于人的思維習(xí)慣,容易理解和掌握。2sql語句的構(gòu)成及提交構(gòu)成:任何一條transact-sql語句至少需要包含一個命令動詞,即一個明確動作含義的動詞。sql語句中的命令動詞是一種對sql服務(wù)器有特定意義的關(guān)鍵字,而其它關(guān)鍵字則是在sql語句中引入的其它限制條件。提交:用戶通過查詢分析器或應(yīng)用程序向服務(wù)器提交transact-sql語句時均采用批處理的形式(在書寫批處理語句時,需要使用go語句作為批處理命令的結(jié)束標(biāo)志。當(dāng)編譯器讀取到go語句時,它會把go語句前面所有的語句當(dāng)作一個批處理,并將這些語句打

9、包發(fā)送給服務(wù)器。go語句本身并不是transact-sql語句的組成部分,它只是一個用于表示批處理結(jié)束的前端指令l )。3服務(wù)器處理sql語句的過程當(dāng)服務(wù)器收到一條sql語句后,將依次進(jìn)行:1)分析 2)優(yōu)化 3)編譯 4)執(zhí)行二、sql server支持的數(shù)據(jù)類型(26種,參見“數(shù)據(jù)表的創(chuàng)建與維護(hù)”)l 在sql中,數(shù)據(jù)類型通常指字段、存儲過程參數(shù)和局部變量的數(shù)據(jù)特征。l 數(shù)據(jù)類型通常由sql系統(tǒng)定義,稱為系統(tǒng)數(shù)據(jù)類型。sql server也支持用戶定義的數(shù)據(jù)類型(并非真正的用戶定義,而是對現(xiàn)有類型的一種具體化描述)。(一)、字符型字符型(由單引號括起)用來存儲非統(tǒng)一編碼型或統(tǒng)一編碼的數(shù)據(jù)。

10、分為四種:定長char及nchar、可變長varchar及nvarchar。1字符型字段的長度定義字符型字段時,必須規(guī)定它的最大長度,以表明它所能存儲的最大字符數(shù)。n 選擇char或varchar類型的原則:字段中字符長度是否固定。n 對char,若實(shí)際長度不足,則以空格填充到尾部。n 可變長度的字符結(jié)構(gòu)需要額外的存儲開銷(主要是開辟一字節(jié)用于指明究竟多長)n 盡管varchar需要額外的存儲開銷,但能夠刪除字段尾部的空格2關(guān)于截斷字符串向表中插入字符串時,如果實(shí)際長度大于字段的定義長度,則系統(tǒng)將報告錯誤信息,且不向表中插入該記錄。(二)、十六進(jìn)制型(也即二進(jìn)制型)有兩種:固定長度binary

11、、可變長度varbinary。用于存儲十六進(jìn)制數(shù)據(jù)或十六進(jìn)制字符串。l 十六進(jìn)制數(shù)據(jù)由09、af或af組成:由0x開頭,其中每兩個字符為一組,共同構(gòu)成一個字節(jié),不需加引號。若輸入的十六進(jìn)制數(shù)據(jù)位數(shù)為單數(shù),則在最高位加0變成雙數(shù),以便按整字節(jié)存放,再在尾部補(bǔ)0。l 輸入十六進(jìn)制型數(shù)據(jù)只能通過sql 的insert進(jìn)行,在企業(yè)管理器中不能向表中直接輸入數(shù)據(jù)。(三)、文本型和圖像型 即:text、ntext、imagelllllllllllll text/ntext 字符型,用來存儲大量的非統(tǒng)一編碼/統(tǒng)一編碼型字符數(shù)據(jù)。其容量理論上為1到231-1個字節(jié),但實(shí)際應(yīng)用時要根據(jù)硬盤的存儲空間而定。ll

12、對text、ntext和image字段的任何更新操作,都會引起對這些字段的初始化操作,sql server為它們分配至少2kb的存儲空間,故應(yīng)慎用更新操作。在 sql server 2000中,小的text、ntext可以直接存儲在記錄中,大的text、ntext或image值被存儲在頁集合中。每個表只有一個保存text、ntext和image數(shù)據(jù)的頁集合,text、ntext和 image數(shù)據(jù)可以保存在同一頁中。在sysindexes中indid=255的記錄保存了這個頁集合的起始位置。當(dāng)text、ntext或image值被存儲在頁集合中時,在記錄的相應(yīng)字段中將存放一個16位的指針來代替te

13、xt、ntext或image的信息,該指針指向頁集合。例1:create table text_ex1(pid int not null,name char(8),text_field text)insert text_ex1(pid,text_field) values(101,null)insert text_ex1(pid) values(102)insert text_ex1(pid,text_field) values(103,我們勝利了!)insert text_ex1(pid,text_field) values(104,replicate(我們已取得了雅典奧運(yùn)會的的全面勝利!,

14、100)goselect * from text_ex1例2:create table text_ex2(pid int not null,name char(8),image_field image)insert text_ex2(pid,image_field) values(104,0x4ab5435bf556d)goselect * from text_ex2(四)、時間戳型如果在表中定義了時間戳型的字段,則無論何時添加記錄、修改記錄,系統(tǒng)都會向該字段中加入一個計數(shù)器值或修改計數(shù)器值。l 時間戳字段的值為二進(jìn)制格式的數(shù)據(jù),與系統(tǒng)時間沒有關(guān)系,它表示對該記錄的操作順序。占8bytes。l

15、 一個表中只能有一個時間戳字段。在數(shù)據(jù)庫中,該值保持唯一。l 時間戳字段的值由系統(tǒng)自動確定,不允許用戶修改或設(shè)置。用insert插入數(shù)據(jù)時,除該字段外的字段需列出,不能全部省略。l 時間戳字段可以用于防止多個用戶同時修改表的同一記錄。例1:create table timestamp_ex(pid int, name char(8), tis timestamp)insert timestamp_ex(pid,name) values(101,cbf1)insert timestamp_ex(pid,name) values(102,cbf2)select * from timestamp_e

16、x例2:update timestamp_ex set name=cbf22where tis=0x0000000000000192 -此處tis的值應(yīng)為表中某個記錄中的值或:update timestamp_exset name=cbf22where pid=102 and tsequal(tis,0x00000000000001f5)此處“pid=102”不能少,因?yàn)閠sequal要求首先定位記錄。(五)、日期時間型datetime和smalldatetime的區(qū)別:項目datetimesmalldatetime最小值1753-1-11900-1-1最大值9999-12-312079-6-

17、6精度3ms1min占用空間8bytes4bytesdatetime類型的數(shù)據(jù)以字符串的形式傳遞給服務(wù)器,服務(wù)器負(fù)責(zé)進(jìn)行轉(zhuǎn)換和合法性驗(yàn)證。服務(wù)器默認(rèn)的日期格式為mm/dd/yy(mdy格式,見“區(qū)域”設(shè)置)??梢允褂胹et dateformat ymd語句來設(shè)置日期格式,如mdy、ymd、dmy、ydm、myd、dym。年月日之間可以使用/、-和.分隔。l datetime的值四舍五入為3ms,smalldatetime的值四舍五入為1min。l 對于沒有時間的數(shù)據(jù),默認(rèn)時間為00:00:00;對于沒有日期的時間值,默認(rèn)日期為1900年1月1日(不論datetime還是smalldatetim

18、e),但沒有日期的時間毫無意義。l 所有小于50的年份被認(rèn)為是21世紀(jì),=50的兩位年份被認(rèn)為是20世紀(jì)。最好寫4位數(shù)。例1:演示多種日期的輸入格式,并顯示其結(jié)果set dateformat mdycreate table date_ex(pid int not null ,date_field datetime)insert date_ex values(101,2003-8-30) insert date_ex values(102,2003/8/30)insert date_ex values(103,2003.8.30)insert date_ex values(1033,8.30.2

19、003)insert date_ex values(10333,8.2003.30)-當(dāng)4位年份寫全時,不受mdy限制,此時可等價使用mdy、myd、ymdinsert date_ex values(104,2003-8-30 20:30:21)insert date_ex values(105,2003-8-30 20:30:21.765)insert date_ex values(106,20:30:21)insert date_ex values(107,8-30-48) -因日期格式為mdyinsert date_ex values(108,8-30-56 20:30:21)selec

20、t * from date_ex例2:根據(jù)日期(不含時間)進(jìn)行查詢。當(dāng)日期字符串中不含時間時,默認(rèn)時間為00:00:00。例3:根據(jù)日期(含時間)進(jìn)行查詢。例4:根據(jù)時間(不含日期)進(jìn)行查詢。當(dāng)日期中不含有年月日信息時,默認(rèn)為1900年1月1日。例5:表示某一天的日期數(shù)據(jù):date_field=2003-4-9 and date_field ,=,=,=,!=,!比較運(yùn)算符的運(yùn)算結(jié)果為布爾值。4連接運(yùn)算符(+)+ 用于將兩個字符串連接合并成一個字符串。操作數(shù)類型為:char、varchar、nchar、nvarchar(不用于text、ntext)。5邏輯運(yùn)算符 all、any、between

21、、exists、in、like、not、and、or.。6運(yùn)算符的優(yōu)先級高低括號運(yùn)算符()求反、+(正號)、-(負(fù)號)* 、/、 %+ 、-、 +(連接)、&比較運(yùn)算符異或、|notandor、all、any、between、in、like二、transact-sql變量sql標(biāo)識符:標(biāo)識符用于表示服務(wù)器名、數(shù)據(jù)庫名、數(shù)據(jù)庫對象名、常量、變量和存儲過程名等。標(biāo)識符的命名規(guī)則:n 標(biāo)識符的長度范圍為130個字符。不區(qū)分大小寫。n 標(biāo)識符的第一個字符必須為字母、下劃線、或#。以為首的標(biāo)識符表示一個局部變量;以一個#為首的標(biāo)識符表示一個局部臨時對象;兩個#表示全局臨時對象。n 標(biāo)識符第一個字符后面可

22、以是字母、數(shù)字、#、$或_。n 不區(qū)分大小寫。n 默認(rèn)情況下,標(biāo)識符中不允許出現(xiàn)空格;不允許用關(guān)鍵字作標(biāo)識符;可以以引號來定義特殊標(biāo)識符(此時可包含空格、關(guān)鍵字等)。n 在中文版中,漢字也可以作為標(biāo)識符。例:cat、cat、xyz、_small、from、#proc、#func、x_sum、”select”、 ”a ss”、x#yz等均合法。而from、from、select等不合法。 變量在使用之前必須定義(即說明數(shù)據(jù)類型)。變量分為:局部變量、全局變量(由系統(tǒng)定義和維護(hù))。1局部變量l 在使用之前以declare語句定義(不能同時賦值)。l 局部變量的生存期:生存于聲明所在的批處理、存儲過

23、程或觸發(fā)器中,生存期結(jié)束后,變量消失。l 可以通過print或select語句(效果不同;print一次只能顯示一個值)將變量的值顯示給用戶,存儲過程能夠返回變量的值。注意:使用declare語句時:必須提供變量名和數(shù)據(jù)類型;變量前必須有一個符號;同時定義多個變量時中間用逗號分隔。2局部變量的賦值(通過set、select、update進(jìn)行,但若想從表中提取數(shù)據(jù)則必須用select或update)select 變量名=表達(dá)式, from where或set 變量名=表達(dá)式 -一次只能給一個變量賦值例1:declare aaa char(9),bbb realselect aaa=姓名 from

24、 學(xué)生表 where 學(xué)號=200203001 -看不到顯示!set bbb=12.3456print aaa,bbb -此句應(yīng)成2個print書寫,因print后只能跟一個變量。select xm =aaa,bbbselect aaa as xm,bbbselect aaa xm,bbbn 當(dāng)變量未賦值時,其值為null。n 使用select由表對變量賦值時,變量的值由表中最后一行確定。例2:將學(xué)生表中字段的值賦值到變量中并顯示。declare aaa char(9)select aaa=姓名 from 學(xué)生表 -注意返回的只是最后一條記錄的值。select aaan 可以通過表的主鍵或統(tǒng)計

25、函數(shù)唯一確定變量的值。declare aaa intselect aaa=max(年齡) from 學(xué)生表 -select aaan 變量可應(yīng)用在select中。declare aaa varchar(3)set aaa=李%select * from 學(xué)生表 where 姓名 like aaan 給變量賦值不能與數(shù)據(jù)檢索結(jié)合在同一條select中使用。declare aaa char(9)select aaa=姓名,學(xué)號 from 學(xué)生表 3利用update為局部變量賦值例1:declare x int,y intupdate 學(xué)生表set x=5,y=4select x,y例2:selec

26、t * from學(xué)生表 declare x intupdate 學(xué)生表set x=年齡 -哪一個記錄的?select x例3:declare x intupdate 學(xué)生表set x=(select avg(年齡) from 學(xué)生表)select x例4:錯誤。因?yàn)閟elect子句返回了多個值。declare x intupdate 學(xué)生表set x=(select 年齡 from 學(xué)生表)select x4全局變量全局變量用于跟蹤服務(wù)器范圍內(nèi)和特定會話期間的信息,不能顯式被聲明或賦值。l 全局變量不能由程序員定義l 全局變量提供了用戶當(dāng)前的會話信息l 全局變量是不可賦值的,且在所有程序中都可

27、直接使用l 在某時刻,各用戶的值是各不相同的l全局變量含義rowcount前一條sql語句處理的記錄條數(shù)error前一條sql語句執(zhí)行后的錯誤號trancount當(dāng)前連接的活動事務(wù)數(shù)transtate當(dāng)前事務(wù)的狀態(tài)tranchained當(dāng)前事務(wù)的模式servername本地服務(wù)器的名稱version服務(wù)器和操作系統(tǒng)的版本信息spid當(dāng)前進(jìn)程的ididentity上次操作中使用的identity值fetch_status存儲上一條fetch next語句的狀態(tài)nestlevel當(dāng)前存儲過程、觸發(fā)器中的嵌套層次(1)rowcount除了declare外,其它任何語句都可以自動改變rowcount的

28、值。因此,如果需要重復(fù)使用該變量的值,則需要另外定義局部變量來保存它的值。如:select * from 學(xué)生表declare x intselect x=rowcountselect rowcount as rowwcount1,x-結(jié)果:1,7select * from 學(xué)生表 where 性別=女select rowcount rowcount1,x -結(jié)果:4,7n 當(dāng)程序從觸發(fā)器中退出運(yùn)行時,rowcount被恢復(fù)成進(jìn)入觸發(fā)器之前的值。n 任何不返回行的語句將rowcount設(shè)置為0,如print語句:if 2=2 print 2 -若將print改為select、set則不同!if

29、 rowcount=0print rowcount is 0。再如:例1: update 成績表set 成績=成績+10where 課程號=c888if rowcount=0print did not modify故,可通過上述方法來判斷是否存在滿足條件的記錄。(2)error在每一條語句執(zhí)行完畢后,應(yīng)該通過error來檢查語句是否存在錯誤。當(dāng)error為非0值時,表示語句執(zhí)行時產(chǎn)生了錯誤。error的值會隨著每一條sql語句的運(yùn)行發(fā)生變化。select * from 學(xué)生表select error(3)spid:當(dāng)前進(jìn)程和服務(wù)器進(jìn)程標(biāo)識符。如:select spid,system_user

30、登錄用戶,user 用戶名 (4)identity:最后插入的標(biāo)識值。如:create table 標(biāo)識表(aa int identity , 姓名 char(9)insert 標(biāo)識表(姓名) values(aaa)select identityinsert 標(biāo)識表(姓名) values(bbb)select identityselect * from 標(biāo)識表(5)* fetch_status游標(biāo):相當(dāng)于指針,用于對表中的記錄一條一條地操作(用fetch next語句)。fetch_status表示fetch語句執(zhí)行后游標(biāo)的狀態(tài)。值有0fetch語句成功,-1fetch語句不成功,-2所取數(shù)據(jù)

31、的行沒有找到。四、函數(shù)(p103)可使用戶根據(jù)其返回的信息進(jìn)行相關(guān)操作,它們可用于select語句的select子句、where子句、group by子句、表達(dá)式中。內(nèi)建函數(shù)可分類為(8類):l 系統(tǒng)函數(shù):用于返回與sql server系統(tǒng)、數(shù)據(jù)庫、數(shù)據(jù)庫對象、用戶有關(guān)的信息l 日期函數(shù):用來操作datetime、smalldatetime類型的數(shù)據(jù)l 字符串函數(shù):用來操作二進(jìn)制、字符串?dāng)?shù)據(jù)。l 數(shù)學(xué)函數(shù)l 類型轉(zhuǎn)換函數(shù)l 文本和圖象函數(shù):用于對文本、圖象類型的數(shù)據(jù)進(jìn)行操作。l 合計函數(shù):avg、count、max、min、sum等。l 游標(biāo)函數(shù):對用戶查詢的結(jié)果進(jìn)行逐行處理:cursor_r

32、ows、cursor_status、fetch_status。以下只講部分內(nèi)容。(一)系統(tǒng)函數(shù):用于返回與sql server系統(tǒng)、數(shù)據(jù)庫、數(shù)據(jù)庫對象、用戶有關(guān)的信息1app_name()應(yīng)用程序的名稱,返回值類型為nvarchar。例1:print app_name() - sql 查詢分析器2coalesce()多分支函數(shù),返回多個表達(dá)式中第一個非null值的表達(dá)式的值(如果所有表達(dá)式的值均為null,則函數(shù)返回null值或出錯)。coalesce (,表達(dá)式n) (coalesec:合并、結(jié)合、組合) 例1:declare x char(2),y char(4)select x=22,y

33、=a1print coalesce(x,y)例2*:要求所有表達(dá)式值的類型一致(雖然有些情況下可自動轉(zhuǎn)換)。declare x int,y char(4)select y=a1print coalesce(x,y)3col_length()求字段的長度(占用字節(jié)數(shù)),函數(shù)返回值類型為int。col_length (,)例1:print col_length(學(xué)生表,入學(xué)年份)例2:create table cbf(c1 varchar(40) , c2 nvarchar(40) )select col_length(cbf,c1),col_length(cbf,c2) -40,804col_n

34、ame()求字段的名稱col_name (,)例1:declare x intset x=1while x6beginprint col_name(object_id(學(xué)生表),x)set x=x+1end例2*:select col_name(object_id(學(xué)生表),ordinal_position)from information_schema.columnswhere table_name=學(xué)生表例3*:select column_name from information_schema.columns5datalength()求數(shù)據(jù)的實(shí)際長度,函數(shù)返回值類型為int ,null值

35、的長度為null例1:print datalength(abcdefg)select 姓名,datalength(住址) 住址長度 from 學(xué)生表6db_id()求數(shù)據(jù)庫的編號,函數(shù)返回值類型為smallint。如果沒有指定數(shù)據(jù)庫名,則返回當(dāng)前數(shù)據(jù)庫的編號。db_id (數(shù)據(jù)庫名)例1:print db_id(學(xué)生課程數(shù)據(jù)庫)print db_id()例2*:use masterselect name,db_id(name) ,dbidfrom sysdatabases7db_name()求數(shù)據(jù)庫的名稱,函數(shù)返回值類型為nvarchar。如果沒有指定數(shù)據(jù)庫的編號,則返回當(dāng)前數(shù)據(jù)庫的名稱。db

36、_name (database_id)例1:print db_name(db_id(學(xué)生課程數(shù)據(jù)庫)print db_name()例2*:use masterselect dbid,db_name(dbid)from sysdatabasesorder by dbid8host_id()求服務(wù)器端計算機(jī)標(biāo)識號,函數(shù)返回值類型為nchar。host_id ()例:print host_id()9host_name()返回服務(wù)器計算機(jī)的名稱,函數(shù)返回值類型為char(8)。host_name ()例:print host_name()10identity()向新表中插入identity字段,只用于

37、selectinto語句中,函數(shù)返回值類型與data_type類型相同。identity (, seed, increment ) as column_namedata_type可以是整型的分類或decimal類型。例1:select 學(xué)號 as num,姓名 as xm,identity(int,1,1) as bhinto cbf1from 學(xué)生表select * from cbf1例2*:select 學(xué)號 as num,姓名 as xm,bh=identity(int,1,1)into cbf2from 學(xué)生表11isdate()判斷是否為有效的日期,如果是則返回1,否則返回0。isdate (表達(dá)式)例1:print isdate(2003/3/3)print isdate(2003-3/3)print isdate(2003=3/3)12isnull()用確定值替換空值(

溫馨提示

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

評論

0/150

提交評論