上机实验指导-实验内容和思考参考答案-SQL-Server-2005实践教程学习_第1页
上机实验指导-实验内容和思考参考答案-SQL-Server-2005实践教程学习_第2页
上机实验指导-实验内容和思考参考答案-SQL-Server-2005实践教程学习_第3页
上机实验指导-实验内容和思考参考答案-SQL-Server-2005实践教程学习_第4页
上机实验指导-实验内容和思考参考答案-SQL-Server-2005实践教程学习_第5页
已阅读5页,还剩38页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

数据库技术与应用实践教程-SQLServer2005上机实验指导(实验思考)—参考答案实验1:安装及管理工具使用略。实验2:SQLServer数据库的管理二、实验内容及步骤4.单击“新建查询”打开查询设计器窗口,在查询设计器窗口中使用Transact-SQL语句CREATEDATABASE创建studb数据库。然后通过系统存储过程sp_helpdb查看系统中的数据库信息。CREATEDATABASEstudbON(NAME=studb_dat,FILENAME='C:\DataBase\studb.mdf')EXECsp_helpdb5.在查询设计器中使用Transact-SQL语句ALTERDATABASE修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB。ALTERDATABASEstudbMODIFYFILE(NAME=studb_data,SIZE=5MB,MAXSIZE=20MB,FILEGROWTH=1MB)6.在查询设计器中为studb数据库增加一个日志文件,命名为studb_Log2,大小为5MB,最大文件大小为10MB。ALTERDATABASEstudbADDLOGFILE(NAME=studb_log2,FILENAME=studb_log2.ldf,SIZE=5MB,MAXSIZE=10MB)8.使用Transact-SQL语句DROPDATABASE删除student_db数据库。DROPDATABASEstudent_db实验3SQLServer数据表的管理二、实验内容及步骤5.使用Transact-SQL语句CREATETABLE在studentsdb数据库中创建grade表。CREATETABLEgrade( [学号][char](4)NULL, [课程编号][char](4)NULL, [分数][char](5)NULL)ON[PRIMARY]8.使用Transact-SQL语句INSERTINTO...VALUES向studentsdb数据库的grade表插入数据:学号为0004,课程编号为0001,分数为80。INSERTgradeVALUES('0004','0001','80')9.使用Transact-SQL语句ALTERTABLE修改curriculum表的“课程编号”列,使之为非空。ALTERTABLEcurriculumALTERCOLUMN课程编号NOTNULL10.使用Transact-SQL语句ALTERTABLE修改grade表的“分数”列,使其数据类型为real。ALTERTABLEgradeALTERCOLUMN分数real11.使用Transact-SQL语句ALTERTABLE修改student_info表的“姓名”列,使其列名为“学生姓名”,数据类型为vachar(10),非空。altertablestudent_infoadd学生姓名varchar(10)NOTNULL;updatestudent_infoset学生姓名=姓名;altertablestudent_infodropcolumn姓名;12.分别使用SQLServer管理平台和Transact-SQL语句DELETE删除studentsdb数据库的grade表中学号为0004的成绩记录。DELETEgradeWHERE学号='0004'13.使用Transact-SQL语句UPDATE修改studentsdb数据库的grade表中学号为0003、课程编号为0005、分数为90的成绩记录。UPDATEgradeSET分数=90WHERE学号='0003'and课程编号='0005'14.使用Transact-SQL语句ALTER...ADD为studentsdb数据库的grade表添加一个名为“备注”的数据列,其数据类型为VARCHAR(20)。ALTERTABLEgradeADD备注VARCHAR(20)NULL15.分别使用SQLServer管理平台和Transact-SQL语句DROPTABLE删除studentsdb数据库中grade表。DROPTABLEstudentsdb.dbo.grade三、实验思考1.使用Transact-SQL语句删除在studentsdb数据库的grade表添加的“备注”数据列。ALTERTABLEgradeDROPCOLUMN备注实验4数据查询二、实验内容及步骤2.在studentsdb数据库中使用SELECT语句进行基本查询。(1)在student_info表中,查询每个学生的学号、姓名、出生日期信息。SELECT学号,姓名,出生日期FROMstudent_info(2)查询学号为0002的学生的姓名和家庭住址。SELECT姓名,家庭住址FROMstudent_infoWHERE学号='0002'(3)找出所有男同学的学号和姓名。SELECT学号,姓名FROMstudent_infoWHERE性别='男'3.使用SELECT语句进行条件查询(1)在grade表中查找分数在80~90范围内的学生的学号和分数。SELECT学号,分数FROMgradeWHERE(分数BETWEEN80AND90)(2)在grade表中查询课程编号为0003的学生的平均分。SELECTavg(分数)AS平均分FROMgradeWHERE(课程编号='0003')(3)在grade表中查询学习各门课程的人数。SELECT课程编号,COUNT(*)AS人数FROMgradeGROUPBY课程编号(4)将学生按出生日期由大到小排序。SELECT*FROMstudent_infoORDERBY出生日期DESC(5)查询所有姓“张”的学生的学号和姓名。SELECT*FROMstudent_infoWHERE姓名LIKE'张%'4.对student_info表,按性别顺序列出学生的学号、姓名、性别、出生日期及家庭住址,性别相同的按学号由小到大排序。SELECT学号,姓名,性别,出生日期,家庭住址FROMstudent_infoORDERBY性别,学号5.使用GROUPBY查询子句列出各个学生的平均成绩。SELECT学号,SUM(分数)/COUNT(*)AS平均成绩FROMgradeGROUPBY学号6.使用UNION运算符将student_info表中姓“张”的学生的学号、姓名与curriculum表的课程编号、课程名称返回在一个表中,且列名为u_编号、u_名称,如图1-8所示。图1-8联合查询结果集SELECT学号ASu_编号,姓名ASu_名称FROMstudent_infoWHERE(姓名LIKE'张%')UNIONSELECT课程编号ASu_编号,课程名称ASu_名称FROMcurriculum7.嵌套查询

(1)在student_info表中查找与“刘卫平”性别相同的所有学生的姓名、出生日期。SELECT姓名,出生日期FROMstudent_infoWHERE性别=(SELECT性别FROMstudent_infoWHERE姓名='刘卫平')(2)使用IN子查询查找所修课程编号为0002、0005的学生学号、姓名、性别。SELECT学号,姓名,性别FROMstudent_infoWHEREstudent_info.学号IN(SELECT学号FROMgradeWHERE课程编号IN('0002','0005'))

(3)列出学号为0001的学生的分数比0002号的学生的最低分数高的课程编号和分数。SELECT课程编号,分数FROMgradeWHERE学号='0001'AND分数>ANY(SELECT分数FROMgradeWHERE学号='0002')

(4)列出学号为0001的学生的分数比学号为0002的学生的最高成绩还要高的课程编号和分数。SELECT课程编号,分数FROMgradeWHERE学号='0001'AND分数>(SELECTMAX(分数)FROMgradeWHERE学号='0002')8.连接查询(1)查询分数在80~90范围内的学生的学号、姓名、分数。SELECTstudent_info.学号,姓名,分数FROMstudent_info,gradeWHEREstudent_info.学号=grade.学号AND分数BETWEEN80AND90(2)查询学习“C语言程序设计”课程的学生的学号、姓名、分数。SELECTstudent_info.学号,姓名,分数FROMstudent_infoINNERJOINgradeONstudent_info.学号=grade.学号INNERJOINcurriculumON课程名称='C语言程序设计'

(3)查询所有男同学的选课情况,要求列出学号、姓名、课程名称、分数。SELECTa.学号,a.姓名,c.课程名称,b.分数FROMstudent_infoaINNERJOINgradebONa.学号=b.学号INNERJOINcurriculumcONb.课程编号=c.课程编号WHERE(a.性别='男')(4)查询每个学生的所选课程的最高成绩,要求列出学号、姓名、课程编号、分数。SELECTa.学号,c.姓名,a.课程编号,a.分数FROMgradeaINNERJOINstudent_infocONa.学号=c.学号WHERE(a.分数=(SELECTMAX(b.分数)FROMgradebWHEREb.学号=a.学号))(5)查询所有学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的学生的总成绩为空。提示:使用左外连接。SELECTa.学号,a.姓名,b.总成绩FROMstudent_infoaLEFTOUTERJOIN(SELECT学号,SUM(分数)AS总成绩FROMgradeGROUPBY学号)bONa.学号=b.学号(6)为grade表添加数据行:学号0004、课程编号为0006、分数为76。查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数,curriculum表中没有的课程列值为空。提示:使用右外连接。INSERTINTOgrade(学号,课程编号,分数)VALUES('0004','0006',76)SELECTa.课程编号,a.课程名称,b.选修人数FROMcurriculumaRIGHTOUTERJOIN(SELECT课程编号,COUNT(*)AS选修人数FROMgradeGROUPBY课程编号)bONa.课程编号=b.课程编号三、实验思考1.查询所有没有选修课程的学生信息,返回结果包括学号、姓名、性别。SELECT学号,姓名,性别FROMstudent_infoWHERE(学号NOTIN(SELECT学号FROMgrade))2.在student_info表和grade表之间实现交叉连接。SELECTa.学号,a.姓名,a.性别,b.课程编号,b.分数FROMstudent_infoaCROSSJOINgradeb3.查询每个学生的所选课程的成绩,并列出学号生成分组汇总行(总成绩)和明细行(各课成绩)。提示:使用SELECT语句的COMPUTE选项。SELECT学号,分数FROMgradeORDERBY学号COMPUTESUM(分数)BY学号4.在查询语句中SELECT、FROM和WHERE选项分别实现什么运算?投影、选择、自然连接5.在查询的FROM子句中实现表与表之间的连接有哪几种方式?对应的关键字分别是什么?有三种:内连接(INNERJOIN)、外连接(LEFTOUTERJOIN、RIGHTOUTERJOIN、FULLOUTERJOIN)和交叉连接(CROSSJOIN)。实验5:索引与视图二、实验内容及操作步骤1.分别使用SQLServer管理平台和Transact-SQL语句为studentsdb数据库的student_info表和curriculum表创建主键索引。CREATEUNIQUECLUSTEREDINDEX[PK_curriculum]ON[curriculum]([课程编号])ON[PRIMARY]9.在studentsdb数据库中,以student_info表为基础,使用SQLServer管理平台建立名为v_stu_i的视图,使视图显示学生姓名、性别、家庭住址。10.在studentsdb数据库中,使用Transact-SQL语句CREATEVIEW建立一个名为v_stu_c的视图,显示学生的学号、姓名、所学课程的课程编号,并利用视图查询学号为0003的学生情况。CREATEVIEWv_stu_cASSELECTa.学号,a.姓名,b.课程编号FROMstudent_infoaINNERJOINgradebONa.学号=b.学号SELECT*FROMv_stu_cWHERE(学号='0003')11.基于student_info表、curriculum表和grade表,建立一个名为v_stu_g的视图,视图中具有所有学生的学号、姓名、课程名称、分数。使用视图v_stu_g查询学号为0001的学生的所有课程与成绩,如图1-9所示。图1-9学号为0001的学生的视图信息CREATEVIEWv_stu_gASSELECTa.学号,a.姓名,c.课程名称,b.分数FROMstudent_infoaINNERJOINgradebONa.学号=b.学号INNERJOINcurriculumcONb.课程编号=c.课程编号SELECT*FROMv_stu_gWHERE学号=’000112.分别使用SQLServer管理平台和Transact-SQL语句修改视图v_stu_c,使之显示学号、姓名、每个学生所学课程数目。ALTERVIEWv_stu_cASSELECTa.学号,a.姓名,COUNT(*)AS课程数目FROMstudent_infoaINNERJOINgradebONa.学号=b.学号GROUPBYa.学号,a.姓名13.使用Transact-SQL语句ALTERVIEW修改视图v_stu_i,使其具有列名学号、姓名、性别。ALTERVIEWv_stu_i(学号,姓名,性别)ASSELECT学号,姓名,性别FROMstudent_info14.使用系统存储过程sp_rename将视图v_stu_i更名为v_stu_info。sp_renamev_stu_i,v_stu_info21.利用视图v_stu_i为student_info表添加一行数据:学号为0015、姓名为陈婷、性别为女。INSERTINTOv_stu_iVALUES(‘0015’,’陈婷’,’女’)22.利用视图v_stu_i删除学号为0015的学生记录。DELETEFROMv_stu_iWHERE(学号='0015')23.利用视图v_stu_g修改姓名为刘卫平的学生的高等数学的分数为84。UPDATEv_stu_gSET分数=84WHERE姓名='刘卫平'AND课程名称='高等数学'24.使用Transact-SQL语句DROPVIEW删除视图v_stu_c和v_stu_g。DROPVIEWv_stu_cDROPVIEWv_stu_g实验6:数据完整性二、实验内容和操作步骤1.为studentsdb数据库创建一个规则,限制所输入的数据为7位0~9的数字。(1)复制student_info表命名为stu_phone,在stu_phone表中插入一列,列名为“电话号码”。完成以下代码实现该操作。SELECT*INTOstu_phoneFROMstudent_infoALTERTABLEstu_phoneADD电话号码CHAR(7)NULLstu_phone表结构如图1-10所示。图1-10stu_phone表结构(2)创建一个规则phone_rule,限制所输入的数据为7位0~9的数字。实现该规则的代码为CREATERULEphone_ruleAS@phoneLIKE'[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'(3)使用系统存储过程sp_bindrule将phone_rule规则绑定到stu_phone表的“电话号码”列上。实现该操作的代码为sp_bindrulephone_rule,'stu_phone.电话号码'(4)输入以下代码,进行一次插入操作:INSERTINTOstu_phone(学号,姓名,电话号码)VALUES('0009','王国强','1234yyy')产生以下出错信息:消息513,级别16,状态0,第1行列的插入或更新与先前的CREATERULE语句所指定的规则发生冲突。该语句已终止。冲突发生于数据库'studentsdb',表'dbo.stu_phone',列'电话号码'。语句已终止。试分析:为什么会产生该出错信息?如果要实现插入操作,应修改INSERTINTO语句中的哪个值?phone_rule规则能否对其他操作(如DELETE)进行规则检查?2.创建一个规则stusex_rule,将其绑定到stu_phone表的“性别”列上,保证输入的性别值只能是“男”或“女”。CREATERULEstusex_ruleAS@sexin('男','女')sp_bindrulestusex_rule,'stu_phone.性别'3.使用系统存储过程sp_help查询stusex_rule规则列表,使用sp_helptext查询stusex_rule规则的文本,使用sp_rename将stusex_rule规则更名为stu_s_rule。sp_helpstusex_rulesp_helptextstusex_rulesp_renamestusex_rule,stu_s_rule4.删除stu_s_rule规则。DROPRULEstu_s_rule5.在studentdb数据库中,建立日期、货币和字符等数据类型的默认对象。(1)在查询设计器中,完成以下代码,创建默认对象df_date、df_char、df_money。--创建日期型默认对象df_dateCREATEDEFAULTdf_dateAS'2006-GO--创建字符型默认对象df_charCREATEDEFAULTdf_charAS'unknown'GO--创建货币型默认对象df_moneyCREATEDEFAULTdf_moneyAS$100GO(2)输入以下代码,在studentsdb数据库中创建stu_fee数据表。CREATETABLEstu_fee(学号char(10)NOTNULL,姓名char(8)NOTNULL,学费money,交费日期datetime,电话号码char(7))表stu_fee的数据结构如图1-11所示。图1-11stu_fee的数据结构(3)使用系统存储过程sp_bindefault将默认对象df_date、df_char、df_money分别绑定在stu_fee表的“学费”、“交费日期”、“电话号码”列上。sp_binderfaultdf_money,'stu_fee.学费'GOsp_bindefaultdf_date,'stu_fee.交费日期'GOsp_bindefaultdf_char,'stu_fee.电话号码'GO(5)完成以下代码解除默认对象df_char的绑定,并删除之。sp_unbindefault'stu_fee.电话号码'DROPDEFAULTdf_char7.在studentsdb数据库中用CREATETABLE语句创建表stu_con,并同时创建约束。(1)创建表的同时创建约束。表结构如图1-12所示。图1-12要创建的表的结构CREATETABLEstu_con( 学号char(4)NOTNULL, 姓名char(8)NULL, 性别char(2)NULL, 出生日期datetimeNULL, 家庭住址nvarchar(50)NULL)约束要求如下:将学号设置为主键(PRIMARYKEY),主键名为pk_sid。CREATEUNIQUECLUSTEREDINDEX[pk_sid]ON[stu_con]([学号])WITHDROP_EXISTINGON[PRIMARY]为姓名添加唯一约束(UNIQUE),约束名为uk_name。CREATEUNIQUEINDEX[uk_name]ON[stu_con]([姓名])WITHDROP_EXISTINGON[PRIMARY]为性别添加默认约束(DEFAULT),默认名称为df_sex,其值为“男”。CREATEDEFAULTdf_sexAS'男'sp_bindefaultdf_sex,'stu_con.性别'④为出生日期添加属性值约束(CHECK),约束名为ck_bday,其检查条件为:出生日期>'1988-ALTERTABLEstu_conWITHNOCHECKADDCONSTRAINTck_bdayCHECK(出生日期>'1988-1(3)使用ALTERTABLE语句的DROPCONSTRAINT参数项在查询设计器中删除为stu_con表所建的约束。ALTERTABLEstu_conDROPCONSTRAINTck_bday9.在查询设计器中,为studentsdb数据库的grade表添加外键约束(FOREIGNKEY),要求将“学号”设置为外键,参照表为student_info,外键名称为fk_sid。ALTERTABLEgradeADDCONSTRAINT Fk_sidFOREIGNKEY (学号)REFERENCESstudent_info(学号)(1)使用系统存储过程sp_help查看grade表的外键信息。sp_helpfk_sik(3)使用查询设计器删除grade表的外键fk_sid。Altertablegradedropconstraintfk_sid实验7:Transact-SQL程序设计二、实验内容和操作步骤3.使用SET命令将查询结果集记录数目赋值给int型局部变量@row。给下面代码中的划线处填上适当的内容,以完成上述操作。DECLARE@rowsintSET@rows=(SELECTCOUNT(*)FROMgrade)SELECT@rows--显示@rows的值5.在studentsdb数据库的student_info表中,以“性别”为分组条件,分别统计男生和女生人数。DECLARE@malein,@femaleintSET@male=(SELECTCOUNT(*)Fromstudent_infoWHERE性别=’男’)SET@female=(SELECTCOUNT(*)Fromstudent_infoWHERE性别=’女’)SELECT@male,@female6.在grade表中,使用适当函数找出“高等数学”课程的最高分、最低分和平均分。declare@grademaxdecimal,@grademindecimal,@gradeavgdecimalset@grademax=(selectmax(分数)fromgradeINNERJOINCURRICULUMONGRADE.课程编号=CURRICULUM.课程编号wherecurriculum.课程名称='高等数学')set@grademin=(selectmin(分数)fromgradeINNERJOINCURRICULUMONGRADE.课程编号=CURRICULUM.课程编号wherecurriculum.课程名称='高等数学')set@gradeavg=(selectavg(分数)fromgradeINNERJOINCURRICULUMONGRADE.课程编号=CURRICULUM.课程编号wherecurriculum.课程名称='高等数学')select@grademaxas'高等数学的最高分',@grademinas'高等数学的最低分',@gradeavgas'高等数学的平均分'7.定义一个datetime型局部变量@studate,以存储当前日期。计算student_info表中的学生的年龄,并显示学生的姓名、年龄。在以下代码的划线部分填入适当内容,以实现上述功能。DECLARE@studatedatetimeSET@studate=getdate()--给@studate赋值为当前日期SELECT姓名,Datediff(@studate)-year(出生日期)AS年龄FROMstudent_info9.在局部变量@stu_id中存储了学号值。编写代码查询学号为0001的学生的各科平均成绩,如果平均分>=60则显示“你的成绩及格了,恭贺你!!”,否则显示“你的成绩不及格”。IF((SELECTAVG(分数)FROMgradewhere学号='0001')<60)PRINT'你的成绩不及格'ELSEPRINT'你的成绩及格了,恭贺你!!'10.运行以下代码段,写出运行的结果。DECLARE@counterintSET@counter=1WHILE@counter<10BEGINSELECT'@counter的值现在为:'+CONVERT(CHAR(2),@counter)SET@counter=@counter+1END11.查询grade表。如果分数大于等于90,显示A;如果分数大于等于80小于90,显示B;如果分数大于等于70小于80,显示C;如果分数大于等于60小于70,显示D;其他显示E。在以下代码的划线部分填入适当内容完成上述功能。SELECT学号,分数,等级=CASEWHEN分数>=90THEN'A'WHEN分数>=80AND分数<90THEN'B'WHEN分数>=70AND分数<80THEN'C'WHEN分数>=60AND分数<70THENDELSE'E'ENDFROMgrade12.计算grade表的分数列的平均值。如果小于80,则分数增加其值的5%;如果分数的最高值超过95,则终止该操作。在以下代码划线处填入适当的内容以完成上述功能。WHILE(SELECTAVG(分数)FROMgrade)<80BEGINUPDATEgradeSET分数=分数*1.05if(SELECTMAX(分数)FROMgrade)>95BREAKELSECONTINUEEND13.编写代码计算并显示@n=1+2+3+…+20。DECLARE@nint,@counterintSELECT@n=0,@counter=1WHILE@counter>0BEGINSET@n=@n+@counterSET@counter=@counter+1IF@counter<=20CONTINUEELSEBEGINPRINT'@n=1+2+3+…+20的值为:'PRINT@nBREAKENDEND14.编写代码计算并显示1~100之间的所有完全平方数。例如,81=92,则称81为完全平方数。declare@iint,@jintset@i=0set@j=1while(@j<=100)beginset@i=@j*@jprint@i/*打出素数*/set@j=@j+1end15.计算1~100以内的所有素数。declare@iintdeclare@nintset@n=3print2while@n<=100beginselect@i=2while(@i<@n/2)beginif(@n/@i*@i!=@n)beginselect@i=@i+1continueendelsebreakendif(@i>=@n/2)beginprint@nendselect@n=@n+2end16.在studentsdb数据库中,使用游标查询数据。(1)打开查询设计器,声明一个stu_cursor游标,要求返回student_info表中性别为“男”的学生记录,且该游标允许前后滚动和修改。DECLAREstu_cursorCURSORGLOBALSCROLLDYNAMICFORSELECT*FROMstudent_infoWHERE性别=’男’FORUPDATEOF出生日期(2)打开stu_cursor游标。OPENstu_cursor(3)获取并显示所有数据。FETCHNEXTFROMstu_cursor/*取第一个数据行*/WHILE@@fetch_status=0/*检查@@fetch_status是否还有数据可取*/BEGINFETCHNEXTFROMstu_cursorEND(4)关闭该游标。CLOSEstu_cursor17.使用游标修改数据。(1)打开stu_cursor游标。(2)将姓马的男同学的出生日期的年份加1。(3)关闭stu_cursor游标。OPENstu_cursorFETCHNEXTFROMstu_cursor UPDATEstudent_infoSET出生日期=Dateadd(yy,1,出生日期)WHERECURRENTOFstu_cursorCLOSEstu_cursor实验8:存储过程和触发器二、实验内容及步骤3.使用studentsdb数据库中的student_info表、curriculum表、grade表。(1)创建一个存储过程stu_grade,查询学号为0001的学生的姓名、课程名称、分数。(2)执行存储过程stu_grade,查询0001学生的姓名、课程名称、分数。(3)使用系统存储过程sp_rename将存储过程stu_grade更名为stu_g。CREATEPROCEDUREstu_gradeASSELECTa.学号,c.课程名称,b.分数FROMstudent_infoaINNERJOINgradebONa.学号=b.学号INNERJOINcurriculumcONb.课程编号=c.课程编号WHERE(a.学号='0001')EXECstu_gradesp_renamestu_grade,stu_g4.使用student_info表、curriculum表、grade表。(1)创建一个带参数的存储过程stu_g_p,当任意输入一个学生的姓名时,将从3个表中返回该学生的学号、选修的课程名称和课程成绩。(2)执行存储过程stu_g_p,查询“刘卫平”的学号、选修课程和课程成绩。(3)使用系统存储过程sp_helptext,查看存储过程stu_g_p的文本信息。CREATEPROCEDUREstu_g_p@stu_namevarchar(8)ASSELECTa.学号,c.课程名称,b.分数FROMstudent_infoaINNERJOINgradebONa.学号=b.学号INNERJOINcurriculumcONb.课程编号=c.课程编号WHERE(a.姓名=@stu_name)EXECstu_g_p‘刘卫平’sp_helptextstu_g_p5.使用student_info表。(1)创建一个加密的存储过程stu_en,查询所有男学生的信息。(2)执行存储过程stu_en,查看返回学生的情况。(3)使用Transact-SQL语句DROPPROCEDURE删除存储过程stu_en。CREATEPROCEDUREstu_enWITHENCRYPTIONASSELECT*FROMstudent_infoWHERE性别='男'EXECstu_enDROPPROCEDUREstu_en6.使用grade表。(1)创建一个存储过程stu_g_r,当输入一个学生的学号时,通过返回输出参数获取该学生各门课程的平均成绩。CREATEPROCstu_g_r@stu_novarchar(8)=NULL,@stu_scorerealOUTPUTASSELECT@stu_score=AVG(分数)FROMgradeWHERE(学号=@stu_no)(2)执行存储过程stu_g_r,输入学号0002。DECLARE@scorerealEXECstu_g_r'0002',@scoreOUTPUT(3)显示0002号学生的平均成绩。SELECT@score8.为grade表建立一个名为insert_g_tr的INSERT触发器,当用户向grade表中插入记录时,如果插入的是在curriculum表中没有的课程编号,则提示用户不能插入记录,否则提示记录插入成功。在进行插入测试时,分别输入以下数据:学号课程编号分数00040003760005000769观察插入数据时的运行情况,说明为什么?CREATETIGGERinsert_g_trONgradeFORUPDATE,INSERTASDECLARE@fkc_idvarchar(8)SET@fkc_id=(SELECT课程编号FROMINSERTED)IFEXISTS(SELECT

温馨提示

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

评论

0/150

提交评论