




已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)驗(yàn)4 T-SQL語(yǔ)言實(shí)驗(yàn)?zāi)康模?、 掌握Transact-SQL語(yǔ)言中的變量、運(yùn)算符、函數(shù);2、 掌握Transact-SQL語(yǔ)句編寫批處理和流程控制程序。3、 掌握游標(biāo)的創(chuàng)建,打開,數(shù)據(jù)讀取,關(guān)閉,銷毀的基本方法實(shí)驗(yàn)內(nèi)容和步驟:Transact-SQL語(yǔ)言是在SQL Server 2005 中使用的程序設(shè)計(jì)語(yǔ)言。不但包含了標(biāo)準(zhǔn)SQL語(yǔ)言部分,而且為了滿足實(shí)際應(yīng)用中的編程需要,在Transact-SQL語(yǔ)言中還另外增加了一些語(yǔ)言要素,它們包括注釋、變量、運(yùn)算符、函數(shù)和流程控制語(yǔ)句等。所有的語(yǔ)句都在查詢分析器中執(zhí)行。1. Transact-SQL語(yǔ)句實(shí)驗(yàn)內(nèi)容1: 返回在程序執(zhí)行過程中上一條SQL語(yǔ)句影響的記錄數(shù)(全局變量ROWCOUNT),注意觀察結(jié)果窗口。use teach-打開teach 數(shù)據(jù)庫(kù)GO-查詢學(xué)生表中的記錄SELECT * FROM Student-查詢上一條SELECT語(yǔ)句影響的記錄數(shù)SELECT ROWCOUNT AS 第一次查詢返回的記錄數(shù)GO實(shí)驗(yàn)內(nèi)容2: 查詢學(xué)生表的人數(shù),將返回的記錄數(shù)賦給局部變量RowsUSE teachGODECLARE Rows int-聲明局部變量-給局部變量賦值SET Rows=(SELECT COUNT(*) FROM Student)-顯示局部變量的值SELECT Rows AS SELECT返回的記錄數(shù)GO實(shí)驗(yàn)內(nèi)容3: 設(shè)置一個(gè)局部變量為表,進(jìn)行插入和查詢操作- 定義變量為臨時(shí)表DECLARE Table_Example TABLE (Col_num int PRIMARY KEY, Col_text char (50)- 向該變量中添加兩行內(nèi)容INSERT INTO Table_Example VALUES (1, this is a)INSERT INTO Table_Example VALUES (2, table data type example)- 從臨時(shí)表中查詢SELECT * FROM Table_ExampleGO實(shí)驗(yàn)內(nèi)容4:(練習(xí),自己試著寫一下)設(shè)置一個(gè)局部變量其值為選修了課程的人數(shù),并顯示提示: DECLARE Rows int-聲明局部變量-給局部變量賦值SET Rows=(SELECT COUNT(distinct sno) FROM SC )-顯示局部變量的值SELECT Rows AS 選課人數(shù)GO實(shí)驗(yàn)內(nèi)容5:檢查sysdatabases中的每一個(gè)數(shù)據(jù)庫(kù),使用數(shù)據(jù)庫(kù)標(biāo)識(shí)號(hào)來確定數(shù)據(jù)庫(kù)名稱。USE master-打開master 數(shù)據(jù)庫(kù)GO-DB_NAME 是一個(gè)函數(shù),功能是根據(jù)數(shù)據(jù)庫(kù)標(biāo)識(shí)號(hào),來返回?cái)?shù)據(jù)庫(kù)的名稱SELECT dbid , DB_NAME(dbid) AS DB_NAMEFROM sysdatabases ORDER BY dbidGO實(shí)驗(yàn)內(nèi)容6:從數(shù)據(jù)庫(kù)中返回學(xué)生表的第2列的名稱USE teachGO-定義局部變量,用于存放學(xué)生表的ID號(hào)DECLARE 學(xué)生表ID INT-OBJECT_ID是一個(gè)函數(shù),功能是返回?cái)?shù)據(jù)庫(kù)對(duì)象的編號(hào)SET 學(xué)生表ID= OBJECT_ID(Student)-COL_NAME是一個(gè)函數(shù), 返回指定表中指定字段的名稱,即列名SELECT COL_NAME(學(xué)生表ID,2) AS 學(xué)生表中第2列的名稱GO實(shí)驗(yàn)內(nèi)容7:簡(jiǎn)單年、月、日函數(shù)SELECT MONTH(03/12/1998), DAY(03/12/1998),YEAR(03/12/1998)實(shí)驗(yàn)內(nèi)容8:從系統(tǒng)當(dāng)前日期中返回系統(tǒng)當(dāng)前的年份數(shù)、月份數(shù)和天數(shù)。- GETDATE()函數(shù)返回系統(tǒng)當(dāng)前日期SELECT YEAR(GETDATE() AS 當(dāng)前年份, MONTH(GETDATE() AS 當(dāng)前月份, DAY(GETDATE() AS 當(dāng)前天數(shù)GO實(shí)驗(yàn)內(nèi)容9:自己編寫函數(shù)。編寫一個(gè)函數(shù),名稱為“函數(shù)_學(xué)生選課數(shù)”,要求根據(jù)輸入的學(xué)生學(xué)號(hào),求此學(xué)生的選課數(shù)。USE teachGO-通過CREATE FUNCTION語(yǔ)句創(chuàng)建用戶的自定義函數(shù)“函數(shù)_學(xué)生選課數(shù)”CREATE FUNCTION 函數(shù)_學(xué)生選課數(shù)(xuehao AS char(9) -函數(shù)的輸入?yún)?shù))RETURNS int -返回結(jié)果類型BEGIN -函數(shù)體 DECLARE 選課數(shù) AS int SELECT 選課數(shù) =COUNT(cno) FROM SC WHERE Sno=xuehao RETURN 選課數(shù)ENDGO-使用自定義函數(shù),求選課表(SC)中每位學(xué)生的選課數(shù)SELECT DISTINCT Student.Sno,Sname,選課數(shù)=dbo. 函數(shù)_學(xué)生選課數(shù)(SC.Sno)FROM Student,SCWHERE Student .Sno=SC.SnoGO實(shí)驗(yàn)內(nèi)容10: (練習(xí),自己試著寫一下)練習(xí)自定義函數(shù),求每門課程的選課人數(shù)提示:USE teachGOCREATE FUNCTION 函數(shù)_選課人數(shù)(cno AS char(9) )RETURNS int BEGIN DECLARE 選課人數(shù) AS int SELECT 選課人數(shù) =COUNT(sno) FROM SC WHERE cno=cno RETURN 選課人數(shù)ENDGO-使用自定義函數(shù),查詢每門課的選課人數(shù)(注:沒有人選的課程,不會(huì)出現(xiàn))SELECT DISTINCT Course.Cno ,Cname ,選課人數(shù)=dbo. 函數(shù)_選課人數(shù)(SC.Cno)FROM Course,SCWHERE Co=SC.Cno GO-使用自定義函數(shù),通過左外連接,保留了左邊被舍棄的元組SELECT DISTINCT Course.Cno ,Cname ,選課人數(shù)=dbo. 函數(shù)_選課人數(shù)(SC.Cno)FROM Course left join SC on Co=SC.Cno GO2. 游標(biāo)的創(chuàng)建和使用游標(biāo)(Cursor)是處理數(shù)據(jù)的一種方法,為了查看或者處理結(jié)果集中的數(shù)據(jù),游標(biāo)提供了在結(jié)果集中一次以行或者多行前進(jìn)或向后瀏覽數(shù)據(jù)的能力。我們可以把游標(biāo)當(dāng)作一個(gè)指針,它可以指定結(jié)果中的任何位置,然后允許用戶對(duì)指定位置的數(shù)據(jù)進(jìn)行處理。T-SQL游標(biāo):該游標(biāo)是基于Declare Cursor 語(yǔ)法,主要用于Transaction-SQL腳本、存儲(chǔ)過程以及觸發(fā)器中。Transaction-SQL游標(biāo)在服務(wù)器處理由客戶端發(fā)送到服務(wù)器的Transaction-SQL語(yǔ)句。使用游標(biāo)要遵循以下順序:聲明游標(biāo)打開游標(biāo)讀取數(shù)據(jù)關(guān)閉游標(biāo)刪除游標(biāo)。1聲明游標(biāo)實(shí)驗(yàn)內(nèi)容1:以下是一個(gè)符合SQL-92標(biāo)準(zhǔn)的游標(biāo)聲明,此游標(biāo)是只讀的,只能從頭到尾順序提取數(shù)據(jù)。 DECLARE S_CUR1 CURSOR FOR SELECT * FROM STUDENT FOR READ ONLY實(shí)驗(yàn)內(nèi)容2:以下是一個(gè)符合T-SQL擴(kuò)展的游標(biāo)聲明,此游標(biāo)是動(dòng)態(tài)游標(biāo),可前后滾動(dòng),可對(duì)姓名列進(jìn)行修改。 DECLARE S_CUR2 CURSOR SCROLL DYNAMIC FOR SELECT * FROM STUDENTFOR UPDATE OF SName2. 打開游標(biāo)聲明游標(biāo)之后,要使用游標(biāo)提取數(shù)據(jù),必須先打開游標(biāo)。使用OPEN語(yǔ)句可以打開游標(biāo)。打開游標(biāo)后,可以使用全局變量CURSOR_ROWS查看游標(biāo)中數(shù)據(jù)行的數(shù)目。實(shí)驗(yàn)內(nèi)容3:打開游標(biāo)S_CUR1,輸出其行數(shù) OPEN S_CUR1 SELECT 游標(biāo)s_cur1的數(shù)據(jù)行數(shù)=CURSOR_ROWS注意:通過聯(lián)機(jī)叢書來查詢CURSOR_ROWS,來理解其值的含義3讀取數(shù)據(jù)游標(biāo)打開后,就可以使用FETCH命令從中讀取數(shù)據(jù)。具體語(yǔ)句格式見聯(lián)機(jī)叢書。實(shí)驗(yàn)內(nèi)容4:從游標(biāo)S_CUR1中提取數(shù)據(jù),只能用NEXT提取數(shù)據(jù)。 FETCH NEXT FROM S_CUR1提示:選中該語(yǔ)句,點(diǎn)擊執(zhí)行,查看結(jié)果。再點(diǎn)擊執(zhí)行,查看結(jié)果。重復(fù)執(zhí)行。實(shí)驗(yàn)內(nèi)容5:從游標(biāo)S_CUR2中提取數(shù)據(jù):OPEN S_CUR2-讀取游標(biāo)第一行FETCH FIRST FROM S_CUR2-讀取下一行FETCH NEXT FROM S_CUR2-讀取上一行FETCH PRIOR FROM S_CUR2-讀取最后一行FETCH LAST FROM S_CUR2-讀取當(dāng)前行的上二行FETCH RELATIVE-2 FROM S_CUR24關(guān)閉游標(biāo)游標(biāo)使用完后,要及時(shí)關(guān)閉游標(biāo),以釋放當(dāng)前的結(jié)果集并解除定位在該游標(biāo)記錄行上的游標(biāo)鎖定。實(shí)驗(yàn)內(nèi)容6:關(guān)閉游標(biāo)S_CUR1CLOSE S_CUR15刪除游標(biāo)關(guān)閉一個(gè)游標(biāo)后,其數(shù)據(jù)結(jié)構(gòu)仍存儲(chǔ)在系統(tǒng)中,需要的時(shí)候仍然可以再次使用OPEN語(yǔ)句打開和使用該游標(biāo)。如果確定以后不再使用該游標(biāo),則可以刪除游標(biāo),將游標(biāo)占用的系統(tǒng)空間釋放出來。實(shí)驗(yàn)內(nèi)容7:刪除游標(biāo)S_CUR1DEALLOCATE S_CUR13. 收獲體會(huì)此次實(shí)驗(yàn)與之前的幾次試驗(yàn)都大有所不同,此次實(shí)驗(yàn)的內(nèi)容主要是關(guān)于Transact-SQL語(yǔ)言中的變量、運(yùn)算符、函數(shù)以及游標(biāo)的相關(guān)操作。對(duì)于
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人借款合同民間借貸
- 有關(guān)房屋出售委托合同年
- 湖北房屋租賃合同
- 租賃房屋合同協(xié)議書
- 消防工程專業(yè)分包工程合同
- 建筑施工發(fā)包合同
- 電器售后服務(wù)合同書
- 事業(yè)單位聘用合同文本
- 產(chǎn)品購(gòu)銷合同的細(xì)節(jié)條款修訂書
- 重慶水利電力職業(yè)技術(shù)學(xué)院《建筑結(jié)構(gòu)抗震設(shè)計(jì)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- GN汽車吊吊裝專項(xiàng)安全方案講義
- 初中歷史-《開元盛世 》教學(xué)課件設(shè)計(jì)
- 中小學(xué)心理健康教育指導(dǎo)綱要(教育部2012年修訂)
- 教育:創(chuàng)造無限可能
- 風(fēng)電場(chǎng)工程強(qiáng)制性條文執(zhí)行計(jì)劃
- 茶葉的起源與發(fā)展
- 二年級(jí)下冊(cè)美術(shù)教案-第19課 剪窗花丨贛美版
- 人保理賠員試題車險(xiǎn)查勘定損
- 羅姓姓氏源流和遷徙分布
- 發(fā)展經(jīng)濟(jì)學(xué) 馬工程課件 1.第一章 發(fā)展中國(guó)家與發(fā)展經(jīng)濟(jì)學(xué)
- GB/T 25775-2010焊接材料供貨技術(shù)條件產(chǎn)品類型、尺寸、公差和標(biāo)志
評(píng)論
0/150
提交評(píng)論