第一篇:sql 數(shù)據(jù)庫 實驗九:T-SQL語言、存儲過程及數(shù)據(jù)庫的安全性
實驗九:T-SQL語言、存儲過程及數(shù)據(jù)庫的安全性
一、實驗?zāi)康?.掌握數(shù)據(jù)變量的使用;
2.掌握各種控制語句及系統(tǒng)函數(shù)的使用;
3.掌握存儲過程的實現(xiàn);
4.掌握混合模式下數(shù)據(jù)庫用戶帳號的建立與取消方法;
5.掌握數(shù)據(jù)庫用戶權(quán)限的設(shè)置方法;
6.掌握在企業(yè)管理器中進(jìn)行備份、恢復(fù)操作的步驟;
二、實驗學(xué)時
2學(xué)時
三、實驗要求
1.了解T-SQL支持的各種基本數(shù)據(jù)類型及變量的使用;
2.了解T-SQL各種運算符、控制語句及函數(shù)的功能及使用方法;
3.掌握存儲過程的編寫和運行方法
4.熟悉數(shù)據(jù)庫完全備份及恢復(fù)的方法;
5.了解SQL Server 2008系統(tǒng)安全;
6.熟悉數(shù)據(jù)庫用戶、服務(wù)器角色及數(shù)據(jù)庫角色的用法
7.完成實驗報告。
四、實驗內(nèi)容
以student數(shù)據(jù)庫為基礎(chǔ)數(shù)據(jù),完成以下內(nèi)容
1.變量及函數(shù)的使用:
1)創(chuàng)建局部變量@xh(學(xué)號)并賦值,然后輸出數(shù)據(jù)表student中所有等于該值的學(xué)生的學(xué)號、姓名、性別、所屬院系及年齡等信息;
2)將學(xué)號為200515008的學(xué)生的姓名賦值給變量@name;
3)計算學(xué)生信息表student中學(xué)生最高年齡和最低年齡之差,并將結(jié)果付給@cz;
4)定義一函數(shù),按系別統(tǒng)計當(dāng)前所有學(xué)生的平均年齡,并調(diào)用該函數(shù)。
5)定義一函數(shù),通過姓名查詢某學(xué)生的學(xué)號、性別、年齡、系別、選修課程名及成績。
2.編寫并執(zhí)行存儲過程
(1)創(chuàng)建一個無參存儲過程pr_StuScore,查詢以下信息:班級、學(xué)號、姓名、性別、課程名稱、考試成績。
(2)創(chuàng)建一個帶參數(shù)的存儲過程stu_info,該存儲過程根據(jù)傳入的學(xué)生編號在student表中查詢此學(xué)生的選修課程及成績信息。
(3)創(chuàng)建一個帶參數(shù)的存儲過程StuScoreInfo2,該存儲過程根據(jù)傳入的學(xué)生
編號和課程名稱查詢以下信息:班級、學(xué)號、姓名、性別、課程名稱、考試成績。
(4)編寫帶參數(shù)的存儲過程,根據(jù)傳入的課程名稱統(tǒng)計該課程的平均成績。
3.*對數(shù)據(jù)庫student進(jìn)行完全備份和恢復(fù)操作;
4.*以系統(tǒng)管理員身份登錄到SQL Server服務(wù)器,在SQL Server2008界面中實現(xiàn)以下操作
1)在當(dāng)前計算機(jī)中增加一個用戶zhang,密碼為secret。使此用戶通過windows
模式下登錄SQL Server服務(wù)器,登錄名為zhang;
2)新建以混合模式登錄SQL Server服務(wù)器的用戶登錄名分別為stu1、stu2和
stu3,登錄密碼為secret,默認(rèn)登錄數(shù)據(jù)庫為student;
3)在數(shù)據(jù)庫student中創(chuàng)建用戶zhang,登錄帳號為zhang;
4)在數(shù)據(jù)庫student中創(chuàng)建用戶stu1、stu2和stu3,登錄帳號為stu1、stu2
和stu3;
5)給數(shù)據(jù)庫用戶zhang賦予創(chuàng)建數(shù)據(jù)表的權(quán)限;
6)給數(shù)據(jù)庫用戶stu1賦予對sc表進(jìn)行插入、修改、刪除操作權(quán)限;
7)給數(shù)據(jù)庫用戶stu2和stu3賦予對student表、course表所有操作權(quán)限及查
詢sc的操作權(quán)限,并允許再授權(quán)給其他用戶;
8)撤銷數(shù)據(jù)庫用戶stu2對student表和course表的刪除操作的權(quán)限;
五、實驗步驟
3.對數(shù)據(jù)庫student進(jìn)行完全備份和恢復(fù)操作;
1)對數(shù)據(jù)庫student進(jìn)行完全備份操作;
以管理員賬號登錄SQL Server并運行SQL Server資源管理器;以下方法任選其一
方法1:利用資源管理器進(jìn)行備份
(1)打開【對象資源管理器】,在【服務(wù)器對象】節(jié)點下找到【備份設(shè)備】節(jié)點,單擊鼠標(biāo)右鍵,彈出右鍵菜單,選擇【新建備份設(shè)備】菜單,彈出新建備份設(shè)備窗口。輸入備份設(shè)備邏輯名稱data_backup,并指定備份設(shè)備的物理路徑,例如“D:backupdata_full.bak”,單擊【確定】。
(2)連接到相應(yīng)的SQL Server服務(wù)器實例之后,在【對象資源管理器】中,單擊服務(wù)器名稱以展開服務(wù)器樹。找到【數(shù)據(jù)庫】節(jié)點展開,選擇STUDENT
數(shù)據(jù)庫,單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【任務(wù)】—>【備份】命令。
(3)在【備份數(shù)據(jù)庫】對話框中的【數(shù)據(jù)庫】下拉列表中選擇的數(shù)據(jù)庫名STUDENT。在【備份類型】下拉列表中選擇備份類型為“完整”,在【名稱】文本框中輸入備份集的名稱STUDENT_BAK,在【備份集過期時間】選項中指定備份集過期時間為30天,在“選擇頁”窗格中,單擊【選項】,在【可靠性】選項中選擇“完成后驗證備份”選項,最后單擊【確定】按鈕。
方法2:用T-SQL語句進(jìn)行數(shù)據(jù)庫完全備份
使用邏輯名STUDENTBAK創(chuàng)建一個命名的備份設(shè)備,并將數(shù)據(jù)庫STUDENT完全備份到該設(shè)備。在查詢分析器的窗口輸入如下的語句并執(zhí)行:
USE master
EXEC sp_addumpdevice ‘disk’,’ STUDENTBAK’,’D:backup STUDENTBAK.BAK’
BackUp DataBase STUDENT To STUDENTBAK
2)在資源管理器中進(jìn)行數(shù)據(jù)庫恢復(fù);
(1)展開【數(shù)據(jù)庫】節(jié)點,用鼠標(biāo)右鍵單擊STUDENT,在彈出的快捷菜單中選擇【屬性】命令。打開“數(shù)據(jù)庫屬性”對話框,在“選擇頁”列表中,單擊“選項”。在“恢復(fù)模式”下拉列表中選擇【完整】恢復(fù)模式。
(2)用鼠標(biāo)右鍵單擊STUDENT,在彈出的快捷菜單中選擇【任務(wù)】—>【還原】—>【數(shù)據(jù)庫】命令。打開“還原數(shù)據(jù)庫”對話框。在“常規(guī)”選項卡上,“目標(biāo)數(shù)據(jù)庫”下拉列表框中選擇STUDENT。在“目標(biāo)時間點”文本框中,使用默認(rèn)值“最近狀態(tài)”。在“選擇用于還原的備份集”表格中,選擇用于還原的備份,單擊“確定”按鈕。
4.*以系統(tǒng)管理員身份登錄到SQL Server服務(wù)器,在SQL Server2008界面中實現(xiàn)以下操作
1)在當(dāng)前計算機(jī)中增加一個用戶zhang,密碼為secret。使此用戶通過windows
模式下登錄SQL Server服務(wù)器,登錄名為zhang; 在計算機(jī)中增加用戶的方法如下:單擊【開始|管理工具】,選擇【計算機(jī)管理】,在【計算機(jī)管理】的窗口中單擊左邊的【本地用戶和組】,在右側(cè)【用戶】文件夾上單擊右鍵,選擇菜單上的【新用戶】,然后在彈出的【新用戶】對話框中鍵入您準(zhǔn)備使用的用戶名、密碼,然后清除【用戶下次登錄時須更改密碼】復(fù)選框的選中狀態(tài),再單擊【創(chuàng)建】按鈕,然后單擊【關(guān)閉】按鈕關(guān)閉對話框。
創(chuàng)建windows身份驗證登陸用戶方法:在【對象資源管理器】中,展開【安全性】節(jié)點,然后右鍵單擊【登錄名】,在彈出的快捷菜單中選擇【新建登錄名】。在“登錄名-新建”對話框中單擊【登錄名】后面的搜索按鈕,選擇
【高級】,在彈出的對話框中選擇【立即查找】,在搜索結(jié)果中選擇已經(jīng)建立的用戶名,單擊【確定】按鈕,回到“登錄名-新建”對話框中,最后單擊確定按鈕完成創(chuàng)建。
2)新建以混合模式登錄SQL Server服務(wù)器的用戶登錄名分別為stu1、stu2和
stu3,登錄密碼為secret,默認(rèn)登錄數(shù)據(jù)庫為student;
創(chuàng)建SQL Server身份驗證登陸用戶方法:在【對象資源管理器】中,展開
【安全性】節(jié)點,然后右鍵單擊【登錄名】,在彈出的快捷菜單中選擇【新建登錄名】。在“登錄名-新建”對話框中選擇SQL Server身份驗證選項,在【登錄名】后面輸入用戶名,在密碼及確認(rèn)密碼后面輸入密碼。取消【強(qiáng)制密碼過期】選項,單擊【確定】按鈕。
3)在數(shù)據(jù)庫student中創(chuàng)建用戶zhang,登錄帳號為zhang;
在【對象資源管理器】中展開student數(shù)據(jù)庫節(jié)點,展開【安全性】節(jié)點,在用戶上單擊鼠標(biāo)右鍵選擇【新建用戶】命令,在彈出的新建對話框中單擊
【登陸名】后面的搜索按鈕,在彈出的【選擇登錄名】對話框中單擊【瀏覽】按鈕,在相應(yīng)的賬號前面選中并單擊【確定】按鈕,最后在用戶名后面輸入用戶名稱,單擊【確定】按鈕完成創(chuàng)建。
CREATEUSERzhang for login zhang
4)在數(shù)據(jù)庫student中創(chuàng)建用戶stu1、stu2和stu3,登錄帳號為stu1、stu2
和stu3;
CREATEUSERstu1 for login stu1
5)給數(shù)據(jù)庫用戶zhang賦予創(chuàng)建數(shù)據(jù)表的權(quán)限;
在student數(shù)據(jù)庫安全性節(jié)點下的用戶名上單擊鼠標(biāo)右鍵,選擇【屬性】,在打開的對話框中選擇【安全對象】頁,單擊右邊的【搜索】按鈕,在彈出的【添加對象】對話框中直接單擊【確定】按鈕,然后單擊【對象類型】按鈕,彈出【選擇對象類型】對話框,選中【數(shù)據(jù)庫】,單擊【確定】按鈕。再在選擇對象對話框中單擊【瀏覽】,在student數(shù)據(jù)庫前面選中,單擊【確定】。最后在【安全對象】頁下方的student的權(quán)限中創(chuàng)建表選項后的【授予】復(fù)選框中選中,單擊【確定】完成設(shè)置。
GRANTcreatetabletozhang
6)給數(shù)據(jù)庫用戶stu1賦予對sc表進(jìn)行插入、修改、刪除操作權(quán)限;
GRANT insert,update,delete ONsc to stu
17)給數(shù)據(jù)庫用戶stu2和stu3賦予對student表、course表所有操作權(quán)限及查
詢sc的操作權(quán)限,并允許再授權(quán)給其他用戶;
GRANTALL PRIVILEGESONStudent,CourseTOstu2,stu3
WITH GRANT OPTION
8)撤銷數(shù)據(jù)庫用戶stu2對student表和course表的刪除操作的權(quán)限;
RevokedeleteON Student,CourseFROM stu2 CASCADE
第二篇:數(shù)據(jù)庫sql語言總結(jié)
插入句型:
insertinto<表名> [各屬性名]values(<常量1>,<常量2>……)
刪除元組或者二維表:
delete from<表名>[ where <條件> ]
刪除屬性:
altertable<表名>dropcolumn<列名>
增加某表的屬性:
altertable<表名>add<列名> 類型
修改句型:
update<表名>set<列名> =<表達(dá)式>[where<條件>]
修改某表當(dāng)中的屬性類型:
altertable<表名>altercolumn<列名><轉(zhuǎn)換的類型>;
顯示表的一些基本情況
EXEC sp_help'<表名>'
更改當(dāng)前數(shù)據(jù)庫中用戶創(chuàng)建對象(如表、列或用戶定義數(shù)據(jù)類型)的名稱 sp_rename ‘<舊的表名>’, ‘<新的表名>’
修改表的列名 sp_rename'<表名>.
小注:上面的語句最后不需要加分號
判斷表中是否存在某列的語句
if exists(select * from syscolumns where id = object_id('stu')and name='Sno')
print 'stu exists'
else print 'stu not exists'
將表中的某列設(shè)置為主碼:
alter table stu addSno char primary key;
判斷表是否存在if exists(select count(*)from sysobjects where type='U' and name='stu')
查詢某個表中字段的列名和數(shù)據(jù)類型
select column_name,data_type from information_schema.columns where table_name = '表名';
第三篇:數(shù)據(jù)庫實驗報告 SQL語言
數(shù)據(jù)庫原理及實驗報告
實驗6 視圖
實驗?zāi)康模?)掌握交互式創(chuàng)建、刪除視圖的方法
2)掌握使用SQL創(chuàng)建、刪除視圖的方法
3)掌握交互式更新視圖的方法
4)掌握使用SQL更新視圖的方法 實驗內(nèi)容
6.1實驗題目:創(chuàng)建視圖
實驗過程:1)交互式創(chuàng)建視圖VIEW_S
2)交互式創(chuàng)建成績視圖VIEW_SCORETABLE
3)使用SQL創(chuàng)建課程表視圖VIEW_CTABLE
實驗結(jié)果:
6.2實驗題目:修改視圖
實驗過程:1)使用交互式方法把視圖VIEW_S中的字段SNO刪掉
2)使用SQL為視圖VIEW_CTABLE增加一個課時字段CT tiny int
實驗結(jié)果:
6.3實驗題目:通過視圖修改數(shù)據(jù)庫數(shù)據(jù)
實驗過程:1)交互式通過修改視圖VIEW_S中的數(shù)據(jù)來實現(xiàn)對其基本表S中數(shù)據(jù)的修改
2)對視圖VIEW_S執(zhí)行INSERT語句,查看此視圖的基本表S中數(shù)據(jù)的變化
3)修改視圖VIEW_S的定義,使其包含表S中的主鍵,再執(zhí)行插入操作
4)用SQL語句對視圖VIEW_S執(zhí)行DELETE操作,查看此視圖的基本表S中數(shù)據(jù)的變化 實驗結(jié)果:
6.4實驗題目:刪除視圖
實驗過程:1)交互式刪除視圖VIEW_S
2)使用SQL刪除視圖VIEW_CTABLE
實驗結(jié)果:
實驗7 數(shù)據(jù)查詢
實驗?zāi)康模?,掌握從簡單到復(fù)雜的各種數(shù)據(jù)查詢。包括,單表查詢、多表連接查詢、嵌套查詢、集合查詢。
2,掌握用條件表達(dá)式表示檢索結(jié)果。
3,掌握用聚合函數(shù)計算統(tǒng)計檢索結(jié)果。實驗7.1 單表查詢
實驗?zāi)康模?,掌握指定列或全部列查詢。
2,掌握按條件查詢。
3,掌握對查詢結(jié)果排序。
4,掌握使用聚集函數(shù)的查詢。
5,掌握分組統(tǒng)計查詢。實驗內(nèi)容:1,指定或全部列查詢。
2,按條件查詢及模糊查詢。
3,對查詢結(jié)果排序。
4,使用聚集函數(shù)的查詢。
5,分組統(tǒng)計查詢。
實驗7.2 連接查詢 實驗?zāi)康模赫莆赵O(shè)計一個以上數(shù)據(jù)表的查詢方法。多表之間的連接包括等值連接、自然連接、非等值連接、自身連接、自身連接、外連接和復(fù)合連接。
實驗內(nèi)容:1,連接查詢,查詢所有選課學(xué)生的學(xué)號、姓名、選課名稱及成績。
查詢每門課程的課程號、任課教師姓名及其選課人數(shù)。
2,自身連接,查詢所有比劉偉工資高的的教師的姓名、工資及劉偉的工資。
查詢同時選修了程序設(shè)計和微機(jī)原理的學(xué)生的姓名、課程號。
3,外連接,查詢所有學(xué)生的學(xué)號、姓名、選課名稱及成績(沒有選課的學(xué)生的選課信息顯示為空)
實驗結(jié)果
實驗7.3 嵌套查詢
實驗?zāi)康模赫莆涨短撞樵兪刮覀兛梢杂枚鄠€簡單查詢構(gòu)成復(fù)雜的查詢。從而增強(qiáng)了SQL的查詢能力。
實驗內(nèi)容:1,返回一個值的子查詢,查詢與劉偉教師職稱相同的教師號、姓名和職稱。
2,返回一組值的子查詢,使用ANY謂詞查詢講授課程號為C5的教師姓名。使用IN謂詞查詢講授課程號為C5的教師姓名。使用ALL謂詞查詢其他系中比計算機(jī)系所有教師工資都高的教師的姓名、工資、使用EXISTS謂詞查詢沒有講授課程號為C5的課程的教師姓名、所在系.使用NOT EXISTS謂詞查詢至少選修了學(xué)生S2選修的全部課程的學(xué)生的學(xué)號。實驗結(jié)果
實驗7.4 集合查詢
實驗?zāi)康模赫莆帐褂肬NION操作符將來自不同查詢但結(jié)構(gòu)相同的數(shù)據(jù)集合組合起來,形成一個具有綜合信息的查詢結(jié)果。
實驗內(nèi)容:查詢年齡不大于19歲或者屬于計算機(jī)系的學(xué)生,步驟如下:打開新建查詢窗口,創(chuàng)建SQL語句。執(zhí)行語句。
實驗結(jié)果
實驗十.T-SQL程序設(shè)計與游標(biāo)設(shè)計
實驗?zāi)康?/p>
掌握Transact-SQL語言及其程序設(shè)計的方法 掌握T-SQL游標(biāo)的使用方法
實驗10.1 T-SQL程序設(shè)計邏輯 實驗?zāi)康?/p>
掌握T-SQL程序設(shè)計的控制結(jié)構(gòu)及程序設(shè)計邏輯 實驗內(nèi)容
(1)計算1~100之間所有能被3整除的數(shù)的個數(shù)和總和。
(2)從學(xué)生表S中選取SNO,SN,SEX,如果為“男”則輸出M,如果為“女”則輸出F。實驗 10.2 面向復(fù)雜T-SQL程序設(shè)計 實驗?zāi)康?/p>
掌握面向復(fù)雜應(yīng)用的T-SQL程序設(shè)計方法。實驗內(nèi)容
(1)從教學(xué)數(shù)據(jù)庫jxsk中查詢所有同學(xué)選課成績情況:姓名,課程名,成績。要求:凡成績?yōu)榭照咻敵觥拔纯肌保恍∮?0分的輸出“不及格”;60~70分的輸出“及格”;70~80分的輸出“中”;80~90分輸出“良好”;90~100分輸出優(yōu)秀。并且輸出記錄按照下面要求排序:先按SNO升序,再按CNO升序,最后按成績降序。
(2)現(xiàn)給教師增加工資。要求:必須任兩門以上課程且漲幅按總收入分成三個級別:4000元以上漲300;3000元以上漲200;3000元以上漲100。只任一門課程的漲50.其他情況不漲。
實驗 10.2 使用游標(biāo) 實驗?zāi)康?/p>
學(xué)習(xí)和理解關(guān)系數(shù)據(jù)中游標(biāo)的概念和設(shè)計思想。掌握使用T-SQL游標(biāo)處理結(jié)果集的方法。實驗內(nèi)容
針對數(shù)據(jù)庫jiaoxuedb,進(jìn)行下面的實驗:
(1).定義一個游標(biāo)Cursor_Famale。要求該游標(biāo)返回所有女同學(xué)的基本信息,在游標(biāo)中查找并顯示牛莉的記錄。(2).創(chuàng)建一個一個儲存過程Pro_C,返回一個包含所有選修數(shù)據(jù)庫課程的學(xué)生基本信息的游標(biāo)。利用該存儲過程,通過學(xué)生姓名查找學(xué)生王一山是否選修了數(shù)據(jù)庫課程以及成績。
第四篇:教學(xué):數(shù)據(jù)庫-存儲過程資料
教學(xué)三:存儲過程
一、教學(xué)目的
(1)掌握T-SQL流控制語句;(2)掌握創(chuàng)建存儲過程的方法;(3)掌握存儲過程的執(zhí)行方法;(4)掌握存儲過程的管理和維護(hù)。
二、教學(xué)內(nèi)容
1、創(chuàng)建簡單存儲過程
(1)創(chuàng)建一個名為stu_pr的存儲過程,該存儲過程能查詢出051班學(xué)生的所有資料,包括學(xué)生的基本信息、學(xué)生的選課信息(含未選課同學(xué)的信息)。要求在創(chuàng)建存儲過程前請判斷該存儲過程是否已創(chuàng)建,若已創(chuàng)建則先刪除,并給出“已刪除!”信息,否則就給出“不存在,可創(chuàng)建!”的信息。
if exists(select name from sysobjects where name='stu_pr'and type='p')begin print '已刪除!' drop procedure stu_pr end else print '不存在,可創(chuàng)建!' go create procedure stu_pr as select * from Student_20103322 left outer join SC_20103322
on(Student_20103322.Sno=SC_20103322.Sno)left outer join Course_20103322 on(Course_20103322.Cno=SC_20103322.Cno)where classno='051' 1
exec stu_pr
2、創(chuàng)建帶參數(shù)的存儲過程
(1)創(chuàng)建一個名為stu_proc1的存儲過程,查詢某系、某姓名的學(xué)生的學(xué)號、姓名、年齡,選修課程名、成績。系名和姓名在調(diào)用該存儲過程時輸入,其默認(rèn)值分別為“%”與“林%”。執(zhí)行該存儲過程,用多種參數(shù)加以測試。
if exists(select name from sysobjects where name='stu_proc1' and type='p')begin
print '已刪除!' drop procedure stu_proc1 end else
print '不存在,可創(chuàng)建!' go create procedure stu_proc1 @Sdept char(8)='%',@Sname varchar(8)='林%' as select Sdept,Student_20103322.Sno,Sname,DATEDIFF(YEAR,Birth,GETDATE())age,Cname,Grade from Student_20103322,SC_20103322,Course_20103322 where Student_20103322.Sno=SC_20103322.Sno and Course_20103322.Cno=SC_20103322.Cno and Sdept like @Sdept and Sname like @Sname
execute stu_proc1 '計算機(jī)系','林紅' 3
execute stu_proc1 '信息安全','胡光璟'
(2)創(chuàng)建一個名為Student_sc的存儲過程,可查詢出某段學(xué)號的同學(xué)的學(xué)號、姓名、總成績。(學(xué)號起始號與終止號在調(diào)用時輸入,可設(shè)默認(rèn)值)。執(zhí)行該存儲過程。if exists(select name from sysobjects where name='Student_sc'and type='p')begin print '已刪除!' drop procedure student_sc end else print '不存在,可創(chuàng)建!' go create procedure Student_sc @Sno1 char(8),@Sno2 char(8)as select Student_20103322.Sno,Sname,SUM(Grade)總成績 from Student_20103322,SC_20103322,Course_20103322 where Student_20103322.Sno=SC_20103322.Sno and Course_20103322.Cno=SC_20103322.Cno and Student_20103322.Sno>=@Sno1 and Student_20103322.Sno<=@Sno2 group by Student_20103322.Sno,Sname
execute Student_sc '20110000','20110003' 5
3、創(chuàng)建帶輸出參數(shù)的存儲過程
(1)創(chuàng)建一個名為Course_sum的存儲過程,可查詢某門課程考試的總成績。總成績可以輸出,以便進(jìn)一步調(diào)用。
if exists(select name from sysobjects where name='Course_sum'and type='p')begin print '已刪除!' drop procedure Course_sum end else print '不存在,可創(chuàng)建!' go create procedure Course_sum @Cname varchar(20),@sum int output as select @sum=sum(Grade)from SC_20103322,Course_20103322 where Course_20103322.Cno=SC_20103322.Cno and Cname=@Cname
group by SC_20103322.Cno,Cname
declare @ping int exec Course_sum '高數(shù)',@ping output print '高數(shù)的考試總成績?yōu)椋?+cast(@ping as varchar(20))
(2)創(chuàng)建一執(zhí)行該存儲過程的批處理,要求當(dāng)總成績小于100時,顯示信息為:“XX課程的總成績?yōu)椋篨X,其總分未達(dá)100分”。超過100時,顯示信息為:“XX課程的總成績?yōu)椋篨X”。
declare @sum int
declare @Cname varchar(20)Exec Course_sum @cname,@sum out begin
if @sum <100 print cast(@cname as varchar)+'課程的總成績?yōu)?'+cast(@sum as varchar)+ ',其總分未達(dá)分'
else
print cast(@cname as varchar)+'課程的總成績?yōu)?'+cast(@sum as varchar)end
declare @sum int
declare @Cname varchar(20)set @Cname='高數(shù)' Exec Course_sum @cname,@sum out begin
if @sum <100 print cast(@cname as varchar)+'課程的總成績?yōu)?'+cast(@sum as varchar)+ ',其總分未達(dá)分'
else
print cast(@cname as varchar)+'課程的總成績?yōu)?'+cast(@sum as varchar)end
4、創(chuàng)建帶重編譯及加密選項的存儲過程
創(chuàng)建一個名為update_sc、并帶重編譯及加密選項的存儲過程,可更新指定學(xué)號、指定課程號的學(xué)生的課程成績。(學(xué)號、課程號由調(diào)用時輸入)
if exists(select name from sysobjects where name='update_sc'and type='p')begin print '已刪除!' drop procedure update_sc end else print '不存在,可創(chuàng)建!' go create procedure update_sc
@sno char(8),@cno char(3),@grade tinyint with RECOMPILE , ENCRYPTION as update SC_20103322 set Grade=@grade
where Sno=@sno and Cno=@cno
declare @sno char(8),@cno char(3),@grade tinyint set @sno='20103322' set @cno='003' set @grade='100' exec update_sc @sno,@cno,@grade begin print cast(@sno as varchar)+'的'+cast(@cno as varchar)+'課程成績?yōu)椋?+cast(@grade as varchar)end
5、使用T-SQL語句管理和維護(hù)存儲過程
(1)使用sp_helptext查看存儲過程Student_sc的定義腳本
exec sp_helptext student_sc
(2)使用select語句查看Student_sc存儲過程的定義腳本(提示:通過查詢表sysobjects和表syscomments)
select *
from sysobjects,syscomments where name = 'Student_sc'
(3)將存儲過程stu_pr改為查詢學(xué)號為2011001的學(xué)生的詳細(xì)資料。
alter procedure stu_pr as select * from Student_20103322 left outer join SC_20103322 on(Student_20103322.Sno=SC_20103322.Sno)left outer join Course_20103322 on(Course_20103322.Cno=SC_20103322.Cno)where Student_20103322.Sno='2011001'
(4)刪除存儲過程stu_pr。
drop procedure stu_pr
6、使用SQL Server Management Studio管理存儲過程
(1)在SQL Server Management Studio中重新創(chuàng)建剛刪除的存儲過程stu_pr create procedure stu_pr as begin select * from Student_20103322 left outer join SC_20103322 on(Student_20103322.Sno=SC_20103322.Sno)left outer join Course_20103322 on(Course_20103322.Cno=SC_20103322.Cno)where Student_20103322.Sno='2011001' end
(2)查看存儲過程stu_pr,并將該過程修改為查詢051班女生的所有資料。
ALTER procedure [dbo].[stu_pr] as begin select * from Student_20103322 left outer join SC_20103322 on(Student_20103322.Sno=SC_20103322.Sno)left outer join Course_20103322 on(Course_20103322.Cno=SC_20103322.Cno)where Student_20103322.Sno='2011001' and Sex='女' end
(3)刪除存儲過程stu_pr
【完】
第五篇:SQL數(shù)據(jù)庫實驗報告 實驗二
實驗2SQL Server數(shù)據(jù)庫的管理
1.實驗?zāi)康模?)了解SQL Server 數(shù)據(jù)庫的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)的特點。
(2)掌握使用SQL Server管理平臺對數(shù)據(jù)庫進(jìn)行管理的方法。
(3)掌握使用Transact-SQL語句對數(shù)據(jù)庫進(jìn)行管理的方法。
2.實驗內(nèi)容及步驟
(1)在SQL Server管理平臺中創(chuàng)建數(shù)據(jù)庫。
① 運行SQL Server管理平臺,在管理平臺的對象資源管理器中展開服務(wù)器。
② 右擊“數(shù)據(jù)庫”項,在快捷菜單中選擇“新建數(shù)據(jù)庫”菜單項。在新建數(shù)據(jù)庫對話框的數(shù)據(jù)庫名稱文本框中輸入學(xué)生管理數(shù)據(jù)庫名studentsdb,單擊“確定”按鈕。
(2)選擇studentsdb數(shù)據(jù)庫,在其快捷菜單中選擇“屬性”菜單項,查看“常規(guī)”、“文件”、“文件組”、“選項”、“權(quán)限”和“擴(kuò)展屬性”等頁面。
(3)打開studentsdb數(shù)據(jù)庫的“屬性”對話框,在“文件”選項卡中的數(shù)據(jù)庫文件列表中修改studentsdb數(shù)據(jù)文件的“分配的空間”大小為2MB。指定“最大文件大小”為5MB。修改studentsdb數(shù)據(jù)庫的日志文件的大小在每次填滿時自動遞增5%。
(4)單擊“新建查詢”打開查詢設(shè)計器窗口,在查詢設(shè)計器窗口中使用Transact-SQL語句CREATE DATABASE創(chuàng)建studb數(shù)據(jù)庫。然后通過系統(tǒng)存儲過程sp_helpdb查看系統(tǒng)中的數(shù)據(jù)庫信息。
(5)在查詢設(shè)計器中使用Transact-SQL語句ALTER DATABASE修改studb數(shù)據(jù)庫的設(shè)置,指定數(shù)據(jù)文件大小為5MB,最大文件大小為20MB,自動遞增大小為1MB。
(6)在查詢設(shè)計器中為studb數(shù)據(jù)庫增加一個日志文件,命名為studb_Log2,大小為5MB,最大文件大小為10MB。
(7)使用SQL Server管理平臺將studb數(shù)據(jù)庫的名稱更改為student_db。
(8)使用Transact-SQL語句DROP DATABASE刪除student_db數(shù)據(jù)庫。
3.實驗思考
(1)數(shù)據(jù)庫中的日志文件是否屬于某個文件組?
(2)數(shù)據(jù)庫中的主數(shù)據(jù)文件一定屬于主文件組嗎?
(3)數(shù)據(jù)文件和日志文件可以在同一個文件組嗎?為什么?
(4)刪除了數(shù)據(jù)庫,其數(shù)據(jù)文件和日志文件是否已經(jīng)刪除?是否任何人都可以刪除數(shù)據(jù)庫?
(5)能夠刪除系統(tǒng)數(shù)據(jù)庫嗎?