数据库实验前几个解答.docx
- 文档编号:13915251
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:14
- 大小:18.18KB
数据库实验前几个解答.docx
《数据库实验前几个解答.docx》由会员分享,可在线阅读,更多相关《数据库实验前几个解答.docx(14页珍藏版)》请在冰点文库上搜索。
数据库实验前几个解答
上机实验一 数据库的管理
--创建数据库
CREATEDATABASEteachingDataA
ONPRIMARY
(name='teachingDataA',
filename='e:
\teachingDataA.mdf')
LOGON
(name='teachingDataA_log',
filename='e:
\teachingDataA_log.ldf')
--删除数据库
--DROPDATABASEteachingDataA
实验二数据表的管理
(一)
USEteachingDataA
--自定义数据类型'myID'
CREATETYPEmyIDFROMchar(6)NOTNULL
--自定义数据类型'myName1'
CREATETYPEmyName1FROMnvarchar(10)NOTNULL
--自定义数据类型'myName2'
CREATETYPEmyName2FROMchar(20)NOTNULL
--自定义数据类型'myDept'
CREATETYPEmyDeptFROMchar(50)
--创建数据表TInfo
CREATETABLETInfo(TIDmyIDPRIMARYKEY,
TNamemyName1,
Sexchar
(2)DEFAULT'男'CHECK(sex='男'orsex='女'),
DeptmyDept,
Birthdaysmalldatetime,
Titlevarchar(10),
homeTelnchar(8),
MPhonenchar(11)
)
--或
/*CREATETABLETInfo(TIDmyIDPRIMARYKEY,
TNamemyName1,
Sexchar
(2)DEFAULT'男',
DeptmyDept,
Birthdaysmalldatetime,
Titlevarchar(10),
homeTelnchar(8),
MPhonenchar(11),
CONSTRAINTCK_SEXCHECK(sex='男'orsex='女')
)*/
--创建学生表SInfo
CREATETABLESInfo(SIDmyIDPRIMARYKEY,
SNamemyName1,
Sexchar
(2)DEFAULT'男'CHECK(sex='男'orsex='女'),
Birthdaysmalldatetime,
DeptmyDept,
majorvarchar(30),
Classnchar(18),
IDCardNochar(18)
)
--创建课程表CInfo
CREATETABLECInfo(CIDmyIDPRIMARYKEY,
CNamemyName2,
CCredittinyint,
CPropertyvarchar(10)
)
--创建选修表ScoreInfo
CREATETABLEScoreInfo(
CIDmyIDFOREIGNKEYREFERENCESCInfo(CID),
SIDmyIDFOREIGNKEYREFERENCESSInfo(SID),
TIDmyID,
Scorenumeric(3,1),
Schyearchar(9),
termchar
(1),
FOREIGNKEY(TID)REFERENCESTInfo(TID),
PRIMARYKEY(CID,SID)
)
--修改表SInfo表的表结构,设置IDCardNo值为唯一的。
ALTERTABLESInfo
ADDCONSTRAINTUQ_CardUNIQUE(IDCardNo)
--修改表ScoreInfo的表结构,设置term值只能为1或2,默认值为1。
ALTERTABLEScoreInfo
ADDCONSTRAINTCK_termCHECK(term='1'ORterm='2')
ALTERTABLEScoreInfo
ADDCONSTRAINTDF_termDEFAULT('1')FORterm
--在表SInfo中添加一字段EntrData(即入学日期),要求该输入围在1900-1-1至2079-12-31。
之间
ALTERTABLESInfo
ADDEntrDateSmallDateTime
--修改表TInfo的表结构,要求删除其中的Birthday字段。
ALTERTABLETInfo
DROPCOLUMNBirthday
--修改表TInfo表的表结构,其中的字段homeTel只允许为数字,且第1位数不能为’0’。
ALTERTABLETInfo
ADDCONSTRAINTCK_ThomeTel
CHECK(homeTellike'[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'))
--修改表TInfo的表结构,增加Birthday字段。
ALTERTABLETInfo
ADDBirthdaydatetime
--向教师表插入数据
INSERTINTOTInfo(TID,TName,sex,Dept,Birthday,Title,homeTel)
VALUES('101001','施华','男','','1962-5-1','教授','43562634')
--利用T-SQL命令语句在表TInfo中输入数据,当TID大于’101000’且小于’101999’时,其所在部门Dept为’信息管理’,当TID大于’102000’且小于’102999’时,其所在部门Dept为电子商务。
UPDATETInfo
SETDept='信息管理'whereTID>='101001'andTID<='101999'
UPDATETInfo
SETDept='电子商务'whereTID>='102001'andTID<='102999'
实验三数据表的管理
(二)
--利用T-SQL命令语句修改数据表SInfo,取消对性别sex默认字段值的设置。
ALTERTABLESInfo
DROPCONSTRAINTDF__SInfo__Sex__0519C6AF
--利用T-SQL命令语句移除表ScoreInfo的TID外键引用,移除表TInfo的主键设置。
ALTERTABLEScoreInfo
DROPCONSTRAINTFK__ScoreInfo__TID__0CBAE877--外键
ALTERTABLETInfo
DROPCONSTRAINTPK__TInfo__00551192--主键
--利用T-SQL命令语句更改表SInfo中的字段SID名为SNO。
EXECsp_rename'SInfo.SID','SNO','COLUMN'
--利用T-SQL命令为表TInfo按教师工号(TID)升序建立一个聚集索引clu_tid。
CREATECLUSTEREDINDEXclu_tidONTInfo(TIDASC)
--删除索引clu_tid
DROPINDEXTInfo.clu_tid
--利用T-SQL命令为表TInfo中的Dept和TName两个字段创建一个简单的复合索引ix_dptnm。
CREATENONCLUSTEREDINDEXix_dptnmONTInfo(Dept,TName)
--利用T-SQL命令为表TInfo中的HomeTel字段创建一个唯一索引unq_hometel。
CREATEUNIQUEINDEXunq_hometelONTInfo(HomeTel)
--利用T-SQL命令为表TInfo中的TName字段创建降序的非聚集索引。
CREATENONCLUSTEREDINDEXix_TnameONTInfo(TNameDESC)
--禁用表TInfo的索引clu_tid。
ALTERINDEXclu_tid
ONTInfo
DISABLE
--启用索引表TInfo的索引clu_tid。
ALTERINDEXclu_tid
ONTInfo
REBUILD
--删除已经建立的复合索引ix_dptnm。
DROPINDEXix_dptnm
ONTInfo
实验四数据的查询
--
(一)基本查询
--1、查询TchInfo表中教师的工号TID、TName和职称Title,要求查询结果列将TID、TName和Title字段分别显示为工号、和职称。
USEteachingData
SELECTTID工号,TName,Title职称
FROMTchInfo
--2、查询TchInfo表中教师的全部信息。
SELECT*
FROMTchInfo
--3、查询TchInfo表前6行数据。
SELECTTOP6*
FROMTchInfo
--4、查询TchInfo表中前50%的数据。
SELECTTOP50PERCENT*
FROMTchInfo
--
(二)条件查询
--1、在表StuInfo中查询2009级、物电学院的学生、性别和所在系。
SELECTSname,Sex,Dept
FROMStuInfo
WHEREGrade='2009'ANDDept='物电学院'
--2、查询StuInfo中出生年月介于1989年9月1日到1990年8月31日的学生信息。
SELECT*
FROMStuInfo
WHEREBirthdayBETWEEN'1989-9-1'AND'1990-8-31'
--3、查询职称为副教授和教授的教师的信息。
SELECT*
FROMTchInfo
WHERETitle='教授'ORTitle='副教授'
--或
SELECT*
FROMTchInfo
WHERETitleIN('教授','副教授')
--4、在表StuInfo中查询所有学号为“2010”开头学生的SName和专业Major。
SELECTSName,Major
FROMStuInfo
WHERELEFT(SID,4)='2010'
--5、在表StuInfo中查询所有学号的第5,6位为“10”的学生的SName和专业Major。
SELECTSName,Major
FROMStuInfo
WHERESUBSTRING(SID,5,2)='10'
--(三)排序与分组查询
--1、查询表ScoreInfo中选修了“1101”课程的学生的学号和学生成绩,并按成绩进行降序排列。
SELECTSID,Score
FROMScoreInfo
WHERECID='1101'
ORDERBYScoreDESC
--2、通过查询表TchInfo查询各院系的讲师数。
SELECTDept,COUNT(*)讲师人数
FROMTchInfo
WHERETitle='讲师'
GROUPBYDept
--3、通过表scoreinfo查询各门课程的平均成绩,要求显示列名为:
课程代码和平均成绩。
SELECTCIDas课程代码,AVG(Score)as平均成绩
FROMScoreInfo
GROUPBYCID
--(四)联结查询
--查询选修了"数据库原理与应用"课程且成绩在70分以上的所有学生的、成绩。
SELECTSname,score
FROMStuInfo,CourseInfo,ScoreInfo
whereStuInfo.SID=ScoreInfo.SIDAND
ScoreInfo.CID=CourseInfo.CIDAND
CName='数据库原理与应用'AND
Score>=70
--或
SELECTSname,score
FROMStuInfo,ScoreInfo
whereStuInfo.SID=ScoreInfo.SIDAND
Score>=70AND
CID=
(SELECTCIDFROMCourseInfo
WHERECName='数据库原理与应用')
--(五)嵌套查询
--查询与“周志成”同学在同一个班同一个年级的学生。
SELECTSname
FROMStuInfo
whereclass=
(SELECTclassFROMStuInfo
WHERESname='周志成')
ANDgrade=
(SELECTgradeFROMStuInfo
WHERESname='周志成')
实验五视图
--PPT中例题
--1、建立物电学院选修了1101号课程的学生视图S_1。
CREATEVIEWS_1(SID,Sname,Score)
AS
SELECTStuInfo.SID,StuInfo.Sname,ScoreInfo.score
FROMStuInfo,ScoreInfo
WHEREStuInfo.Dept='物电学院'AND
StuInfo.SID=ScoreInfo.SIDAND
ScoreInfo.CID='1101';
--2、创建学生成绩stu_scoreA视图,要求其中包括字段Sid,Sname,Cname,score.
CREATEVIEWS_2(SID,Sname,CName,Score)
AS
SELECTStuInfo.SID,StuInfo.Sname,CourseInfoame,ScoreInfo.score
FROMStuInfo,ScoreInfo,CourseInfo
WHEREScoreInfo.CID=CourseInfo.CIDAND
StuInfo.SID=ScoreInfo.SID;
--3、建立计算机学院学生的学号、和专业的视图student_1。
CREATEVIEWStudent_1(学号,,专业)
AS
SELECTSID,Sname,Major
FROMStuInfo
WHEREDept='计算机学院'
--4、建立计物电学院的学号、和专业的视图Student_2,并要求通过该视图进行的更新操作只涉与物电学院学生。
CREATEVIEWStudent_2
AS
SELECTSID,Sname,MajorFROMStuInfo
WHEREDept='物电学院'
WITHCHECKOPTION;
--5、定义一个反映学生年龄的视图StuAge。
CREATEVIEWStuAge(SID,Sname,Sage)
AS
SELECTSID,Sname,year(getdate())-year(birthday)
FROMStuInfo
--6、将学生的学号与他的平均成绩定义为一个视图ScoreAvg。
CREATEVIEWScoreAvg(学号,平均成绩)
AS
SELECTSID,AVG(Score)
FROMScoreInfo
GROUPBYSID;
--7、建立物电学院选修了1101号课程的学生成绩视图StuCourse1。
CREATEVIEWStuCourse1(学号,,成绩)
AS
SELECTStuInfo.SID,Sname,Score
FROMStuInfo,ScoreInfo
WHEREDept='物电学院'AND
StuInfo.SID=ScoreInfo.SIDAND
ScoreInfo.CID='1101';
--8、建立物电学院选修了1101号课程且成绩在60分以上的学生的视图。
CREATEVIEWStu_Pass1
AS
SELECT学号,,成绩
FROMStuCourse1
WHERE成绩>=60
--9、使用T-SQL语句来查看teachindData数据库的student_1视图的定义。
USEteachingData;
EXECsp_helptextstudent_1;
--10、从视图Student_1查询计算机学院学生的学号、和专业的信息。
UseteachingData;
SELECT*FROMStudent_1;
--11、查询视图stu_scoreA,要求按课程名称进行排序。
select*
fromstu_scoreB
orderbyCname
--12、修改视图“Student_1”为查看计算机学院学生的学号、、性别和专业。
ALTERVIEWStudent_1
AS
SELECTSID,sname,sex,Major
FROMStuInfo
WHEREDept='计算机学院';
--13、将视图student_1更名为“student_computer”。
UseteachingData
Go
EXECsp_rename'student_1','student_computer'
--14、利用视图StuCourse1为物电学院中每位学生的数据库原理与应用成绩减少5分。
UpdateStuCourse1
Set成绩=成绩-5
--15、从teachingData数据库中删除视图student_2和sc_1。
USEteachingData
Go
DropViewstudent_2,sc_1
--其他
--1、在teachingData数据库中建立视图score_top,要求在该视图中显示各门学科的CID和score_max(即学科的最高分)。
CREATEVIEWscore_top
AS
SELECTCID,MAX(Score)最高分
FROMScoreInfo
GROUPBYCID
--2、利用teachingData数据库中的相关的数据表和视图score_top新建一视图top_stu,要求在该视图中显示各门学科的学科名cname,取得最高分的学生名sname和成绩score。
CREATEVIEWtop_stu
AS
SELECTCName,SName,Score
FROMScoreInfo,StuInfo,CourseInfo,score_top
WHEREScoreInfo.CID=score_top.CIDAND
ScoreInfo.score=score_top.最高分AND
ScoreInfo.SID=StuInfo.SIDAND
ScoreInfo.CID=CourseInfo.CID;
--3、要求用T-SQL语句新建一视图stu_comp,要求该视图中只包括物电学院学生的学号sid、sname、年龄sage和班级class视图。
createviewstu_comp
as
selectsid,sname,year(getdate())-year(birthday)assage,class
fromstuinfo
wheredept='物电学院'
--4、试用T-SQL语句修改视图stu_comp,要求该视图中只包括2009级物电学院学生的学号sid、sname、年龄sage、班级class。
ALTERviewstu_comp
as
selectsid,sname,year(getdate())-year(birthday)assage,class
fromstuinfo
wheredept='物电学院'ANDgrade='2009'
--5、建立成绩低于60分的学生的学号、、班级、课程名和成绩的视图stu_fall。
CREATEVIEWstu_fall
AS
SELECTstuinfo.sid,sname,class,cname,score
fromstuinfo,scoreinfo,courseinfo
wherestuinfo.sid=scoreinfo.sid
andscoreinfo.cid=courseinfo.cid
andscore<60
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验 几个 解答