数据库原理实验报告(Mysql)_第1页
数据库原理实验报告(Mysql)_第2页
数据库原理实验报告(Mysql)_第3页
数据库原理实验报告(Mysql)_第4页
数据库原理实验报告(Mysql)_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验项目列表序号实验项目名称指导教师1实验一数据库的定义实验(验证性)2实验二数据库的建立和维护实验(验证性)3实验三数据库的杳询实验(验证性)4实验四数据库的视图操作实验(验证性)5实验五触发器、存储过程操作实验(综合性)实验一:数据库的定义实验一、实验目的:1、理解MySQLServer6.0服务器的安装过程和方法;2、要求学生熟练掌握和使用SQL、T-SQL、SQLServerEnterpriserManagerServer创建数据库、表、索引和修改表结构,并学会使用SQLServerQueryAnalyzer,接收T—SQL语句和进行结果分析。二、实验环境:硬件:PC机软件:Windows操作系统、MySQLServer6.0和NavicatforMySQL9.0三、 实验内容和原理:1、 安装MySQL以及相应的GUI工具2、 用SQL命令,建立学生-课程数据库基本表:学生Student(学号Sno,姓名Sname,年龄Sage,性别Ssex,所在系Sdept);课程Course(课程号Cno,课程名Cname,先行课Cpno,学分Ccredit);选课SC(学号Sno,课程号Cno,成绩Grade);要求:1) 用SQL命令建库、建表和建立表间联系。2) 选择合适的数据类型。3) 定义必要的索引、列级约束和表级约束.四、 实验步骤:1、 运行NavicatforMySQL,然后进行数据库连接,进入到GUI界面;2、 利用图形界面建立基础表:student表的信息:字段名类型长度约束条件Snovarchar9非空、主键Snamevarchar20Ssexvarchar2

Sagesmallint6Sdeptvarchar20course表的信息:字段名类型长度约束条件Cnovarchar4非空、主键Cnamevarchar40Cpnovarchar4与course表中Cno关联Ccreditsmallint6sc表的信息:字段名类型长度约束条件Snovarchar9非空、主键、与student表中Sno外键关联,级联删除Cnovarchar4非空、主键、与course表中Cno外键关联Gradesmallint6(1)、连接数据库,在localhost中点击鼠标右键(如图1所示),点击“新建数据库”在弹出的窗口中输入数据库名称(如图2所示),然后单击“确定”,就完成了数据库的建立。

图1新建数据库 图2(2)、进入新建的数据库,在表的位置单击鼠标右击(如图3所示),点击“新建表”分别在“栏位”中输入上表所示的字段名、类型及长度中的数据(如图4、5、6所示),在“外键”中输入对应表的约束条件(如图)。图3新建表图4图3新建表图4student表图5course表图6sc表图5course表图6sc表图7course的约束条件图8sc的约束条件3、利用命令方式建表:、单击“查询”然后点击“新建查询”,在弹出的新建查询窗口中输入"CREATEDATABASEhuangqiangwe”命令,建立一个名为zhz的数据库;、通过“usehuangqiangwei”命令进入到huangqiangwei数据库中;、在查询编辑器窗口中分别输入命令:建立student表:CREATETABLEstudent(Snovarchar(10)PRIMARYKEY,Snamevarchar(20)UNIQUE,Ssexvarchar(2),SageSMALLINT,Sdeptvarchar(20))建立course表:CREATETABLEcourse(Cnovarchar(4)PRIMARYKEY,Cnamevarchar(40),Cpnovarchar(4),CcreditSMALLINT,FOREIGNKEY(Cpno)REFERENCEScourse(Cno))建立sc表:CREATETABLEsc(Snovarchar(10),Cnovarchar(4),

GradeSMALLINT,PRIMARYKEY(Sno,Cno),FOREIGNKEY(Sno)REFERENCESstudent(Sno)ONDELETECASCADEONUPDATECASCADE,FOREIGNKEY(Cno)REFERENCEScourse(Cno)ONDELETENOACTIONONUPDATECASCADE)、向student表中添加“Sentrance"列:ALTERTABLEstudentADDSentranceDATE、将student表中“Sentrance"的类型改为varcharALTERTABLEstudentMODIFYCOLUMNSentrancevarchar(4);(6、、删除student表中的“Sentrance"列:ALTERTABLEstudentDROPSentrance;五、实验结果1、student表:Bstudent©huangqiangwei(mysql)-麦文杵輛亘看 窗匚 帮助'寻人冃导 寻口口寻r艇向寻H网梧童看H申童看SnoSnameSageSdeptK〔Null)CNull)(Null)CNull)2、course表:Bcourse@hLianciqiangwe-i(my5ql)-表文件 耦 童看 疫匚 轄助…寻人冃导B寻口冃导筛远向导曲网rw13护魏Cno Cname Cpno Ccredit卜:Null]3、sc表:Bsc@hu3ngqiangwuei(mysql)-表文件 幕垢 « 奇匚 帮助二寻八冃寻B寻口冃寻 髓逛冃寻 H朋梧童看B甜辰fineCnoGrade-(Null}CNull)〔Null〕4、向student表中添加Sentrance列:丈件镭匠裔匚帮助■■导人向导寻口向导;策选向导H网艇看B护奪看Sno■■导人向导寻口向导;策选向导H网艇看B护奪看Sno(NuinSnarne(Null)Ssex(Null]SageSdept(Null]CNull)Sentrance(Null]5、student表的基本信息:国student@huangq^angwei(rnysglj-表口新崖H尿存心另存迦'甬漓b]栏桂弓括入栏磁西删除栏住必兰強書上貉#住栏僅逝 溺|SQL就名卿泾度允许空值【kSnovarchar100□aSnamevarchar200SseKvarchar20Sisgesmallint60Sdeptvarchar200*6、将Sentrance的数据类型改为varchar:六、总结:通过这次实验,要求掌握了数据库的定义以及基本表的建立,熟悉MySQL图形界面和SQL命令去创建、修改、删除基本表及设定表级完整性约束,巩固了SQL的一些常用的命令语句,为接下来的实验奠定基础。

实验二:数据库的建立和维护实验一、实验目的和要求熟练掌握使用SQL、Transact-SQL和SQLServer企业管理器向数据库输入数据、修改数据和删除数据的操作。二、 实验内容和原理1、基本操作实验通过MySQL的GUI工具Navicat,在学生-课程数据库的student、course和sc3个表中各输入若干条记录。要求记录不仅满足数据约束要求,还要有表间关联的记录。通过MySQL的GUI工具Navicat实现对学生-课程数据库的student、course和sc3个表中数据的插入、删除和修改操作。2、提高操作实验通过查询编辑器用SQL命令实现对学生-课程库的数据增加、数据删除和数据修改操作。三、 实验环境硬件:PC机软件:Windows操作系统、MySQLServer6.0和NavicatforMySQL9.0四、 算法描述及实验步骤1、基本操作实验运行“Navicat”双击“student"表,将学生的信息输入对应位置(如图1所示);双击“course"表,将课程信息输入对应位置(如图2所示);双击“sc”表,将选课信息输入对应位置(如图3所示);需要数据插入时,就在最后一条记录后输入一条记录。当鼠标点击其他行时,输入的记录会自动保存在表中。需要修改记录时,直接对表中已有记录的数据进行改动,用新值替换原有的值。需要删除记录时,先用鼠标单击要删除行的左边灰色方块,使该记录成为当前行,然后按〈Delete>键。为了防止误操作,MySQL会弹出一个警告框,要求用户确认删除操作,单击“确认”按钮即可删除记录。也可通过先选中一行或多行记录,然后再按〈Delete>键的方法一次删除多条记录。Bstudent©huangqiangwei(mys-qb-表文件歸每W茴匚帮助寻人冃寻r3寻曲寻.満选向导曲网慣看二表遗看£noSnsmeSsexS-age"ept311600S042罗靖20C£3116003043里22IS3116003&44郑智化勇20MA3116003047男21MA311&003045李殊立20留图1student表的数据rEcourse@huangqiangwei[mysql]-丟文祥械 嶺 裔匚 耕助'寻入向寻咛寻口向导 篇远向辱 H网解看£磊昏CnoCname■CpnoCcredit卜1加库52数学(Null)2信息報1576猜言(Null)7PASCAL6图2course表的数据Bsc©huarigqiangwei(mysql)-表文件 腿 匠 裔匚 帮助U寻入向导口导口向寻 篇选向寻SnoCnoGrade卜3116OO3M21&23116OO3M2292311&OO3O423833116003043231160030433SO3116003044239图3sc表的数据图4警告图标2、提高操作实验在查询编辑器中输入以下代码,实现相应的功能。将(学号:3116003034;姓名潢学辉;性别;男;所在系:IS;年龄:20)的学生信息插入到student表中,实现的代码如下:INSERTINTOstudent(Sno,Sname,Ssex,Sdept,Sage)VALUES('3116003034',黄学辉','男','IS',20);将student表中学号为3116003042的学生的所在系改为MA,实现代码如下:UPDATEstudentSETSdept='MA'WHERESno='3116003042'删除姓名为“陈会娟”的学生记录,实现代码如下:DELETEFROMstudentWHERESname='陈会娟’五、调试过程cjlO童询编辑器UFDkTEstadent.SET5dept=MAWHERESno=31160030424信皂鮭[SQL]UPDATEstudentSETSdept=MAWHERE£-no-=3116003042[Err]LO54-Unknown<olumn'MA1in'fieldli&i1提示操作失败,应将SETSdept=MA和WHERESno=3116003042改为:SETSdept='MA'和WHERESno='3116003042',然后再运行,提示修改成功,如下图:查询创建工具童询骗辑器JPDATE3fJde^tSET5dept=,MA,WHERE5rLO=F5LL600J042F4信息[SQL]UPDATEstudentSET£dept='MA'WHERE£no='3116003W證响的行;1时间:0.004ms六、实验结果1、向student表插入数据:_student@huangqiangv/ei(mys-ql)-恚 曹 ©huangqiangwe...曹 ©huangqiangwe...5-tudent©huangqiangwe...X—寻人冃寻Q寻口冃寻 筛逛向寻 H网梧童看S長芝匪S-noSnameSageSdeprt3116003034苗学挥20IS311600304220CS3116003043黑航男22CS3116003944郑智化男20MA3116003045立20IS3116003047董疆伟21MA311600304&^51女一21IS2、修改数据:SnoSnameSaexSageSd&pt3116003034堇学辉男20IS3116003042男20MA3116003043舅22CS-3116003044郑智化20MA311&003045李站女20IS311500304721MA311600304S龛娟21IS3、删除数据:SnoSnameSag?S-d&pt卜3116003024凿学辉男20IS3116003042舅20MA3116003043舅22匚&3116003044郑智化20MA3115003045李站女20IS311&OO304721MA七、总结通过这次实验,掌握了数据库的建立和维护的基本知识以及约束条件的作用,掌握使用MySQL图形界面和SQL命令对建立的基本表进行添加数据、修改数据、删除数据的操作,同时也巩固了SQL命令中的添加、修改、删除语句,为以后做数据库的维护奠定基础。实验三:数据库的查询实验一、实验目的和要求1、 掌握select语句的基本语法;2、 掌握子查询、连接查询的表示;3、 掌握select语句的GROUPBY、ORDERBY、LIMIT的作用和使用方法。二、 实验内容和原理1、 select语句的基本使用:查询student表中每个学生的所有数据;查询course和sc表的所有记录;查询年龄在20〜21岁之间的学生的姓名及年龄;统计学生总人数;查询信息系(IS)学生的姓名和性别;查询所有姓“黄”的学生的信息。2、 子查询的使用:查询与“罗靖”在同一个系的学生查询其他系中比CS系所有学生年龄都小的学生的姓名和年龄。3、 连接查询的使用:查询选修了3号课程且成绩在85分以上的学生的学号、姓名。查询所有学生的选课情况。4、 GROUPBY、ORDERBY和LIMIT子句的使用:查找student中男生和女生的人数;查找选修了2号课程的学生的学号及其成绩,查询结果按成绩降序排列;返回student表中的前3为同学的信息。三、 实验环境硬件:PC机软件:Windows操作系统、MySQLServer6.0和NavicatforMySQL9.0四、算法描述及实验步骤1、select语句的基本使用:(1)查询student表中每个学生的所有数据:SELECT*FROMstudent查询年龄在20〜21岁之间的学生的姓名及年龄:SELECTSname,SageFROMstudentWHERESageBETWEEN20AND21统计学生总人数:SELECTCOUNT(*)FROMstudent查询信息系(MA)学生的姓名和性别:SELECTSname,SsexFROMstudentWHERESdeptIN('MA')查询所有姓“黄”的学生的信息。SELECT*FROMstudentWHERESnameLIKE'黄%'2、 子查询的使用:查询与“罗靖”在同一个系的学生的姓名和所在系:SELECTSname,SdeptFROMstudentWHERESdeptIN(SELECTSdeptFROMstudentWHERESname=罗靖')查询其他系中比IS系所有学生年龄都小的学生的姓名和年龄SELECTSname,SageFROMstudentWHERESage<ALL(SELECTSageFROMstudentWHERESdept='IS')3、 连接查询的使用:(1)查询选修了3号课程且成绩在85分以上的学生的学号、姓名SELECTSno,SnameFROMstudentWHERESnoIN(SELECTSnoFROMscWHERECno='3')(2)查询有选课的学生的基本情况。SELECTstudent.Sno,student.Sname,course.Cno,course.CnameFROMstudent,sc,courseWHEREstudent.Sno=sc.SnoANDsc.Cno=course.Cno4、GROUPBY、ORDERBY和LIMIT子句的使用:查找student中男生和女生的人数:SELECTSsex,COUNT(Ssex)FROMstudentGROUPBYSsex查找选修了2号课程的学生的学号及其成绩,查询结果按成绩降序排列:SELECTSno,GradeFROMscWHERECno=2ORDERBYGradeDESC返回student表中的前3为同学的信息。SELECT*FROMstudentLIMIT3五、实验结果1、select语句的基本使用:(1)塔息 结果1範兄 聪SnoSnarneSsexSageS-depik311&003034萤学繹20IS3116003042罗靖男20MA311&003043昊鼬 男22C&311&003044郑智化男20MA31L&003045 李立婷 女 20E31L&003047 苗强伟 舅 21MA

信息结果1叛兄SnameSag?M■学辉2020郑智化202021(4)信息结免1術呪|般COUNTS卜6信息结果i卜罗靖(4)信息结免1術呪|般COUNTS卜6信息结果i卜罗靖牆化畀畀(5)盲息涪果1範兄&no-S-nameGsex£age=&dept3116003034堇学辉20IS311600304721MA2、子查询的使用:(1)UB 结果1転兄Sname£deptMA郑智化MAMA(2)3、连接查询的使用:(1)信息结臬1SnameSno►311600304231160030423、连接查询的使用:(1)信息结臬1SnameSno►31160030423116003042罗靖(2)£n&&nameCnarne►311&OO3O4SMfin;2数学311&0030433信息訣311&OO3D42罗站 1舞库31150030422数学3115003042冴靖3信息裁言息结果]豔兄唸4、GROUPBY、ORDERBY和LIMIT子句的使用:(1)(2)UBI结果1W烁SsexOOUNT0詞1男5信息结杲1珮鬆SnoGrade3115OO3W923116OO3W503116003044B9(3)WB结果]闕鬆Sno-S-nameSageSd-ept3U&OT3O34黄学辉男201呂3116003042罗靖20MA311600304322C£六、总结

通过这次实验,掌握了select语句的基本使用方法,对数据库中的数据进行查询方法有了进一步的了解,巩固了子查询和连接查询的使用以及GROUPBY、ORDERBY和LIMIT子句的使用,为以后做数据库数据的查询奠定基础。區MySQL5.6CGrrnnidiidLineClie-nl-Unkixdtinsertintocoursevalues(."11pLieryOK,1rahaffected[0u07sec)mysql>select*fromcourse;ICno|CnameICpna|Ccredit|O1ICno|CnameICpna|Ccredit|O111123456-7'统统枸営库UT说总黑结ital捱呷ft孝息作提拒SC级露整讒醫paNULLNULLNULL16NULL64I6I

禺I2dII42I4I9rawsinsetCO-00sec.;rnysql>irnysql>insertinta匚oursevalues( 12□s*anull323)a(B13a/pragram'a12\9);CjLieryOK^2ro^saffected!(0.06secjRecords:2Duplicates:0Warnings:GNULLNULL6NULLNULL12NULL11iprsinget(0.00sec)mysql>select*fromcourse;I { NULLNULL6NULLNULL12NULL11iprsinget(0.00sec)mysql>select*fromcourse;I { |r 1 4ICno||Crame |CprtoICcipeditI,p『agramCS|MySQL5.C匚LineClient-Unicc-dewsqI%mysql>inse『tintocoursevaiuesi'123'as7rnj11,23J?ucryW;h2「ow#affected(0.06see)RecardE!2E<jp11cates:0Warninqs:0说明:可以一次插入多条记录实验四:数据库的视图操作实验一、实验目的和要求1、熟悉视图的概念和作用;2、掌握视图的创建方法;3、掌握如何查询和修改视图。二、实验内容和原理1、创建视图:(1) 创建zhz数据库上的视图student_view,视图包含学号、姓名、系;(2) 创建zhz数据库上的视图sc_view,视图包含sc表的全部列。2、 查询视图:(1) 从视图sc_view中查看选修了3号课程的学生的学号;(2) 从视图student_view中查询姓名为“李立婷”的学生所在的系。3、 更新视图:(1) 向视图sc_view中插入一行数据:3116003045,5,87;(2) 将视图student_view中学号=3116003043的学生的系改为MA;(3) 删除视图student_view中学号=3116003042的学生的信息。4、 删除视图:(1)删除视图sc_view;5、 在界面工具中操作视图三、实验环境硬件:PC机软件:Windows操作系统、MySQLServer6.0和NavicatforMySQL9.0四、算法描述及实验步骤1、创建视图:(1)创建zhz数据库上的视图student_view,视图包含学号、姓名、系:CREATEVIEWstudent_viewASSELECTSno,Sname,SdeptFROMstudent(2)创建zhz数据库上的视图sc_view,视图包含sc表的全部列:CREATEVIEWsc_viewASSELECT*FROMsc2、 查询视图:从视图sc_view中查看选修了3号课程的学生的学号:SELECTSnoFROMsc_viewWHERECno='3'从视图student_view中查询姓名为“李立婷”的学生所在的系:SELECTSname,SdeptFROMstudent_viewWHERESname='王敏'3、 更新视图:向视图sc_view中插入一行数据:3116003045,5,87;INSERTINTOsc_viewVALUES('3116003045','5','87')将视图student_view中学号=3116003043的学生的系改为MA;UPDATEstudent_viewSETSdept='MA'WHERESno='3116003043'删除视图student_view中学号=3116003042的学生的信息;DELETEFROMstudent_viewWHERESno='3116003042'4、 删除视图:删除视图sc_view;DROPVIEWsc_view5、 在界面工具中操作视图(1)创建视图:选择zhz数据库,单击“视图”图标,单击“新建视图”,单击“视图创建工具”双击“student"表,选择“Sno,Sname,Sdept”然后单击“保存”输入视图名“student_view”单击“确定"按钮。F]|:LaEarrii-Lianichvih・F]|:LaEarrii-Lianichvih・ furIfSQL丈伴⑴MW收BE義电)LflUi旨口®JffflbW件谊衰怜••…孚査粧备T:3£标題@dhi3E(luualJhnst)+立件©瀰②格式①査若⑨stif止L3SSA口尿存0另茬为|锂预寛屯神W巴乩逢二貝越驗皿珈=Etwit|-X:-E.--08Sno-rHema屬Sn«itqjiJifcrfailnn_3rkenaID弘afil哄卩圈Sdcpt-&<a=t视图名辎入初图名Etudent_view确走 取消(2) 查询视图:双击视图名,可直接查看视图中的数据(3) 删除视图:在视图窗体中,选择要删除的视图,点击鼠标右键,选择“删除视图”然后单击“删除”.■NavicatforMySQL文件迥亘寿QO蝕決⑥_具1工1商匚世)SAfcfH)曹y—EHE—■、迄搭 言迢用户去 1视詡匕港 笙扛开视园斧础-视囹绳新埶囹锂曲陰視囹耐导出卩4-4^lOMhost-■(::iniormation_Echems…也.maragemyrnanage“-眉rnysqlEltestJ-zhztE表t--ffdi视囹\-h画数[…密判牛i-a杳向;■■-撐矛L•屈m汩scviev/student_vie^iA打幵巫囹铃浚计呗图y18陰呱曰**寻出问导岂就幵视囹快捷方弍”吊一新五、实验结果1、创建视图:(1)百£tudent_yiew©liuangqisngwei[m/sql)-规囹

©huangqiangwe,,,X处studen-t_vi&w@hu

文件镌登春裔匚帮助钟尋㈡伺寻,命选向寻 B网音3尹宣看SnoSnameSdept►3116003034黄学挥IS3116003042MA3116003043CS3116003044郑智化MA3116003045李站苗3116003047MA(2)Esc@huangqidngweifnnysql)-表文样 堀辑 嘩 窗匚 誓勘4寻"导宙寻口向导;鑄选向导 曲网ww目三SnoCnoGrade卜31160030421311&0030422311&O03O42388.311&O03O432恥311&O03O43330311&003044239-2、查询视图:cj23信息 结売1咼呪I嵯S-name&dept1£3、更新视图:(1)插入_sc@huangqi^ngwei(mysql}-表品student_view©huangqi...X二h©huangqiangwei(tny...x文禅第垢W窗匚帮助■“寻入向导■"寻口口导-髓逛自导 曲网梧童看匡洋童看£noCnoGrade►311&003042192311600304229231160030423SB3116003043290311&00304338031160030442的31160030455S7修改studentOhuangqiangwei[mys-qI)-麦文件編雋直看 裔匚 秤朋二尋人向导□爭二间寻 鑄选向寻亜网梧童音13券童看SnoSnameSsexS-ageSdept卜2115003024萤学辉男20IS311600304220MA311&OO3O4322MA3115003044郑智化20MA3115003045女20IS3116003047董强祎畀21MA删除

寻口向寻 肾远向寻文件翔彊 奇匚 帮助寻口向寻 肾远向寻SncS-name£-5ex&age-Sdept►31L&O03O34萤学辉20IS31L&O03O43畀22MA31L&003044郑智化畀20MA31L&OT3O4520IS31L&O03O47畀21MA—导入耳导网格章看5、在界面工具中操作视图N5tudent_view@hjangqiangwei(mysql)-视厨文件第揖童看奇匚帮助馆导口冃寻 筛谨向导 H网梧匠S題£noSnarrie&dept►31L&003034萤学挥IS311&003043WA311&003D44郑智化WA311&003-045IS311&003-047MA六、总结通过这次实验,掌握了视图的创建、查询、修改以及删除等基本操作;了解了视图与基本表的区别,视图是一个虚表,数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中;巩固了视图的基本概念及其作用。实验五:触发器、存储过程操作实验一、实验目的和要求1、掌握存储过程创建和调用的方法;2、 掌握MySQL中程序片段的组成;3、 掌握触发器的使用方法。二、实验内容和原理1、 存储过程:创建存储过程,使用student表中的学生人数来初始化一个局部变量,并调用这个存储过程;创建存储过程,比较两学生的年龄,若前者比后者大就输出0,否则输出1。2、 触发器:创建触发器,在student表中删除学生信息的同时将sc表中该学生的选课信息删除,以确保数据的完整性;假设coursel表和course表的结构和内容都相同,在course上创建一个触发器,如果添加一门新的选修课程,该课程也会被添加到course1表中。定义一个BEFORE行级触发器,为teacher表定义完整性规则,“向teacher插入教授的信息时,工资不得低于4000元,如果低于4000元,则自动将其更改为4000元”。删除teacher表上的触发器teacher_Income。三、实验环境硬件:PC机软件:Windows操作系统、MySQLServer6.0和NavicatforMySQL9.0四、算法描述及实验步骤1、存储过程:(1)创建存储过程,使用student表中的学生人数来初始化一个局部变量,并调用这个存储过程:delimiter$$CREATEPROCEDURETEST(OUTnumber1INTEGER)BEGINDECLAREnumber2INTEGER;SETnumber2=(SELECTCOUNT(*)FROMstudent);SETnumber1=number2;END$$Delimiter;调用该存储过程:CALLTEST(@number)查看结果:SELECT@number(2)创建存储过程,比较两学生的年龄,若前者比后者大就输出0,否则输出1:delimiter$$CREATEPROCEDURECOMPA(INSno1varchar(10),INSno2varchar(9),OUTBJINTEGER)BEGINDECLARESR1,SR2FLOAT(10);SELECTSageINTOSR1FROMstudentWHERESno=Sno1;SELECTSageINTOSR2FROMstudentWHERESno=Sno2;IFSno1>Sno2THENSETBJ=0;ELSESETBJ=1;ENDIF;END$$Delimiter;调用该存储过程:CALLCOMPA('3116003044','3116003045',@BJ);查看结果:SELECT@BJ2、触发器:(1)创建触发器,在student表中删除学生信息的同时将sc表中该学生的选课信息删除,以确保数据的完整性:CREATETRIGGERDELETE_SMAFTERDELETEONstudentFOREACHROWDELETEFROMscWHERESno=OLD.Sno删除student表中的一行数据,然后查看sc表的变化:DELETEFROMstudentWHERESno='3116003043'观察sc表的变化;(2)假设student1表和student表的结构和内容都相同,在student上创建一个触发器,如果添加一个学生的信息,该信息也会被添加到student1表中:delimiter$$CREATETRIGGERstudent_InsAFTERINSERTONstudentFOREACHROWBEGININSERTINTOstudent1VALUES(new.Sno,new.Sname,new.Ssex,new.Sage,new.Sdept);END$$Delimiter;向student表中添加一条新信息('2008006','杨过','男',19,'IS'):INSERTINTOstudentVALUES('2008006',杨过','男',19,'IS');观察student1表的变化;(3) 定义一个BEFORE行级触发器,为teacher表定义完整性规则“插入教授的信息时,工资不得低于4000元,如果低于4000元,则自动改为4000元”:CREATETRIGGERteacher_IncomeBEFOREINSERTONteacherFOREACHROWBEGINIF(new.Job=教授')AND(new.Incomev4000)THENSetnew.Income=4000;ENDIF;END;向teacher表中添加一条新信息('3116003037','郑静美','女','教授',3500):INSERTINTOteacherVALUES('10006',林涛','男','教授',3500)观察teacher表的结果;(4) 删除teacher表上的触发器teacher_Income。DROPTRIGGERteacher_Income;五、调试过程1、[SQL]CREATETRIGGERteacherjncorn曰REFOREINSERTONteacherFOREACHROWBEGINIFfnew.Job= AND.:new.Income<4000]THENnevx.Incom曰=4000;ENDIF;END;[Err]1064-Youhaveanerrorinyour£QLsyntaxjcheckthe-manualthatcorrespondstoyourMySQL&ervErversionfortherightsyntaxtousenear'.Income=4000;ENPJF;END'atlineb提示出现语法错误,应在“new.Income=4000;”前添加SET,然后再运行:信息桶兄岭證厢的行:0▲时0.056ms2、提示出现语法错误,应在“DROPTRIGGERteacher_IncomeONteacher”中的“ONteacher”删除,然后再运行:信息那兄鮭[SQL]DROPTRIGGER,teacherJncome?罢艮咆的齐:0时间0.007ms六、实验结果实验前:

SnoSnameSageS-deptk3116003034羽学辉男20l£3116003042号靖男20MA3116003043舅22C&311

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论