版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第页大三sql课后习题答案大三sql课后习题答案
第二章
3.上机练习题
02程序代码如下:
CREATEDATABASESTUDENT1
ONPRIMARY
(NAME=STUDENT1_data,
FILENAME='E:\DATA\STUDENT1.mdf',
SIZE=3,
MA*SIZE=unlimited,
FILEGROWTH=15%)
LOGON
(NAME=STUDENT1_log,
FILENAME='E:\DATA\STUDENT1.ldf',
SIZE=2,
MA*SIZE=30,
FILEGROWTH=2)
03程序代码如下:
createdatabasestudents
onprimary
(name=students1,
filename='E:\DATA\students1.mdf',
size=5,
ma*size=75,
filegrowth=10%),
(name=students12,
filename='E:\DATA\students2.ndf',
size=10,
ma*size=75,
filegrowth=1)
logon
(name=studentslog1,
filename='E:\DATA\studentslog1.ldf',
size=5,
ma*size=30,
filegrowth=1),
(name=studentslog2,
filename='E:\DATA\studentslog2.ldf',
size=5,
大三sql课后习题答案
ma*size=30,
filegrowth=1)
第三章:
3上机练习题
01程序代码如下:
--创建表book的Transact-SQL语句:
USEtest01
GO
CREATETABLEbook(
book_idnchar(6)NOTNULL,book_namenchar(30)NULL,pricenumeric(10,2)NULL,
CONSTRAINTPK_bookPRIMARYKEYCLUSTERED
(
book_idASC)
)ONPRIMARY
--创建表uthor的Transact-SQL语句:
CREATETABLEdbo.author(
anthor_namenchar(4)NOTNULL,book_idnchar(6)NOTNULL,addressnchar(30)NOTNULL
)ON[PRIMARY]
--设置book中的book_id为主键,author表中的book_id为外键
ALTERTABLEdbo.authorWITHCHECK
ADDCONSTRAINTFK_book_authorFOREIGNKEY(book_id)
REFERENCESdbo.book(book_id)
02程序代码如下:
--利用Transact-SQL语句创建表booksales的代码。
USEtest01
GO
CREATETABLEbooksales(
book_idnchar(6)NOTNULL,sellnumintNOTNULL,selldatedatetimeNOTNULL
)ONPRIMARY
--利用insert语句为表booksales添加数据:
大三sql课后习题答案
INSERTINTObooksalesVALUES('m00011',7,20/12/2022)
INSERTINTObooksales(book_id,sellnum,selldate)VALUES
('m00017',3,17/11/2022)
--利用update语句为表booksales更新数据:
UPDATEbooksalesSETsellnum=11
WHEREbook_id='m00011'
--利用delete语句删除表booksales的数据:
DELETEFROMbooksales
WHEREbook_id='m00011'
03程序代码如下:
USEtest01
GO
CREATERULEsellnum_rule
AS@sellnum=0
E*ECsp_bindrule'sellnum_rule','booksales.sellnum'
04程序代码如下:
--删除年以前的数据
DELETEFROMbooksales
WHEREselldate'1/1/2022'
--删除全部数据
TruncateTablebooksales
第四章
3上机练习题
01程序代码如下:
DECLARE@booknamenchar(16)
set@bookname='SQLServer数据库编程'
02程序代码如下:
USEtest01
大三sql课后习题答案
GO
SETNOCOUNTON
DECLARE@startdatedatetime,@enddatedatetime
SET@startdate='1/7/202212:12AM'
SET@enddate='11/10/202212:00AM'
SELECTDATEDIFF(year,@startdate,@enddate)
SELECTDATEDIFF(month,@startdate,@enddate)
SELECTDATEDIFF(day,@startdate,@enddate)
SELECTDATEDIFF(minute,@startdate,'1/8/202212:17AM')
SELECTDATEDIFF(minute,@startdate,GETDATE())
SETNOCOUNTOFF
GO
03程序代码如下:
DECLARE@countINT,@SUMINT
SET@count=51
SET@SUM=0
WHILE@count=100
BEGIN
IF(CEILING(@count/3.0)=FLOOR(@count/3.0))
BEGIN
SET@SUM=@SUM+@count
END
SET@count=@count+2
END
PRINT'50到之间的全部能被整除的奇数之和'+CAST(@SUMASNCHAR(4))
第五章
3上机练习题
01程序代码如下:
--查询course表中的全部记录。
useteaching
go
select*fromcourse
go
大三sql课后习题答案
02程序代码如下:
--查询student表中的女生的人数。
useteaching
go
select*fromstudent
wherese*='女'
go
03程序代码如下:
--查询teacher表中每一位教授的老师号、姓名和专业名称。
useteaching
go
selectteacherno,tname,majorfromteacher
whereprof='教授'
go
04程序代码如下:
--按性别分组,求出student表中的每组同学的平均年龄。
useteaching
go
selectse*as'同学性别',avg(DATEDIFF(year,birthday,getdate()))as'平均年龄'
fromstudent
groupbyse*
go
05程序代码如下:
--利用现有的表生成新表,新表中包括学号、同学姓名、课程号和总评成果。
--其中:总评成果=final*0.8+usually*0.2
useteaching
go
select
student.studentno,student.sname,score.courseno,final*0.8+usually*0.2as'总评'
intostu_sorse
fromstudent,score
大三sql课后习题答案
wherestudent.studentno=score.studentno
go
select*fromstu_sorse
go
06程序代码如下:
--统计每个同学的期末成果平均分。
useteaching
go
selectstudentno,sname,avg(总评)
fromstu_sorse
groupbystudentno,sname
go
07程序代码如下:
--输出student表中年龄最大的男生的全部信息。
useteaching
go
select*fromstudent
wherebirthday=
(selectmin(birthday)
fromstudent)
go
08程序代码如下:
--查询teacher表中没有职称的职工的老师号、姓名、专业和部门。
useteaching
go
selectteacherno,tname,major,department
fromteacher
whereprofisNULL
go
第六章
3上机练习题
大三sql课后习题答案
01程序代码如下:
--查询每一位教授的老师号、姓名和讲授的课程名称。
useteaching
go
selectteacher.teacherno,tname,major,ame
fromteacher,course,teach_class
whereprof='教授'andteacher.teacherno=teach_class.teacherno
andteach_class.courseno=course.courseno
go
02程序代码如下:
--利用现有的表生成新表,新表中包括学号、同学姓名、课程名称和总评成果。
--其中:总评成果=final*0.9+usually*0.1
useteaching
go
selectDISTINCT
student.studentno,student.sname,ame,score.final*0.9+ually*0.1as'总评'
intostu_course
fromstudent,course,teach_class,score
wherestudent.studentno=score.studentno
andcourse.courseno=score.courseno
go
03程序代码如下:
--统计每个同学的期末成果高于分的课程门数。
useteaching
go
selectstudent.studentno,student.sname,count(*)as'课程门数'
fromstudent,score
wherescore.final75
andstudent.studentno=score.studentno
groupbystudent.studentno,student.sname
go
04程序代码如下:
大三sql课后习题答案
--输出student表中年龄大于女生平均年龄的男生的全部信息。
useteaching
go
select*fromstudent
wherese*='男'
andDATEDIFF(year,birthday,getdate())(
selectavg(DATEDIFF(year,birthday,getdate()))
fromstudent
wherese*='女')
go
05程序代码如下:
--计算每个同学获得的学分。
useteaching
go
selectstudent.studentno,student.sname,sum(credit)
fromstudentINNERJOINscore
ONstudent.studentno=score.studentno
INNERJOINcourse
ONcourse.courseno=score.courseno
wherescore.final60
groupbystudent.studentno,student.sname
go
06程序代码如下:
--猎取入学时间在年到年的全部同学中入学年龄小于岁的学号、姓名及所修课程的课程名称。
useteaching
go
selectstudent.studentno,student.sname,stu_ame
fromstudentinnerjoinstu_course
onstudent.studentno=stu_course.studentno
where(substring(student.studentno,1,2)='08'and
(datediff(year,birthday,'2022-01-01')19))
or(substring(student.studentno,1,2)='09'and
(datediff(year,birthday,'2022-01-01')19))
go
大三sql课后习题答案
07程序代码如下:
--查询级同学的学号、姓名、课程名及学分。
useteaching
go
selectstudent.studentno,student.sname,stu_ame
fromstudentinnerjoinstu_course
onstudent.studentno=stu_course.studentno
wheresubstring(student.studentno,1,2)='09'
go
08程序代码如下:
--查询选修课程的少于门、或期末成果含有分以下课程的同学的学号、姓名、电话和Email。
useteaching
go
selectstudentno,count(*)as'countNUM'
intocount1
fromscore
groupbystudentno
GO
selectstudent.studentno,sname,phone,Email
fromstudentinnerjoinscore
onstudent.studentno=score.studentno
innerjoincount1
onstudent.studentno=count1.studentno
wherescore.final60andcountNUM3
go
第七章
3上机题练习
01程序代码如下:
--在course表的cname列上创建非聚集索引ID*_cname。
USEteaching
GO
CREATENONCLUSTEREDINDE*ID*_cnameONcourse(cname)
大三sql课后习题答案
02程序代码如下:
USEteaching
GO
IFE*ISTS(SELECTnameFROMsysinde*esWHEREname='UQ_stu')
DROPINDE*student.UQ_stu
GO
CREATENONCLUSTEREDINDE*UQ_stuONstudent(studentno,classno)
GO
SELECT*FROMstudent
03程序代码如下:
USEteaching
GO
ALTERINDE*UQ_stuONstudentREBUILD
WITH(PAD_INDE*=ON,FILLFACTOR=80)
GO
04程序代码如下:
--创建一个视图v_teacher,查询全部“计算机学院”老师的信息。
USEteaching
GO
CREATEVIEWv_teacher
AS
SELECT*
FROMteacher
WHEREdepartment='计算机学院'
GO
SELECT*FROMv_teacher
05程序代码如下:
--创建一个视图v_avgstu,查询每个同学的学号、姓名及平均分,并且根据平均分降序排序。USEteaching
GO
CREATEVIEWv_avgstu
大三sql课后习题答案
SELECTTOP(100)PERCENTstudent.studentno,student.sname,
AVG(score.final)AS'average'
FROMstudent,score
WHEREstudent.studentno=score.studentnoANDscore.finalISNOTNULLGROUPBYstudent.studentno,student.sname
ORDERBYAVG(score.final)DESC
GO
SELECT*FROMv_avgstu
06程序代码如下:
--修改v_teacher的视图定义,添加WITHCHECKOPTION选项。
USEteaching
GO
ALTERVIEWv_teacher
AS
SELECT*
FROMteacher
WHEREdepartment='计算机学院'
WITHCHECKOPTION
GO
07程序代码如下:
--通过视图v_teacher向基本表teacher中分别插入数据('05039','张馨月','计算机应用','讲师','计算机学院')和('06018','李诚','机械制造','副教授','机械学院'),并查看插入数据状况。
USEteaching
GO
INSERTINTOv_teacherVALUES('05039','张馨月','计算机应用','讲师','计算机学院')
INSERTINTOv_teacherVALUES('06018','李诚','机械制造','副教授','机械学院')
GO
SELECT*FROMv_teacher
SELECT*FROMteacher
08程序代码如下:
--通过视图v_teacher将基本表teacher中老师编号为'05039'的老师职称修改为'副教授
大三sql课后习题答案
'。
USEteaching
GO
UPDATEv_teacher
SETprof='副教授'
WHEREteacherno='05039'
GO
SELECT*FROMteacher
第八章
3上机练习题
01程序代码如下:
--创建一个名称为StuInfo的存储过程,要求完成以下功能:
--在student表中查询级同学的学号、姓名、性别、诞生日期和电话个字段的内容
USEteaching
--查询是否已存在此存储过程,假如存在,就删除它
IFE*ISTS(SELECTnameFROMsysobjects
WHEREname='StuInfo'ANDtype='P')
DROPPROCEDUREStuInfo
GO
--创建存储过程
CREATEPROCEDUREStuInfo
AS
Selectstudentno,sname,se*,birthday,phone
FROMstudent
WHEREsubstring(studentno,1,2)='08'
GO
02程序代码如下:
--创建一个存储过程ScoreInfo,
--完成的功能是在表student、表course和表score中查询以下字段:学号、姓名、性别、课程名称、期末分数。
USEteaching
--查询是否已存在此存储过程,假如存在,就删除它
IFE*ISTS(SELECTnameFROMsysobjects
WHEREname='ScoreInfo'ANDtype='P')
大三sql课后习题答案
DROPPROCEDUREScoreInfo
GO
--创建存储过程
CREATEPROCEDUREScoreInfo
AS
Select
student.studentno,student.sname,student.se*,ame,Score.finalFROMstudent,course,score
WHEREstudent.studentno=score.studentno
andscore.courseno=course.courseno
GO
03程序代码如下:
--创建一个带有参数的存储过程Stu_Age,
--该存储过程依据输入的学号,在student表中计算此同学的年龄,
--并依据程序的执行结果返回不同的值,程序执行胜利,返回整数,假如执行出错,那么返回错误号。
--删除已存在的存储过程
USEteaching
IFE*ISTS(SELECTnameFROMsysobjects
WHEREname='Stu_Age'ANDtype='P')
DROPPROCEDUREStu_Age
GO
--创建存储过程
USEteaching
GO
CREATEPROCEDUREStu_Age
@studentNOnvarchar(10),@AgeintOUTPUT
AS
--定义并初始化局部变量,用于保存返回值
DECLARE@ErrorValueint
SET@ErrorValue=0
--求此同学的年龄
SELECT@Age=YEAR(GETDATE())-YEAR(birthday)
FROMstudent
WHEREstudentno=@studentNO
--依据程序的执行结果返回不同的值
IF(@@ERROR0)
SET@ErrorValue=@@ERROR
RETURN@ErrorValue
GO
大三sql课后习题答案
04程序代码如下:
--================================================
--TemplategeneratedfromTemplateE*plorerusing:
--CreateTrigger(NewMenu).SQL
--
--UsetheSpecifyValuesforTemplateParameters
--command(Ctrl-Shift-M)tofillintheparameter
--valuesbelow.
--
--SeeadditionalCreateTriggertemplatesformore
--e*amplesofdifferentTriggerstatements.
--
--Thisblockofcommentswillnotbeincludedin
--thedefinitionofthefunction.
--================================================
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
--=============================================
--Author:Name
--Createdate:
--Description:
--=============================================
CREATETRIGGERdbo.TR_Stu_Insert
ONdbo.student
AFTERINSERT
AS
BEGIN
DECLARE@msgnchar(30)
SET@msg='你插入了一条新记录!'
PRINT@msg
END
GO
05程序代码如下:
--创建一个AFTER触发器,要求实现以下功能:
--在score表上创建一个插入、更新类型的触发器TR_ScoreCheck,
--当在score字段中插入或修改考试分数后,触发该触发器,检查分数是否在-100之间。
USEteaching
大三sql课后习题答案
GO
CREATETRIGGERTR_ScoreCheck
ONscore
FORINSERT,UPDATE
AS
IFUPDATE(final)
PRINT'AFTER触发器开始执行……'
BEGIN
DECLARE@ScoreValuereal
SELECT@ScoreValue=(SELECTfinalFROMinserted)
IF@ScoreValue100OR@ScoreValue0
PRINT'输入的分数有误,请确认输入的考试分数!'
END
GO
06程序代码如下:
--创建一个INSTEADOF触发器,要求实现以下功能:
--在course表上创建一个删除类型的触发器TR_NotAllowDelete,
--当在course表中删除记录时,触发该触发器,显示不允许删除表中数据的提示信息。
USEteaching
GO
IFE*ISTS(SELECTnameFROMsysobjects
WHEREname='TR_NotAllowDelete'ANDtype='TR')
DROPTRIGGERTR_NotAllowDelete
GO
CREATETRIGGERTR_NotAllowDelete
ONcourse
INSTEADOFDELETE
AS
PRINT'INSTEADOF触发器开始执行……'
PRINT'本表中的数据不允许被删除!不能执行删除操作!'
GO
第九章
3上机练习题
01程序代码如下:
--创建在score表上执行UPDATE语句的事务UP_score,并执行。
大三sql课后习题答案
USEteaching
GO
BEGINTRAN
UPDATEdbo.score
SETusually=77,final=88
WHEREstudentno='0824113307'ANDcourseno='c05109'
COMMITTRAN
GO
02程序代码如下:
--练习运用ROLLBACKTRANSACTION语句回滚事务,并查看。
USEteaching
GO
BEGINTRAN
INSERTINTOcourse
VALUES('c05133','国际贸易','必修',32,2.0);
SAVETRANsave1;
DELETEFROMcourse
WHEREcourseno='c05137';
ROLLBACKTRANsave1;
COMMITTRAN
GO
03程序代码如下:
--练习在student表上创建嵌套事务,分别在内层和外层设置回滚点,检测回滚对表数据的影响。
USEteaching
GO
BEGINTRANtran1
SAVETRANsave1;
BEGINTRANtran2
UPDATEstudent
SETsname='赵平茵',point=997,phone='053179372727'
WHEREstudentno='0828261367';
SELECT*FROMstudentWHEREstudentno='0828261367';
SAVETRANsave2;
COMMITTRANtran2;
UPDATEstudent
SETsname='孙释远',point=987,phone='053179372727'
大三sql课后习题答案
WHEREstudentno='0828261367';
ROLLBACKTRANsave1;
COMMITTRANtran2;
SELECT*FROMstudentWHEREstudentno='0828261367';
GO
04程序代码如下:
--练习在student表上创建嵌套事务,并利用系统变量@@TRANCOUNT编程,
--检测嵌套事务的执行状况。
USEteaching
GO
BEGINTRANTR1
PRINT'1stBEGINTRAN:@@TRANCOUNT='+CAST(@@TRANCOUNTAS
NVARCHAR(10));
SAVETRANsave1;
BEGINTRANTR2
PRINT'2ndBEGINTRAN:@@TRANCOUNT='
+CAST(@@TRANCOUNTASNVARCHAR(10));
UPDATEstudent
SETsname='赵平茵',point=997,phone='053179372727'
WHEREstudentno='0828261367';
COMMITTRANTR2;
PRINT'1stCOMMITTRAN:@@TRANCOUNT='
+CAST(@@TRANCOUNTASNVARCHAR(10));
--ROLLBACKTRANsave1;
PRINT'ROLLBACKTRAN:@@TRANCOUNT='
+CAST(@@TRANCOUNTASNVARCHAR(10));
COMMITTRANTR1;
PRINT'AFTERCOMMITTRANTR1:@@TRANCOUNT='
+CAST(@@TRANCOUNTASNVARCHAR(10));
SELECT*FROMstudentWHEREstudentno='0828261367';
GO
05程序代码如下:
--练习在student表上进行查询、插入和更新,然后运用sys.dm_tran_locks视图查看锁的信息。
USEteaching;
GO
大三sql课后习题答案
BEGINTRAN
SELECTstudentno,sname
FROMstudent
--WITH(holdlock,rowlock)
WHEREstudentno='0828261367';
INSERTINTOstudent
VALUES('1028261001','孙释远','女
','1989-09-09','090512',777,'1328909876','sdqd@');
UPDATEstudent
SETsname='孙释嘉'
WHEREstudentno='0828261367';
--为了查看事务中运用的锁的信息,运用动态管理视图sys.dm_tran_locks。在查询窗口中键入并执行以下SELECT语句来猎取锁信息并提交事务。
SELECTresource_type,resource_associated_entity_id,
request_status,request_mode,request_session_id,
resource_description
FROMsys.dm_tran_locks
WHEREresource_database_id=DB_ID('teaching');
--提交事务
COMMITTRAN
第十章
3上机练习题
01程序代码如下:
USEmaster
GO
CREATELOGINUSER1WITHPASSWORD='Abc!@#213'
03程序代码如下:
--练习在teaching数据库中为SQLServer登录名USER1添加数据库用户,并取名为USER2,默认架构为TEAC。
USEteaching
GO
CREATEUSERUSER2FORLOGINUSER1
WITHDEFAULT_SCHEMA=TEAC
GO
大三sql课后习题答案
05程序代码如下:
--练习将teaching数据库中创建表的权限授予用户USER2。
USEteaching
GO
GRANTCREATETABLETOUSER2
GO
第十一章
3上机练习题
01程序代码如下:
--完整数据库备份
USEteaching
GO
BACKUPDATABASEteaching
TODISK=N'F:\sqlprogram_e*\第章\backteaching'
WITHE*PIREDATE=N'12/22/202200:00:00',
NAME=N'teaching-完整数据库备份',
STATS=10
GO
--差异备份
BACKUPDATABASEteaching
TODISK=N'F:\sqlprogram_e*\第章\backteaching'
WITHDIFFERENTIAL,
E*PIREDATE=N'12/22/202200:00:00',
NOFORMAT,NOINIT,
NAME=N'teaching-差异数据库备份',
SKIP,NOREWIND,NOUNLOAD,STATS=10
GO
declare@backupSetIdasint
select@backupSetId=position
frommsdb..backupset
wheredatabase_name=N'teaching'andbackup_set_id=(select
ma*(backup_set_id)frommsdb..backupsetwhere
database_name=N'teaching')
if@backupSetIdisnull
begin
raiserror(N'验证失败。找不到数据库“teaching”的备份信息。',16,1)end
大三sql课后习题答案
RESTOREVERIFYONLY
FROMDISK=N'F:\sqlprogram_e*\第章\backteaching'
WITHFILE=@backupSetId,NOUNLOAD,NOREWIND
GO
02程序代码如下:
--对数据库teaching进行复原
RESTOREDATABASEteaching
FROMDISK=N'F:\sqlprogram_e*\第章\backteaching'
WITHFILE=2,NORECOVERY,NOUNLOAD,
STATS=10
GO
RESTOREDATABASEteaching
FROMDISK=N'F:\sqlprogram_e*\第章\backteaching'
WITHFILE=3,NOUNLOAD,
STATS=10
GO
03程序代码如下:
--创建备份设备
USEmaster
GO
E*ECmaster.dbo.sp_addumpdevice
@devtype=N'disk',
@logicalname=N'device1',
@physicalname=N'F:\sqlprogram_e*\第章\back_device1.bak'
GO
--备份teaching数据库的事务日志
BACKUPLOGteaching
TOdevice1
WITHRETAINDAYS=3,NOFORMAT,NOINIT,
NAME=N'teaching-事务日志备份',
SKIP,N
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 培养幼儿的故事理解和想象力
- 2024年人力资源管理师考证真题及答案全部解析
- 2024年人力资源管理师基础知识习题答案解析
- 经典故事睡美人的故事
- 中国十大旅游景点
- 外科护理学-休克课件
- 函数的应用与优化解题
- 怀宁县国家农业综合开发2017年黄墩镇生态治理项目(第二批资金G标段)施工组织设计
- 2022-2023年一级造价师之建设工程造价管理综合练习试卷B卷附答案
- 九江市德安县2024届重点中学小升初语文入学考试卷含答案
- 教师与同事的合作和沟通礼仪
- 员工内部调动管理制度
- 营运客车安全例行检查技术规范
- 烟花爆竹批发仓库建设标准
- 道路拓宽交通安全专项施工方案
- 双胎妊娠指南草稿课件
- 2024届北京市东城区普通校中考英语考试模拟冲刺卷含答案
- 2023年陕西西安交通大学研究生院招聘笔试参考题库(共500题)答案详解版
- 法学-试论正当防卫的限度
- 食管裂孔疝的健康宣教
- 感染性腹泻诊疗标准
评论
0/150
提交评论