學(xué)生成績管理系統(tǒng)-SQL數(shù)據(jù)庫技術(shù)_第1頁
學(xué)生成績管理系統(tǒng)-SQL數(shù)據(jù)庫技術(shù)_第2頁
學(xué)生成績管理系統(tǒng)-SQL數(shù)據(jù)庫技術(shù)_第3頁
學(xué)生成績管理系統(tǒng)-SQL數(shù)據(jù)庫技術(shù)_第4頁
學(xué)生成績管理系統(tǒng)-SQL數(shù)據(jù)庫技術(shù)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《SQL數(shù)據(jù)庫技術(shù)》課程設(shè)計(jì)一、題目:學(xué)生成績管理二、因?yàn)槲易龅氖菍W(xué)生成績管理,所以數(shù)據(jù)庫中至少有個(gè)一個(gè)表是來存儲(chǔ)學(xué)生的各課成績的。有了學(xué)生成績,得知道這個(gè)成績是哪個(gè)學(xué)生的,所以此表中也得有學(xué)生姓名,但是學(xué)生姓名肯定有重復(fù)的,所以得必須有個(gè)標(biāo)志來惟一標(biāo)識一個(gè)學(xué)生,所以得給每個(gè)學(xué)生一個(gè)編號〔學(xué)號〕,但是也得必須清楚,這個(gè)成績是哪門課程的,所以給課程定義了一個(gè)編號。之后,得想到有了學(xué)生成績表,總得有個(gè)表來存放學(xué)生信息吧,所以又建立一個(gè)學(xué)生信息表,此表中的必須的字段得有學(xué)號、姓名、班級,其他的字段可以根據(jù)需要來添加。然后就是得有個(gè)課程表來存放哪個(gè)教師教哪門課程信息,所以此表中至少得有課程號,課程名稱和教師的惟一標(biāo)識〔教師編號〕,再有一個(gè)表來存放教師的信息的,其中的字段必須有教師編號,教師姓名和所在的部門,當(dāng)然也可以有教師出生日期、職稱、號碼等字段??傊@個(gè)學(xué)生管理系統(tǒng)總共包括四個(gè)表學(xué)生信息表student、教師信息表teacher、成績表score和課程表course。Student表:在建表時(shí),除了添加學(xué)號、姓名、班級必要字段,還添加一些其他的字段,比方:出生日期、性別、郵箱地址和類型等。Teacher表:在建表時(shí),除了添加教師編號,教師姓名,部門必要字段,還可以添加一些其他的字段,比方:出生日期、性別、和等。Score表:此表應(yīng)該包括學(xué)生學(xué)號、課程號和成績等。Course表:應(yīng)包括課程號,對應(yīng)的課程名稱和教此課程的教師編號?!?〕、建立一個(gè)數(shù)據(jù)庫,然后在此數(shù)據(jù)庫中建立這四個(gè)數(shù)據(jù)表?!?〕、向表中添加記錄?!?〕、用一些查詢語句來查看表中的特定記錄?!?〕、向表中添加一些字段。如:向teacher表中添加字段tel〔5〕、創(chuàng)立一個(gè)自定義數(shù)據(jù)類型,并修改student表中的某個(gè)字段為此數(shù)據(jù)類型。(6)、創(chuàng)立幾個(gè)視圖查詢某個(gè)班級的學(xué)生信息查看每門課程的平均成績查看選修計(jì)算機(jī)課程的學(xué)生信息查看所有男教師和所有男學(xué)生的信息〔7〕、創(chuàng)立幾個(gè)存儲(chǔ)過程顯示成績表中的課程號在課程表中且所任教師性別為男、計(jì)算機(jī)系的成績表顯示某學(xué)生的學(xué)號,姓名,所學(xué)課程號,課程名稱和對應(yīng)的成績在執(zhí)行此存儲(chǔ)過程時(shí),如果沒有給出參數(shù)〔學(xué)生姓名〕,那么輸入全部的學(xué)生的學(xué)號,姓名,班級,任課教師編號及其姓名,所學(xué)課程名稱和成績,如果有,那么顯示此學(xué)生的以上信息?!?〕、創(chuàng)立觸發(fā)器在成績表中建立一個(gè)觸發(fā)器,當(dāng)向表中添加記錄時(shí),此學(xué)生的成績都乘以1.2檢查學(xué)生的郵箱地址是否相同,如果相同,輸出'insertingfail',并且回滾事務(wù);如果不相同,那么插入成功。在成績表建立一個(gè)觸發(fā)器,在向表中插入記錄時(shí),檢驗(yàn)插入的課程號是否在課程表中的課程號的范圍之內(nèi)?!?〕、創(chuàng)立規(guī)那么,并綁定在向成績表中添加記錄時(shí),如果成績degree<0,那么插入不成功。在向教師表中添加記錄時(shí),如果號碼不是0-9的數(shù)字,那么插入不成功?!?0〕、創(chuàng)立自定義函數(shù)和索引這些都在后面有完整的代碼和解釋。三、四個(gè)表的E-R實(shí)體模型圖分析:教師學(xué)生教師學(xué)生學(xué)教1N學(xué)教N(yùn)M在教學(xué)管理中,學(xué)校開設(shè)假設(shè)干門學(xué)科,一個(gè)教師可以教授其中的一門或多門課程,每個(gè)學(xué)生也需要學(xué)習(xí)其中的幾門課程,因此,教學(xué)管理中涉及的對象〔實(shí)體型〕有學(xué)生、教師和課程。用E-R圖描述它們之間的聯(lián)系。如下圖。其中,學(xué)生與課程是多對多的聯(lián)系,而教師與課程的聯(lián)系那么是一對多。這四個(gè)表的總的實(shí)體-關(guān)系圖:班級號學(xué)號號班級號學(xué)號號學(xué)生信息表出生日期出生日期號學(xué)號學(xué)號號性別性別號出生日期號教師姓名出生日期號教師姓名號成績表號成績表號部門部門號成績號教師信息表成績號教師信息表課程名稱號課程號號課程名稱號課程號號職稱號職稱號教師編號教師編號號課程表課程表四、設(shè)計(jì)數(shù)據(jù)表:通過E-R圖分析,現(xiàn)在已經(jīng)對數(shù)據(jù)庫有一個(gè)很清楚的認(rèn)識了。在此學(xué)生成績信息中有4個(gè)表需要建立學(xué)生信息表〔student〕包括學(xué)號〔sno〕、姓名〔sname〕、性別〔Ssex〕、班級〔class〕、出生日期〔sbirth〕教師信息表(teacher)包括教師編號〔tno〕、姓名〔tname〕、性別〔Tsex〕、部門〔depart〕、職稱〔prof〕、出生日期〔tbirth〕成績表〔score〕包括學(xué)號〔sno〕、課程號〔cno〕、成績〔degree〕課程信息表〔course〕包括課程號〔cno〕、課程名稱〔cname〕、教師編號〔tno〕五、表結(jié)構(gòu)主鍵是一個(gè)表通過一個(gè)列或多個(gè)列組合的數(shù)據(jù)來唯一標(biāo)識表中的每一行,這個(gè)列或列組合就被稱為主鍵,煮件可以來強(qiáng)制實(shí)體完整性。主鍵約束有以下特征和作用:〔1〕主鍵約束通過不允許一個(gè)或多個(gè)列輸入重復(fù)的值來保證一個(gè)表中所有行的惟一性,使所有浪都是可以區(qū)分的?!?〕一個(gè)表張只能有一個(gè)主鍵,且組成主鍵的列的數(shù)據(jù)都不能取空值。〔3〕當(dāng)定義主鍵約束時(shí),SQLserver在主鍵列上建立惟一性索引,這個(gè)索引在煮件被查詢時(shí)可以加快查詢的速度。在teacher表中,以教師編號tno為主鍵,對其進(jìn)行惟一性約束。在Course表中,以課程號為主鍵,對其進(jìn)行惟一性約束。1、Student表:snoChar(8)不允許為空snameChar(10)不允許為空SsexChar(2)不允許為空sbirthDatetime(8)允許為空classChar(4)不允許為空typeChar(7)允許為空score表結(jié)構(gòu):snoChar(8)不允許為空cnoChar(5)不允許為空degreeFloat(8)不允許為空Course表:以課程號為主鍵,通過這個(gè)主鍵來對這個(gè)表進(jìn)行唯一性約束。cno〔主鍵〕Char(5)不允許為空cnamevarchar(10)不允許為空tnochar(3)不允許為空Teacher表結(jié)構(gòu):Tno〔主鍵〕Char(5)不允許為空tnamevarchar(10)不允許為空departVarchar(8)不允許為空tsexChar(2)不允許為空tbirthdatatime允許為空profChar(6)允許為空六、其他對象的說明:〔1〕、外鍵約束〔primarykey〕:外鍵也是由表中的一個(gè)列或多個(gè)列組成的,它是和在相關(guān)表中事先定義的具有惟一性的列一起使用的,該列一個(gè)是所在表的主鍵。外鍵約束用來建立和強(qiáng)制兩個(gè)表之間的關(guān)聯(lián),即一個(gè)表的一個(gè)列或列組合與另一個(gè)表的具有惟一性的列或列組合相關(guān),這個(gè)列或列組合就成為第一個(gè)表中的外鍵外鍵約束限制將破壞這種關(guān)聯(lián)的操作。作為外鍵的列的值可以是空值,或是它所引用的表中已經(jīng)存在的值。在score表中,其學(xué)號sno和課程號cno都是此表的外鍵約束,因?yàn)榇吮碇袑W(xué)號sno要受學(xué)生信息表中的學(xué)號的約束,student表中沒有的學(xué)號,score表中也應(yīng)該沒有,如果向score表添加數(shù)據(jù)時(shí)違反的此規(guī)那么,那么添加不成功。課程號cno也同樣,受到course表中課程號cno的約束.?!?〕、空值(null):空值意味著數(shù)據(jù)尚未如,它與0或長度為零的字符串〔“〞〕的含義不同。如果表中的某一列必須有值才能使記錄有意義,那么可以指明該列不允許取空值。在教師信息表teacher中其出生日期列tbirth和職稱prof允許為空,但并不表示該教師沒有生日,沒有職稱,而是目前還不知道而已。在學(xué)生信息表student中其出生日期sbirth也可為空,也是同樣的道理。(3)、check約束:檢查約束可以用來限制列上可以接受的數(shù)據(jù)值,檢查約束使用邏輯表達(dá)式來限制列上可以接受的數(shù)據(jù)。可以在一個(gè)列上使用多個(gè)檢查約束,也可以在表上建立一個(gè)可以在多個(gè)列上使用的檢查約束。比方:在學(xué)生信息表中,郵件地址semail的格式必須是%@%格式的?!?〕、惟一性約束:使用惟一性約束的作用是保證在不是主鍵的指定惟一性的列上不會(huì)出現(xiàn)重復(fù)的數(shù)據(jù)。定義了惟一性約束的列上的數(shù)據(jù)可以為空值,一個(gè)表上可以定義多個(gè)惟一性約束。七、創(chuàng)立數(shù)據(jù)庫、數(shù)據(jù)表、視圖、存儲(chǔ)過程、自定義函數(shù)、觸發(fā)器等語句和測試語句1、創(chuàng)立數(shù)據(jù)庫:createdatabasesshon(name=ssh,filename='e:\老大\sql\ssh.mdf',size=1)logon(name=ssh1,filename='e:\老大\sql\ssh1.ldf',size=1)2、創(chuàng)立數(shù)據(jù)表〔1〕、student表usesshcreatetablestudent(snochar(8)primarykey,snamechar(10)notnull,Ssexchar(2)notnull,Sbirthdatetime,classchar(4)notnullsemailvarchar(20))〔2〕、score表createtablescore(snochar(8)notnull,cnochar(4)notnull,degreefloatnotnull)(3)、course表createtablecourse(cnochar(5)notnullprimarykey,cnamevarchar(10)notnull,tnochar(3)notnull)〔4〕、teacher表createtableteacher(tnochar(5)notnullprimarykey,tnamevarchar(10)notnull,departvarchar(8)notnull,Tsexchar(2)notnull,Tbirthdatetime,profchar(6))4向表中添加記錄〔1〕、向?qū)W生信息表中添加insertintostudentvalues('101','生活','女','1983-09-18','11')insertintostudentvalues('102','風(fēng)塵','男','1984-01-01','11')insertintostudentvalues('103','離開','男','1984-01-01','11')insertintostudentvalues('104','流浪','女','1984-11-11','11')insertintostudentvalues('105','生命','男','1984-12-05','13')insertintostudentvalues('106','無悔','女','1984-11-01','13')insertintostudentvalues('107','歷史','女','1984-10-01','12')insertintostudentvalues('108','風(fēng)塵','男','1985-9-08','11')insertintostudentvalues('109','活著','男','1985-12-12','12')insertintostudentvalues('110','傻瓜','女','1985-08-28','12')………………查看記錄Select*fromstudent〔2〕、向成績表中添加insertintoscorevalues('101','01',88)insertintoscorevalues('101','02',85)insertintoscorevalues('102','02',80)insertintoscorevalues('101','03',88)insertintoscorevalues('102','02',85)insertintoscorevalues('102','03',80)insertintoscorevalues('103','01',83)insertintoscorevalues('103','02',85)insertintoscorevalues('103','03',90)insertintoscorevalues('104','01',60)…………查看記錄Select*fromscore〔3〕、向教師表中添加數(shù)據(jù)insertintocoursevalues('01','計(jì)算機(jī)','11')insertintocoursevalues('02','網(wǎng)絡(luò)管理','12')insertintocoursevalues('03','專業(yè)英語','13')insertintocoursevalues('04','軟件工程','14')…………查看記錄Select*fromcourse〔4〕、向課程表中添加數(shù)據(jù)insertintoteachervalues('11','無意','計(jì)算機(jī)系','男','1973-4-5','教授')insertintoteachervalues('12','生活','計(jì)算機(jī)系','女','1975-12-1','副教授')insertintoteachervalues('13','沒有','管理系','女','1975-3-3','副教授')insertintoteachervalues('14','離開','英語系','男','1973-5-5','教授')…………查看記錄Select*fromteacher5、一些查詢語句〔1〕、查詢成績大于學(xué)號為101的學(xué)生的課程為02的成績的所有列。select*fromscorewheredegree>(selectdegreefromscorewheresno='101'andcno='02')〔2〕、查詢課程號01大于課程號02的最大值、并以分?jǐn)?shù)降序排序的成績表中所有列select*fromscoreswhereso='01'ands.degree>=(selectmax(degree)fromscoreywhereyo='02')orderbydegreedescgoselectmax(degree)as"02max"fromscorewherecno='02'(3)、查詢性別為男的學(xué)號,姓名,班級,課程號和成績的學(xué)生selectstudent.sno,student.sname,student.class,scoreo,score.degreefromstudent,scorewherestudent.sno=score.snoandssex='男'〔4〕、查詢成績在60到80之間的所有列select*fromscorewheredegreebetween60and80〔5〕、查詢score表中至少有5名學(xué)生選修的并以0開頭的課程的平均分selectavg(degree)as"平均分",cnofromscorewherecnolike'0%'groupbycnohavingcount(*)>=56、創(chuàng)立自定義數(shù)據(jù)類型創(chuàng)立一個(gè)email自定義數(shù)據(jù)類型execsp_addtypeemail,'varchar(20)','null'修改student表中的semail數(shù)據(jù)類型為email類型altertablestudentaltercolumnsemailemail7、向表中添加字段向student表添加type,semail,,b并且郵件地址有check約束altertablestudentaddtypechar(7)altertablestudentaddsemailvarchar(20)nullconstraintck_semcheck(semaillike'%@%')altertableteacheraddtelvarchar(15)8、創(chuàng)立視圖〔1〕、創(chuàng)立所有11班的學(xué)生信息的視圖createviewstudent11asselect*fromstudentwhereclass='11'查看視圖中的記錄select*fromstudent11〔2〕、創(chuàng)立視圖course_degree,其中的內(nèi)容是選修計(jì)算機(jī)課程的學(xué)生信息,包括〔sno,sname,cno,cname,degree〕,創(chuàng)立時(shí)加上withcheckoptioncreateviewcourse_degree(sno,sname,cno,cname,degree)asselectscore.sno,sname,scoreo,cname,degreefromcourse,student,scorewherescoreo=courseoandstudent.sno=score.snoandcname='計(jì)算機(jī)'withcheckoption查看視圖中的記錄select*fromcourse_degree〔3〕、創(chuàng)立一個(gè)視圖,其中的內(nèi)容是成績表中每門課程的createviewaverageasselectavg(degree)as'平均分'fromscoregroupbycno查看視圖中的記錄select*fromaverage〔4〕、創(chuàng)立視圖其中的內(nèi)容是所有男教師和男學(xué)生的name,sex,birthcreateviewmanasselectsnameasname,ssexassex,sbirthasbirthfromstudentwheressex='男'unionselecttname,tsex,tbirthfromteacherwheretsex='男'查看視圖中的記錄select*fromman9、創(chuàng)立規(guī)那么規(guī)那么的作用月CHECK約束的局部功能相同,在向表中的某列插入或更新數(shù)據(jù)時(shí),用它來限制輸入的新值的取值范圍。而它與CHECK約束不同的是:CHECK約束是用CREATETABLE語句在建表時(shí)指定的,而規(guī)那么需要作為單獨(dú)的數(shù)據(jù)庫對象來實(shí)現(xiàn)。在一個(gè)列上只能使用一個(gè)規(guī)那么。但可以使用多個(gè)CHECK約束。規(guī)那么可以應(yīng)用于多個(gè)列,還可以應(yīng)用于用戶自定義的數(shù)據(jù)類型,而CHECK約束只能應(yīng)用于它定義的列。〔1〕、創(chuàng)立一個(gè)degree_rule規(guī)那么createruledegree_ruleas@values>0把此規(guī)那么綁定到score表中degree列execsp_bindrule'degree_rule','score.degree'在向成績表中添加記錄時(shí),如果成績degree<0,那么插入不成功。(2)、創(chuàng)立一個(gè)tel_rule規(guī)那么createruletel_ruleas@valuelike'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'把此規(guī)那么綁定到teacher表中tel列execsp_bindrule'tel_rule','teacher.tel'在向教師表中添加記錄時(shí),如果號碼不是0-9的數(shù)字,那么插入不成功。10、創(chuàng)立存儲(chǔ)過程存儲(chǔ)過程是存儲(chǔ)在效勞器上的例行程序及過程,在SQLSERVER只能感定義某個(gè)過程,其中記錄了一系列的造作,每次應(yīng)用程序只需調(diào)用該過程就可完成該操作,這種SQLSERVER中定義的過程就被稱為存儲(chǔ)過程。它可以完成以下功能:接受輸入?yún)?shù)并返回多個(gè)輸出值。包含T-SQL語句用以完成特定的SQLSERVER操作,其中可以有對其他存儲(chǔ)過程的調(diào)用。返回一個(gè)指示成功與否及失敗原因的狀態(tài)代碼給調(diào)用它的過程。存儲(chǔ)過程不能接用過程名返回值,也不能直接在表達(dá)式中使用?!?〕、創(chuàng)立一個(gè)存儲(chǔ)過程,來顯示成績表中的課程號在課程表中并且所任教師性別為男、所在部門是計(jì)算機(jī)系的成績表中的列createprocstudent_11asselect*fromscorewherecnoin(selectcnofromcourse,teacherwherecourse.tno=teacher.tnoanddepart='計(jì)算機(jī)系'andtsex='男')調(diào)用此存儲(chǔ)過程Execstudent_11〔2〕、創(chuàng)立一個(gè)帶輸入?yún)?shù)的存儲(chǔ)過程,調(diào)用此存儲(chǔ)過程時(shí),給出一個(gè)學(xué)生名,顯示出此學(xué)生的學(xué)號,姓名,所學(xué)課程號,課程名稱和對應(yīng)的成績createprocstudent_name@snamevarchar(10)asselectstudent.sno,sname,scoreo,degreecnamefromstudent,score,coursewherestudent.sno=score.snoandscoreo=courseoandsname=@sname調(diào)用此存儲(chǔ)過程,〔此例是輸出姓名為歷史的學(xué)生的信息〕execstudent_name'歷史'〔3〕、創(chuàng)立一個(gè)存儲(chǔ)過程,在執(zhí)行此存儲(chǔ)過程時(shí),如果沒有給出參數(shù)〔學(xué)生姓名〕,那么輸入全部的學(xué)生的學(xué)號,姓名,班級,任課教師編號及其姓名,所學(xué)課程名稱和成績,如果有,那么顯示此學(xué)生的以上信息。createprocstudent_teacher@snamevarchar(10)=nullasif@snameisnullselectstudent.sno,sname,student.class,teacher.tno,teacher.tname,degree,cnamefromstudent,score,course,teacherwherestudent.sno=score.snoandscoreo=courseoandcourse.tno=teacher.tnoelseselectstudent.sno,sname,student.class,teacher.tno,teacher.tname,degree,cnamefromstudent,score,course,teacherwherestudent.sno=score.snoandscoreo=courseoandcourse.tno=teacher.tnoandsname=@sname調(diào)用此存儲(chǔ)過程execstudent_teacher〔沒有實(shí)參〕execstudent_teacher'歷史'〔查詢姓名為歷史的學(xué)生的選課信息和成績〕〔4〕、創(chuàng)立一個(gè)存儲(chǔ)過程,傳遞一個(gè)學(xué)生姓名,先判斷此學(xué)生是否有郵箱,如果有,那么顯示此學(xué)生的姓名,郵箱地址,學(xué)號,班級;如果沒有的話,輸出此句話'thesemailisempty'createprocstudent_email@snamevarchar(10)asbeginif(selectsemailfromstudentwheresname=@sname)isnullbeginprint'thesemailisempty'endelseselectsname,semail,sno,classfromstudentwheresname=@snameend調(diào)用此存儲(chǔ)過程execstudent_email'super'當(dāng)給出姓名的那個(gè)學(xué)生沒有郵箱地址時(shí),那么會(huì)顯示如下內(nèi)容。execstudent_emaildfdf'11、觸發(fā)器觸發(fā)器是一種特殊的存儲(chǔ)過程,它不能顯式地調(diào)用,而是在往表中插入記錄、更新記錄或者刪除記錄時(shí),被自動(dòng)的激活。所以,觸發(fā)器可以用來對表實(shí)施復(fù)雜的完整性約束,當(dāng)觸發(fā)器所保護(hù)的數(shù)據(jù)發(fā)生改變時(shí),觸發(fā)器會(huì)自動(dòng)被激活,從而防止對數(shù)據(jù)的不正確修改。在觸發(fā)器中卡儀查詢其他表,也可以執(zhí)行更復(fù)雜的T-SQL語句。如果發(fā)現(xiàn)引起觸發(fā)器執(zhí)行的T-SQL語句執(zhí)行了一個(gè)非法的操作,那么可以通過回滾事務(wù)使語句不能執(zhí)行,回滾后SQLSERVER會(huì)自動(dòng)返回到此事務(wù)執(zhí)行前的狀態(tài)。SQLSERVER為每個(gè)觸發(fā)器都查了兩個(gè)專用表,inserted表和deleted表.這兩個(gè)表的結(jié)構(gòu)總是與被該觸發(fā)器作用的表的結(jié)構(gòu)相同。觸發(fā)器執(zhí)行完成后,與該觸發(fā)器相關(guān)的這兩個(gè)表也會(huì)被刪除。一個(gè)表中可以有多個(gè)具有不同名稱的各種類型的觸發(fā)器,每個(gè)觸發(fā)器都可以完成不同的功能,但每個(gè)觸發(fā)器只能作用在一個(gè)表上。〔1〕、創(chuàng)立一個(gè)觸發(fā)器,來檢查學(xué)生的郵箱地址是否相同,如果相同,輸出'insertingfail',并且回滾事務(wù);如果不相同,那么插入成功。createtriggerstudentinsertonstudentafterinsertasif(selectsemailfrominsertedwheresemailin(selectsemailfromstudent))isnotnullbeginprint'insertingfail'rollbacktransactionendelseprint'inseringsucceed'向?qū)W生信息表中插入一條記錄,檢驗(yàn)是否成功插入insertintostudentvalues('114','lengbing','女','1985-12-12','11','lengbingssh@sina','一般')〔2〕、在成績表中建立一個(gè)觸發(fā)器,當(dāng)向表中添加記錄時(shí),此學(xué)生的成績都乘以1.2createtriggerscoreupdateonscoreafterinsertasupdatescoresetdegree=degree*1.2fromscorewheresnoin(selectsnofrominserted)向表中插入一條記錄,檢驗(yàn)觸發(fā)器是否有用。insertintoscorevalues('108','01','56')〔3〕、在成績表建立一個(gè)觸發(fā)器,在向表中插入記錄時(shí),檢驗(yàn)插入的課程號是否在課程表中的課程號的范圍之內(nèi)。如果在,那么插入成功;否那么,提示信息'沒有這門課程',回滾事務(wù)。createtriggercourse_scoreonscoreafterinsertasif(selectcnofrominsertedwherecnoin(selectcnofromcourse))isnullbeginprint'沒有這門課程'rollbacktransactionend向表中添加一條記錄,進(jìn)行驗(yàn)證。insertintoscorevalues('108','06','60')12、自定義函數(shù)函數(shù)是由一條或多條T-SQL語句組成的代碼段,用語實(shí)現(xiàn)一些常用的功能,編寫好的函數(shù)可以重復(fù)使用。用戶自定義函數(shù)可以接受零個(gè)或多個(gè)輸入?yún)?shù),函數(shù)的返回值可以是一個(gè)數(shù)值,也可以是一個(gè)表。用戶自定義函數(shù)有三種類型:返回?cái)?shù)值的用戶自定義函數(shù)內(nèi)聯(lián)〔單語句〕的返回表的用戶自定義函數(shù)多語句的返回表的用戶自定義函數(shù)〔1〕、創(chuàng)立一個(gè)用戶自定義函數(shù),輸出與指定的學(xué)生同班的學(xué)生個(gè)數(shù)createfunctionstudentcount(@snochar(5))returnsintbegineclare@counterintselect@counter=count(*)fromstudentwhereclass=(selectclassfromstudentwheresno=@sno)return@counterend調(diào)用此自定義函數(shù)〔本例是查找與學(xué)號102同班的學(xué)生個(gè)數(shù)〕declare@aintset@a=dbo.studentcount('102')printconvert(char(3),@a)〔2〕、創(chuàng)立一個(gè)用戶自定義函數(shù),用

溫馨提示

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

最新文檔

評論

0/150

提交評論