




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數據庫系統原理實 驗 指 導 書 目 錄實驗1 SQL Server常用管理工具的使用1實驗2 數據庫的創建和管理3實驗3 表的創建和管理8實驗4 數據查詢11實驗5 視圖的創建和使用13實驗6 索引的創建和使用15實驗7 T-SQL語言17實驗8 存儲過程22實驗9 觸發器25實驗10 安全管理29實驗11 數據庫的備份與恢復32實驗12 SQL Server數據轉換35實驗1 SQL Server常用管理工具的使用實驗目的: 熟悉和掌握SQL Server的常用管理工具的使用:1、 服務管理器:理解服務的概念,掌握SQL Server服務的啟動、暫停和停止;2、 企業管理器:熟悉SQL S
2、erver數據庫結構,掌握企業管理器的基本操作;3、 查詢分析器:理解查詢分析器的作用,掌握查詢分析器的常用用法;4、 聯機叢書:掌握聯機叢書的用法。實驗內容與步驟:1. 服務管理器的用法SQL Server 是作為Windows 網絡操作系統的一個服務運行的。通過設置,可以在啟動操作系統時自動啟動SQL Server,也可以遠程啟動和停止SQL Server。可以使用下列工具手工啟動、暫停和停止SQL Server服務:l SQL Server企業管理器l SQL Server服務管理器l 控制面板中的“服務”l 在命令提示符中使用net命令SQL Server服務啟動成功后,會在屏幕右下角
3、的圖標中出現一個符號。實驗內容1:使用SQL Server服務管理器查看SQL Server服務是否正在運行,若正在運行,將其停止。實驗內容2:使用控制面板中的“管理工具”-“服務”管理控制臺將已停止的SQL Server服務啟動。提示:在“名稱”里選擇SQLSERVERAGENT,然后啟動2. 企業管理器的使用企業管理器是SQL Server提供的最主要的數據庫管理圖形界面工具,它以樹形結構來組織數據庫服務器、數據庫和數據庫中的對象,大部分的數據庫管理工作都可以使用它來完成。實驗內容3:啟動企業管理器,查看SQL Server的注冊屬性。提示:程序-Microsoft SQL Server-
4、企業管理器,在控制臺樹中,展開“Microsoft SQL Servers”,然后展開“SQL Server組”,右擊自己的服務器名或local,然后單擊“編輯SQL Server注冊屬性”,進行查看。實驗內容4:在企業管理器中,查看Northwind數據庫,并查看表Employee的內容。提示:在企業管理器的目錄樹中展開數據庫文件夾>Northwind數據庫圖標,選中Northwind下的表圖標,右邊將列出Northwind數據庫所有的表。選中Employee,單擊右鍵,選擇“打開此表”->“返回所有行”。3. 查詢分析器的使用查詢分析器是圖形化的數據庫編程接口,用戶可以以自由的
5、文本格式編輯、調試和執行SQL腳本。實驗內容5:在查詢分析器中,使用SQL語句查看pubs數據庫中authors表的數據信息。提示:1)首先,啟動查詢分析器,出現連接界面,在“SQL Server(s)”所對應的框中,輸入“.”,然后輸入密碼即可(上機時無密碼),然后確定。打開查詢分析器后,在查詢窗口中輸入如下的SQL語句:Use pubsGoSelect * from authors2)然后,單擊工具欄中的綠色的小三角(或按F5)執行查詢。即可查看結果。實驗內容6:通過對象瀏覽器查看數據庫對象提示:可通過單擊工具欄上的圖標,來打開和關閉對象瀏覽器。注意:在對數據庫進行相應的操作后, 對象瀏覽
6、器有時刷新較慢,需要關閉斷開,再連接。技巧:如果需要執行某語句時,可以選中該語句,然后在執行該語句即可。4. 聯機叢書的使用聯機叢書中包含所有SQL Server2000的使用說明。在本課程的學習中,各位同學應該掌握聯機叢書的使用。實驗內容:7:打開聯機叢書,在目錄中展開“安裝SQL Server”,查看有關SQL Server 2000 的硬件和軟件安裝要求。實驗內容8:打開聯機叢書,在“索引”中查找有關sp_help存儲過程的幫助信息。實驗思考可以在一臺計算機中注冊多個命名實例和服務器,現在若需要將18號機器的SQL Server服務注冊到本地企業管理器中來,應該怎么做?實驗2 數據庫的創
7、建和管理實驗目的:1、 熟悉使用向導創建SQL Server數據庫的方法;2、 掌握使用企業管理器創建SQL Server數據庫的方法;3、 掌握使用T-SQL語言創建SQL Server數據庫的方法;4、 掌握附加和分離數據庫的方法;5、 掌握使用企業管理器或存儲過程查看SQL數據庫屬性的方法;6、 熟悉數據庫的收縮、更名和刪除;7、 掌握使用企業管理器或sp_dboption存儲過程修改數據庫選項的方法。實驗內容和步驟: 本次實驗所創建數據庫(包括數據庫文件和事務日志)存放位置都為“D:TestDB”。因此首先在D盤下新建文件夾TestDB。1. 數據庫的創建創建數據庫的過程實際上就是為數
8、據庫設計名稱、設計所占用的存儲空間和文件存放位置的過程。1.1 使用向導創建數據庫實驗步驟:1)打開企業管理器,把左邊的對象展開,選中(local) ,從“工具”菜單中選擇“向導”選項2)從“選擇向導”對話框中,展開“數據庫”,選中“創建數據庫向導”命令,按照提示一步一步完成數據庫的創建。實驗內容1:創建一個名為Test0的數據庫,數據文件的初始大小設為20MB,文件增長方式設為自動增長,文件增長增量設為5MB,文件的增長不設上限;日志文件的初始大小為20MB,文件增長增量設為1MB,文件的增長限制設為100MB。不許創建維護計劃。創建完后打開D盤的文件夾TestDB,來查看我們所建物理文件。
9、同時通過企業管理器來查看我們所見的數據庫,新建數據庫中的表只包括系統表。1.2 用企業管理器創建數據庫實驗步驟:1)在企業管理器中,在數據庫文件夾或其下屬任一數據庫圖標上右擊,從彈出的快捷菜單中選擇“新建數據庫”命令,出現“數據庫屬性”的對話框。2)在“常規”選項卡中,輸入數據庫名稱3)在“數據文件”選項卡,輸入數據庫文件的名稱、位置(單擊圖標 來選擇存儲位置)、初始容量大小和所屬文件組名稱。4)在“事務日志”選項卡,用來設置事務日志文件信息。實驗內容2:使用SQL Server企業管理器創建一個數據庫,具體要求如下:(大家有疑問)1)數據庫名稱為Test1。2)主要數據文件:邏輯文件名為Te
10、st1_Data1,物理文件名為Test1_Data1.mdf,初始容量為1MB,最大容量為10MB,遞增量為1MB。3)次要數據文件:邏輯文件名為Test1_Data2,物理文件名為Test1_Data2.ndf,初始容量為1MB,最大容量為10MB,遞增量為1MB。4)事務日志文件:邏輯文件名為Test1_Log,物理文件名為Test1_Log.ldf,初始容量為1MB,大容量為5MB,遞增量為1MB。 其他選項為默認值。1.3 用Transact-SQL(T-SQL)語句創建數據庫實驗步驟:啟動“查詢分析器”,在編輯窗口輸入SQL語句。實驗內容3:用T-SQL語句創建一個名為teach的
11、數據庫,它由5MB的主數據文件、2MB的次數據文件和1MB的日志文件組成。并且主數據文件以2MB的增長速度增長,其最大容量為15MB;次數據文件以10%的增長速度增長,其最大容量為10MB;事務日志文件以1MB增長速度增長,其最大日志文件大小為10MB。運行完語句后,仔細查看結果框中的消息。提示:在查詢分析器中輸入如下SQL語句。CREATE DATABASE teachOn(name= teach_data1,filename= 'd:TestDBteach_data1.mdf ',size=5,maxsize=15,filegrowth=2),( name= teach_d
12、ata2,filename= 'd:TestDBteach_data2.ndf ',size=5,maxsize=10,filegrowth=10%)log on( name=teach_log,filename= 'd:TestDBteach_log.ldf ',size=1,maxsize=10,filegrowth=1)2 數據庫的管理2.1 數據庫的分離與附加將teach數據庫與服務器分離。可以使用企業管理器或SQL語言對數據庫進行分離的操作。分離數據庫的存儲過程是sp_detach_db。將已分離的“圖書”數據庫附加到服務器上。可以使用企業管理器或SQ
13、L語言對數據庫進行附加的操作。附加數據庫的存儲過程是sp_attach_db。實驗內容4: 分離數據庫teach提示:sp_detach_db teach語句執行成功后,打開企業管理器,查看是否存在該數據庫對象。若出現“無法分離 數據庫 'teach',因為它當前正在使用。”問題,應把企業管理器關閉。實驗內容5: 附加數據庫提示:sp_attach_db teach,'d:TestDBteach_data1.mdf '語句執行成功后,打開企業管理器,查看是否存在該數據庫對象。2.2 查看和修改數據庫屬性數據庫創建以后,可以使用企業管理器或SQL語言來查看或修改數
14、據庫的屬性。使用企業管理器的方法是右擊數據庫名稱,在快捷菜單中選擇“屬性”,然后數據庫屬性對話框中就可以查看或修改數據庫的屬性。也可以使用sp_helpdb、sp_spaceused、sp_helpfile和sp_helpfilegroup等存儲過程查看和數據庫有關的屬性。修改數據庫屬性可以使用ALTER DATABASE命令。實驗內容6:使用sp_ helpdb存儲過程查看teach數據庫的信息,然后企業管理器將teach數據庫的事務日志文件的增長大小改為按2MB字節增長,再使用sp_ helpdb存儲過程查看student數據庫的信息。提示:在查詢分析器中輸入如下SQL語句:sp_help
15、db teach實驗內容7:使用ALTER DATABASE命令為teach數據庫添加一個新的數據文件,文件邏輯名為teach3,初始大小為2MB,增長值為1MB,其他屬性默認。 提示:在查詢分析器中輸入如下SQL語句:ALTER DATABASE teachADD FILE( name= teach_data3,filename= 'd:TestDBteach_data3.ndf ',size=2,filegrowth=1)2.3 數據庫的收縮數據庫收縮可以縮小數據庫的空閑空間。可以使用企業管理器或SQL語言對數據庫進行收縮工作。收縮數據庫使用的SQL語句是DBCC SHRI
16、NKDATABASE命令。也可以使用ALTER DATABASE的SET子句或sp_dboption將數據庫設為自動收縮。實驗內容8:將teach數據庫設為自動收縮。提示:1)使用企業管理器。打開企業管理器選擇要收縮的數據庫屬性選項自動收縮(給服務器性能帶來額外負擔) 2) 使用SQL語句。 DBCC SHRINKDATABASE(teach) 其他:DBCC SHRINKDATABASE (UserDB,10)-把數據庫UserDB收縮到90DBCC SHRINKDATABASE (DataFile1,7) -把數據文件DataFile1收縮到7M2.4 數據庫的更名使用系統存儲過程sp_r
17、enamedb更改數據庫的名稱。在重命名之前,應確保沒有用戶使用該數據庫。實驗內容9:將teach數據庫改名為teaching。提示:在查詢分析器中輸入如下SQL語句: sp_renamedb teach,teaching2.5數據庫選項的配置可以使用 ALTER DATABASE 語句的 SET 子句、sp_dboption 系統存儲過程,或者在某些情況下使用 SQL Server 企業管理器設置數據庫選項。實驗內容10:使用企業管理器將teaching數據庫設為只讀。 提示:打開企業管理器,選中teaching,單擊右鍵,選中“屬性”,單擊“選項”,選中“只讀”,確定。實驗內容11:使用s
18、p_dboption存儲過程取消teaching數據庫的只讀設置。提示:sp_dboption 'teaching', 'read only', 'FALSE'2.6 數據庫的刪除可以使用企業管理器刪除數據庫。在企業管理器中,右擊所要刪除的數據庫,從彈出的快捷菜單中選擇“刪除”命令或直接按下鍵盤上Delete按鈕即可刪除數據庫。可以使用DROP語句刪除數據庫。注意:對正在使用的數據庫不能被刪除。實驗內容12:使用DROP DATABASE命令將teaching數據庫刪除。提示:DROP DATABASE teaching實驗思考:1. 一個數據庫
19、中包含哪幾種文件?2. 事務日志文件的大小一般為數據文件大小的多少合適?3. 若需修改數據庫文件的大小,可以使用的方法有哪些?若要求使用T-SQL語言,則命令應如何編寫?4.能不能刪除master數據庫?若一個用戶數據庫當前正在被訪問,能不能被刪除?實驗3 表的創建和管理實驗目的:1、 掌握使用企業管理器和T-SQL語句創建表;2、 掌握使用企業管理器和T-SQL語句修改表的結構;3、 掌握使用企業管理器和T-SQL語句實現對數據的操作;4、 理解數據完整性的概念和SQL Server實現數據完整性的機制;5、 掌握使用企業管理器和T-SQL語句定義數據完整性,重點掌握主鍵、外鍵、檢查、唯一和
20、默認值等約束的定義和使用。實驗內容和步驟: 1 在企業管理器中創建和管理數據表通過企業管理器可以做一下的操作:1)創建數據表 在企業管理中,打開想要創建新表的數據庫,右擊“表”對象,或者在窗口右側中的表顯示窗口中右擊,從彈出的快捷菜單中選擇“新建表”命令,會出現新建表對話框。在對話框中,定義列,及其屬性。然后保存此表。2)修改數據庫結構 右擊要修改的數據表,從彈出的快捷菜單中選擇“設計表”命令,出現“設計表”窗口,可以完成增加、刪除和修改字段的操作。3)管理數據表中記錄右擊要錄入數據的數據表,從彈出的快捷菜單中選擇“打開表”命令。4)刪除數據表右擊要刪除的數據表,從彈出的快捷菜單中選擇“刪除”
21、命令。2 使用Transact-SQL語言創建和管理數據表實驗內容:首先創建數據庫teach(創建方法見實驗2),然后在該數據庫下創建如下三個表:1.使用企業管理器按下表結構創建表表名:Course屬性名稱屬性描述數據類型字節數空否備注Cno課程號char4否主鍵,標識列CName課程名稱varchar20否Cpno先行課char4外碼Credit學分smallint2提示:1)首先輸入所有屬性列 2)選中cno屬性列,單擊右鍵,選擇“設置主鍵” 設為主鍵 3)單擊右鍵選擇“關系”,單擊“新建”,來添加Cpno為外碼 。具體:右擊“關系”->單擊“新建”->首先選擇外鍵表,然后選擇
22、定義為外碼的屬性;再選擇主鍵表,再選擇所參照的主碼 4) 單擊工具欄中的“保存”圖片 5)輸入數據表的名字2.使用T-SQL語句按下表結構創建表表名:Student屬性名稱屬性描述數據類型字節數空否備注Sno學號char9否主鍵SName姓名varchar8否Ssex性別char2默認值為男,只能輸入男和女Sage年齡smallintSdept所在系 char20表名:SC屬性名稱屬性描述數據類型字節數空否備注Sno學號char9否主鍵,外碼Cno課程號char4否主鍵,外碼Grade成績smallint0-100提示:use teach-打開數據庫create table Student(
23、Sno CHAR(9) PRIMARY KEY, Sname VARCHAR(20) NOT NULL, Ssex CHAR(2) default '男', Sage SMALLINT, Sdept CHAR(20), check (Ssex='男')or(Ssex='女')GoCREATE table SC( Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY(Sno,Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY
24、(Cno) REFERENCES Course(Cno) , check (Grade<=100)and (Grade>=0)GO3.使用T-SQL語句實現對數據的操作(1)使用INSERT語句向表中添加記錄(2)使用UPDATE語句對表中數據進行修改(3)使用DELETE語句對表中數據將刪除。實驗4 數據查詢實驗目的:1、 掌握查詢語句SELECT的語法;2、 掌握SELECT語句相關子句(FROM,WHERE,GROUP BY,ORDER BY等)的使用;3、 掌握使用SELECT語句進行簡單查詢、連接查詢、嵌套查詢。實驗內容:完成簡單查詢操作。該實驗包括投影、選擇條件表達,數
25、據排序,使用臨時表等;完成連接查詢、嵌套查詢、組合查詢和統計查詢等操作。首先完成數據庫和表的創建(具體代碼,見“建庫.sql”,可用文本編輯器打開)。具體操作:首先在D盤下新建文件夾TestDB,打開“查詢分析器”->點擊工具欄中的圖標->找到“建庫.sql”,打開 ->執行。即可得到實驗所需數據庫和數據。1單表查詢1) 查詢每個學生的所有數據。2) 查詢全體學生的學號、姓名、所在系。3) 查詢所有年齡在20歲以下的學生姓名及年齡。4) 查詢年齡在2025歲(包括20,25)之間的學生的姓名、系別和年齡。5) 查詢在信息系和數學系學習的學生的姓名和性別。6) 查詢所有姓李的學
26、生的姓名、學號和性別。7) 查詢選修了0003號課程的學生的學號及其成績,查詢結果按分數的降序排序。8) 查詢全體學生的情況,結果按所在系的升序排序,同一系的按年齡的降序排序。9) 統計學生總人數。10) 計算0001號課程的學生平均成績。11) 查詢選修了0001號課程的學生最高分數。12) 求各課程號及相應的選課人數。13) 查詢選修了3門及以上課程的學生學號。2. 連接查詢14) 查詢每個學生及其選修課程的情況。15) 查詢選修了00002號課程且成績在90分以上的所有學生的信息。16) 查詢每個學生的學號、姓名、選修的課程名和成績17) 查詢選修了課程名為“數據庫”的學生的學號和姓名1
27、8) 查詢成績表Grade中每位學生的學號Sno和各科的總成績,并按總成績降序排列。19) 查找課程表中沒有學生選修的課程的課程號和課程名稱。提示:1) select * from student 2) select sno,sname,sdept from student 3) select sname ,sage from student where sage<204) select sname,sdept,sage from student where sage between 20 and 255) select sname,ssex from student where sde
28、pt in('信息系', '數學系')6) select sname,sno,ssex from student where sname like '李% ' 7) select sno,grade from sc where cno= '0003' order by grade desc8) select * from student order by sdept asc,sage desc9) select count(*) from student 10)select avg(grade) from sc where cno
29、= '0001'11) select max(grade) from sc where cno= '0001'12) select cno,count(sno) 人數 from sc group by cno13) select sno from sc group by sno having count(cno)>=314) select student.sno,sname,sage,ssex,sdept,cno,grade from student,sc where student.sno=sc.sno 15) select student.sno,sn
30、ame,sage,ssex,sdept from student,sc where student.sno=sc.sno and cno='0002' and grade>=9016) select student.sno,sname,cname,gradefrom student,sc,course where student.sno=sc.sno and o=o17) select student.sno,sname from student,course,sc where student.sno=sc.sno and o=o and cname='數據庫
31、39;18) select sno,sum(grade) from sc group by sno order by sum(grade) desc19)select cno,cname from course where not exists (select * from sc where o=o) 實驗5 視圖的創建和使用實驗目的:1、 理解視圖的基本概念,掌握視圖的創建、修改和刪除。2、 掌握對視圖進行查詢和更新。實驗內容:視圖是從一個或幾個表導出的表。它與基本表不同,是一個虛表。數據庫中只存放視圖的定義,而不存放視圖對應的數據。首先完成數據庫和表的創建,如上。1. 創建視圖1) 建立計
32、算機系學生的視圖s1,并要求對視圖進行更新提示: create view s1 As select * from student where sdept= '計算機系' with check option 2) 由學生、課程和選修課三個表,定義一個計算機系的學生成績視圖,其屬性包括學號、姓名、課程名和成績提示: create view s2 As Select student.sno ,sname,cname,grade From student,course,scWhere student.sno=sc.sno and o=o and sdept= '計算機系'
33、;3) 將學生的學號、總成績、平均成績定義成一個視圖。提示: create view s3 As Select sno,sum(grade) 總成績 ,avg(grade) 平均成績 from sc group by sno2. 查詢視圖1) 對視圖S1進行查詢,查詢選修了0005號課程的計算機系學生提示:select s1.* from s1,sc where s1.sno=sc.sno and cno='0005'2)對視圖S2進行查詢,查詢選修課成績大于等于90分的學生信息提示:select * from s2 where grade>=903. 更新視圖1) 將計
34、算機系學生視圖s1中的學生的年齡加1提示:update s1 set sage=sage+1 再觀察一下student表中的學生的信息,會發現計算機系學生的年齡增1了4. 刪除視圖1)刪除視圖s1提示: drop view s1實驗6 索引的創建和使用實驗目的:1、 理解索引的概念,掌握索引的創建。2、 理解索引的優缺點,掌握索引的管理和維護。實驗內容:索引是對數據庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問數據庫表中的特定信息。建立索引的目的是加快對表中記錄的查找或排序。為表設置索引要付出代價的:一是增加了數據庫的存儲空間,二是在插入和修改數據時要花費較多的時間(因為索引也要隨
35、之變動,需要維護索引)。根據索引的順序與數據表的物理順序是否相同,可以把索引分成兩種類型:聚簇索引與非聚簇索引。1. 聚簇索引Ø 數據表的物理順序和索引表的順序相同,它根據表中的一列或多列的值排列記錄。Ø 每一個表只能有一個聚簇索引,因為一個表的記錄只能以一種物理順序存放.Ø 一般主鍵是聚簇索引的良好候選者.2. 非聚簇索引Ø 表的物理順序與索引順序不同,索引是有序的,而表中的數據是無序的。Ø 一個表可以有多個非聚簇索引。1.使用企業管理器步驟:展開數據庫->選中需要創建索引的表,單擊右鍵,選擇“所有任務”->單擊“管理索引”,在出
36、現的窗口中,來完成對索引的創建、編輯和刪除。1)使用企業管理器為數據庫teach中的學生表student創建一個以sname為索引關鍵字的惟一索引。2)將前述所建立的索引刪除。2. 使用T-SQL語句1)為數據庫teach中的表course創建一個名為C_Index的惟一非聚簇索引,索引關鍵字為編號cno,降序,填充因子為80%。提示:use teach gocreate unique nonclustered index C_Indexon course(cno desc) with fillfactor = 802)查看表courese的索引(使用系統存儲過程sp_helpindex)提示
37、:EXEC sp_helpindex course3)使用T-SQL語句將教師表中的Teacher_Index刪除。提示: DROP INDEX course.C_Index4)為student表創建一個基于“年齡,學號”組合列的非聚簇、復合索引nn_xh_index。提示:IF EXISTS (SELECT name FROM sysindexes WHERE name = 'nn_xh_index ') DROP INDEX student.nn_xh_index ;GOCREATE NONCLUSTERED INDEX nn_xh_index ON student (sa
38、ge, sno);實驗7 T-SQL語言實驗目的:1、 掌握Transact-SQL語言中的變量、運算符、函數;2、 掌握Transact-SQL語句編寫批處理和流程控制程序。3、 掌握游標的創建,打開,數據讀取,關閉,銷毀的基本方法實驗內容和步驟:Transact-SQL語言是在SQL Server 2000 中使用的程序設計語言。不但包含了標準SQL語言部分,而且為了滿足實際應用中的編程需要,在Transact-SQL語言中還另外增加了一些語言要素,它們包括注釋、變量、運算符、函數和流程控制語句等。所有的語句都在查詢分析器中執行。1. Transact-SQL語句實驗內容1: 返回在程序執
39、行過程中上一條SQL語句影響的記錄數(全局變量ROWCOUNT),注意觀察結果窗口。use teach-打開teach 數據庫GO-查詢學生表中的記錄SELECT * FROM Student-查詢上一條SELECT語句影響的記錄數SELECT ROWCOUNT AS 第一次查詢返回的記錄數GO實驗內容2: 查詢學生表的人數,將返回的記錄數賦給局部變量RowsUSE teachGODECLARE Rows int-聲明局部變量-給局部變量賦值SET Rows=(SELECT COUNT(*) FROM Student)-顯示局部變量的值SELECT Rows AS SELECT返回的記錄數GO
40、實驗內容3: 設置一個局部變量為表,進行插入和查詢操作- 定義變量為臨時表DECLARE Table_Example TABLE (Col_num int PRIMARY KEY, Col_text char (50)- 向該變量中添加兩行內容INSERT INTO Table_Example VALUES (1, 'this is a')INSERT INTO Table_Example VALUES (2, 'table data type example')- 從臨時表中查詢SELECT * FROM Table_ExampleGO實驗內容4:(練習,自己
41、試著寫一下)設置一個局部變量其值為選修了課程的人數,并顯示提示: DECLARE Rows int-聲明局部變量-給局部變量賦值SET Rows=(SELECT COUNT(distinct sno) FROM SC )-顯示局部變量的值SELECT Rows AS 選課人數GO實驗內容5:檢查sysdatabases中的每一個數據庫,使用數據庫標識號來確定數據庫名稱。USE master-打開master 數據庫GO-DB_NAME 是一個函數,功能是根據數據庫標識號,來返回數據庫的名稱SELECT dbid , DB_NAME(dbid) AS DB_NAMEFROM sysdatabas
42、es ORDER BY dbidGO實驗內容6:從數據庫中返回學生表的第2列的名稱USE teachGO-定義局部變量,用于存放學生表的ID號DECLARE 學生表ID INT-OBJECT_ID是一個函數,功能是返回數據庫對象的編號SET 學生表ID= OBJECT_ID('Student')-COL_NAME是一個函數, 返回指定表中指定字段的名稱,即列名SELECT COL_NAME(學生表ID,2) AS 學生表中第2列的名稱GO實驗內容7:簡單年、月、日函數SELECT MONTH('03/12/1998'), DAY('03/12/1998&
43、#39;),YEAR('03/12/1998')實驗內容8:從系統當前日期中返回系統當前的年份數、月份數和天數。- GETDATE()函數返回系統當前日期SELECT YEAR(GETDATE() AS 當前年份, MONTH(GETDATE() AS 當前月份, DAY(GETDATE() AS 當前天數GO實驗內容9:自己編寫函數。編寫一個函數,名稱為“函數_學生選課數”,要求根據輸入的學生學號,求此學生的選課數。USE teachGO-通過CREATE FUNCTION語句創建用戶的自定義函數“函數_學生選課數”CREATE FUNCTION 函數_學生選課數(xueha
44、o AS char(9) -函數的輸入參數)RETURNS int -返回結果類型BEGIN -函數體 DECLARE 選課數 AS int SELECT 選課數 =COUNT(cno) FROM SC WHERE Sno=xuehao RETURN 選課數ENDGO-使用自定義函數,求選課表(SC)中每位學生的選課數SELECT DISTINCT Student.Sno,Sname,選課數=dbo. 函數_學生選課數(SC.Sno)FROM Student,SCWHERE Student .Sno=SC.SnoGO實驗內容10: (練習,自己試著寫一下)練習自定義函數,求每門課程的選課人數提
45、示:USE teachGOCREATE FUNCTION 函數_選課人數(cno AS char(9) )RETURNS int BEGIN DECLARE 選課人數 AS int SELECT 選課人數 =COUNT(sno) FROM SC WHERE cno=cno RETURN 選課人數ENDGO-使用自定義函數,查詢每門課的選課人數(注:沒有人選的課程,不會出現)SELECT DISTINCT Course.Cno ,Cname ,選課人數=dbo. 函數_選課人數(SC.Cno)FROM Course,SCWHERE Co=SC.Cno GO-使用自定義函數,通過左外連接,保留了左
46、邊被舍棄的元組SELECT DISTINCT Course.Cno ,Cname ,選課人數=dbo. 函數_選課人數(SC.Cno)FROM Course left join SC on Co=SC.Cno GO2. 游標的創建和使用游標(Cursor)是處理數據的一種方法,為了查看或者處理結果集中的數據,游標提供了在結果集中一次以行或者多行前進或向后瀏覽數據的能力。我們可以把游標當作一個指針,它可以指定結果中的任何位置,然后允許用戶對指定位置的數據進行處理。T-SQL游標:該游標是基于Declare Cursor 語法,主要用于Transaction-SQL腳本、存儲過程以及觸發器中。Tr
47、ansaction-SQL游標在服務器處理由客戶端發送到服務器的Transaction-SQL語句。使用游標要遵循以下順序:聲明游標打開游標讀取數據關閉游標刪除游標。1聲明游標實驗內容1:以下是一個符合SQL-92標準的游標聲明,此游標是只讀的,只能從頭到尾順序提取數據。 DECLARE S_CUR1 CURSOR FOR SELECT * FROM STUDENT FOR READ ONLY實驗內容2:以下是一個符合T-SQL擴展的游標聲明,此游標是動態游標,可前后滾動,可對姓名列進行修改。 DECLARE S_CUR2 CURSOR SCROLL DYNAMIC FOR SELECT *
48、FROM STUDENT FOR UPDATE OF SName2. 打開游標聲明游標之后,要使用游標提取數據,必須先打開游標。使用OPEN語句可以打開游標。打開游標后,可以使用全局變量CURSOR_ROWS查看游標中數據行的數目。實驗內容3:打開游標S_CUR1,輸出其行數 OPEN S_CUR1 SELECT '游標s_cur1的數據行數'=CURSOR_ROWS注意:通過聯機叢書來查詢CURSOR_ROWS,來理解其值的含義3讀取數據游標打開后,就可以使用FETCH命令從中讀取數據。具體語句格式見聯機叢書。實驗內容4:從游標S_CUR1中提取數據,只能用NEXT提取數據。
49、 FETCH NEXT FROM S_CUR1提示:選中該語句,點擊執行,查看結果。再點擊執行,查看結果。重復執行。實驗內容5:從游標S_CUR2中提取數據:OPEN S_CUR2-讀取游標第一行FETCH FIRST FROM S_CUR2-讀取下一行FETCH NEXT FROM S_CUR2-讀取上一行FETCH PRIOR FROM S_CUR2-讀取最后一行FETCH LAST FROM S_CUR2-讀取當前行的上二行FETCH RELATIVE-2 FROM S_CUR24關閉游標游標使用完后,要及時關閉游標,以釋放當前的結果集并解除定位在該游標記錄行上的游標鎖定。實驗內容6:關
50、閉游標S_CUR1CLOSE S_CUR15刪除游標關閉一個游標后,其數據結構仍存儲在系統中,需要的時候仍然可以再次使用OPEN語句打開和使用該游標。如果確定以后不再使用該游標,則可以刪除游標,將游標占用的系統空間釋放出來。實驗內容7:刪除游標S_CUR1DEALLOCATE S_CUR1實驗8 存儲過程實驗目的:1、 理解存儲過程的概念,掌握各種存儲過程的創建方法。2、 掌握查看、修改和刪除存儲過程的方法。3、 掌握執行存儲過程的方法。實驗內容:存儲過程就是將常用的或很復雜的工作,預先用SQL語句寫好并用一個指定的名稱存儲起來,并且這樣的語句是放在數據庫中的,還可以根據條件執行不同SQL語句
51、。在Sql Server2000中,可以使用三種方法創建存儲過程。1)使用創建存儲過程向導創建存儲過程。2)使用企業管理器創建存儲過程。3)使用T-SQL語句中的CREATE PRODCECURE命令創建存儲過程。具體步驟:打開查詢分析器n 首先創建數據庫和表n 創建存儲過程n 執行存儲過程,查看結果我們在這里掌握第三種方法,其他方法自行掌握。實驗內容1:簡單的存儲過程。功能為:查詢student表中的內容 Create procedure query1_s As Select * from student go 執行語句為:exec query1_s實驗內容2:帶參數的存儲過程。帶了一個參數
52、s_sno,功能為:查詢指定學生的信息Create procedure query2_s s_sno char(9) As Select * from student where sno=s_sno go執行該存儲過程的2種不同方法:1)exec query2_s '201010001'2)exec query2_s s_sno ='201010001'實驗內容3:帶輸入和輸出參數的存儲過程 既有輸入參數也有輸出參數。在存儲過程中查詢后得到的數據可以利用輸出參數進行回傳。 功能為:查詢指定學生的姓名 Create procedure query3_s s_sno
53、 char(9) , s_sname char(20) outputAs Select s_sname=sname from student where sno=s_sno go 執行存儲過程: DECLARE ss_sno char(9) ,ss_sname char(20) SET ss_sno= '201010001' EXEC query3_s ss_sno, ss_sname output SELECT ss_sno, ss_sname GO實驗內容4:使用系統存儲過程查看某一存儲過程的參數及其數據類型。sp_help query2_s實驗內容5:重命名存儲過程 sp
54、_rename query1_s, query1實驗內容7:刪除存儲過程 Drop procedure query2_s實驗內容8: (練習,自己試著寫一下)編寫一存儲過程在student表中插入一條學生的記錄,并執行。提示:IF EXISTS (SELECT name FROM sysobjects WHERE name = 's_insert' AND type = 'P') DROP PROCEDURE s_insertGOCREATE PROCEDURE s_insert no CHAR(9), name CHAR(20),sex CHAR(2),age SMALLINT,dept CHAR(20) AS INSERT INTO Student(Sno,Sname,Ssex,Sage,Sdept) VALUES(no,name,sex,age,dept)GO-執行存儲過程EXEC s_insert '201012004','王想',
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年土木工程師考試的備考試題及答案詳盡
- 《升和毫升》(教學設計)-2024-2025學年四年級上冊數學冀教版
- 綜合能力提升計算機二級試題及答案
- Module 5 Unit2 I want a Chinese pen friend(教學設計)-2024-2025學年外研版(一起)英語六年級上冊
- 24 延安我把你追尋 教學設計-2024-2025學年統編版語文四年級上冊
- 寵物葬禮策劃技巧試題及答案
- 寵物殯葬服務的特色分析試題及答案
- 獸醫器械使用指南試題及答案
- 獸醫影像學基礎考題及答案
- 2024年消防設施備考試題及答案
- 《黛玉葬花》葬花情節的文化解讀
- 2025年國家鐵路局市場監測評價中心招聘應屆畢業生2人歷年高頻重點提升(共500題)附帶答案詳解
- 介紹家鄉山西太原
- 2025屆湖北省孝感市八校教學聯盟高三第二次模擬考試數學試卷含解析
- 土木工程CAD-終結性考核-國開(SC)-參考資料
- 放射性皮膚損傷的護理-中華護理學會團體標準
- 糖尿病-運動課件
- 科技大篷車進校園方案
- 【課件】往復式壓縮機課件
- 2024-2030年中國鈮行業市場發展趨勢與前景展望戰略分析報告
- GB/T 2428-2024成年人頭面部尺寸
評論
0/150
提交評論