第二次数据库实验报告Word文档格式.docx
《第二次数据库实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《第二次数据库实验报告Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
王敏
1983-2-15
24
06003
060011
张立
1987-1-19
20
06007
朱永
1987-3-2
07002
070012
周文
1988-5-11
19
07008
秦阳
1988-12-5
07009
070013
张王杨
1989-1-12
18
Course表
CNo
CName
CCredits
CTno
CInfo
CPno
CTime
CTerm
00001
数据库
4
2
数据库课程介绍略
5
36
00002
数学
1
数学课程介绍略
00003
信息系统
3
信息系统课程介绍略
27
00004
操作系统
操作系统课程介绍略
7
00005
数据结构
数据结构课程介绍略
00006
电路基础
电路基础课程介绍略
00007
数字逻辑
数字逻辑课程介绍略
00008
英语
英语课程介绍略
00009
日语
日语课程介绍略
SC表
Score
92.0
85.0
58.0
63.0
54.0
55.0
78.0
90.0
60.0
88.0
72.0
89.0
99.0
Class表
Tno
Dno
Clname
0001
03软件二班
040001
05007
04信息一班
08002
0002
03统计一班
040009
09006
04应数二班
10100
0003
06通信一班
11089
07信号二班
11091
07电路三班
Teacher表
TName
age
sal
mgr
DNo
王莹
35
4500
01002
张璟
32
4200
周颖
31
3500
02003
吴红
28
3200
02005
赵国功
29
3000
01006
江卫星
45
2800
2500
李主任
42
6500
qthlete表
name
sex
groupl
陈海
刘平
余林
张建
周晶晶
姚倩
其中,Student表中SNo表示学号,CLno表示班级编号,Sname表示姓名,SSex表示性别,SBir表示出生年月,SAge表示年龄;
Course表中CNo表示课程编号,CName表示课程名称,CTno表示课程类型编码,CInfo表示课程介绍,CCredits表示学分,CTime表示总学时,CPno表示先修课程编号,CTerm表示学期;
SC表中SNo表示学号,CNo表示课程编号,Score表示成绩。
一、实验目的
1、熟练掌握两种方式修改表(表的结构、表中的数据);
2、掌握常规数据查询。
会使用select、where、orderby及几种基本的聚合函数。
二、实验内容和步骤(参考《数据库实验指导》课本查看详细要求)
1、两种方式修改表的结构
1用企业管理器修改SM_E01014040中的数据表:
Student增加一列Address;
实验步骤:
具体步骤截图:
增加列Address后表属性:
2用SQL语句修改表Course的列属性,将CName的长度改为40,且不允许为空
SQL源码:
USESM_E01014040
ALTERTABLECourseALTERCOLUMNCNameVARCHAR(40)NOTNULL
过程截图:
修改后截图:
3用SQL语句修改SM_E01014040中的数据表:
Student增加一列Emai,要求必须包含“@”字符,将此约束命名为“ck_ea”;
ALTERTABLEStudentADDEmailVARCHAR(40)NULLCONSTRAINTck_eaCHECK(Emaillike'
%@%'
)
4用SQL语句删除Student中的列Address
ALTERTABLEStudentDROPCOLUMNAddress
删除后截图:
5用SQL语句给表Student中的SName添加主键约束,并将此主键约束命名为“pk_name”
ALTERTABLEStudentADDCONSTRAINTpk_namePRIMARYKEY(SName)
6用SQL语句删除表Student中的SName的主键约束
ALTERTABLEStudentDROPCONSTRAINTpk_name
7使用WITHNOCHECK子句,向Student中的SAge添加约束,约束名为“ck_age”,使学生年龄为18-25岁。
ALTERTABLEStudentWITHNOCHECKADDCONSTRAINTck_ageCHECK(SAge>
=18ANDSAge<
=25)
8使用NOCHECK子句将Student中的Emai约束无效或重新有效。
ALTERTABLEStudentNOCHECKCONSTRAINTck_ea
ALTERTABLEStudentCHECKCONSTRAINTck_ea
2、两种方式修改表的数据
1用企业管理器,向SM_E01014040数据库中的学生表Student插入一条记录(’03007’,’03002’,’梁栋’,’男’,’1984-10-10’)
2用SQL语句进行插入操作:
向Student插入一条学号为“06001”、姓名为“王立”、性别为“男”的学生记录;
想SC表中插入一条学号为“06001”、课程号为“00001”、选课分数为空的选课记录;
INSERTINTOStudent(SNo,SName,SSex)VALUES('
06001'
'
王立'
男'
INSERTINTOSCVALUES('
00001'
null)
3用SQL语句进行修改操作:
修改学生06002的年龄为20;
将所有男生的年龄增加1;
给所有选修了数字逻辑课程的学生成绩加5分。
UPDATEStudentSETSAge=20WHERESNo='
07002'
UPDATEStudentSETSAge=SAge+1WHERESSex='
UPDATESCSETScore=Score+5WHERECNo=(SELECTCNoFROMCourseWHERECName='
数字逻辑'
4用SQL语句进行删除操作:
删除学号为06001的学生记录;
删除所有学生的选课记录。
DELETEFROMStudentWHERESNo=’06001’
DELETEFROMSC
规数据查询中SELECT、WHERE、ORDERBY语句使用
实验前提:
在SM_E01014040数据库中新建表Teacher,包含以下数据项:
Teacher(Tno,TName,age,sal,mgr,DNo),其中,TNo为教职工编号,TName为教职工姓名,age为年龄,sal为月薪,mgr为教职工的上一级领导(即上级领导的职工号),DNo为部门号。
以任意一种方式往Teacher表中中添加数据如下:
35
4500
32
4200
31
3500
28
3200
29
3000
45
2800
1查看所有教职工的信息
SELECT*FROMTeacher
2查看所有教职工的职工号和姓名
SELECTTNo,TNameFROMTeacher
3查看所有教职工的职工号、姓名,并要求输出结果的列名显示为“教职工号”、“姓名”。
SELECTTNo教职工号,TName姓名FROMTeacher
4查询所有教职工的姓名和年薪,并要求输出结果的列名显示为“姓名”、“年薪”。
SELECTTName姓名,sal*12年薪FROMTeacher
5查询所有教职工的姓名和年薪,并要求输出结果的列名显示为“姓名”、“年薪”、“币种单位”,其中币种单位的值为“元”。
SELECTTName姓名,sal*12年薪,'
元'
币种单位FROMTeacher
6使用DISTICNT:
查看SC表中的学号与不加DISTINCT的区别
SELECTSNoFROMSC
SELECTDISTINCTSNoFROMSC
7查询所有0002部门职工的信息
SELECT*FROMTeacherWHEREDNo=’0002’
8查询1984年和1985年出生的女生的信息
SELECTSName,SBirFROMStudentWHERESSex='
女'
ANDSBirBETWEEN'
1984-01-01'
AND'
1985-12-31'
9查询0001、0002、003部门的职工的信息
SELECT*FROMTeacherWHEREDNoIN(‘0001’,’0002’,’0003’)
10查询学号为03004的同学正在学习的课程
SELECTCNoFROMSCWHERESNo='
03004'
11查询姓王的同学的信息
SELECT*FROMStudentWHERESNameLIKE'
王%'
12查询所有职工的年龄,并按年龄从小到大的顺序排列
SELECTTNo,ageFROMTeacherORDERBYage
13查询学生某门课(如00001)的成绩,成绩由高到低的顺序输出
SELECTSNo,ScoreFROMSCWHERECNo='
ORDERBYScoreDESC
14查询职工的年薪,并按年薪的升序排列
SELECTTName职工姓名,sal*12年薪FROMTeacherORDERBY2
15查询所有职工信息,按部门号降序排列,在部门相同的情况下,按年龄的升序排列
SELECT*FROMTeacherORDERBYDNoDESC,age