SQL实验分析报告文档格式.docx
《SQL实验分析报告文档格式.docx》由会员分享,可在线阅读,更多相关《SQL实验分析报告文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
![SQL实验分析报告文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/7/3baffb73-40c6-49db-9d75-af1eacdf4484/3baffb73-40c6-49db-9d75-af1eacdf44841.gif)
姓名char(20)notnull,
性别char
(2)constraintc1check(性别in('
男'
'
女'
)),
生源char(10),
状态char(4)constraintc2check(状态in('
正常'
留级'
休学'
退学'
))
);
例3:
定义教师表,其中规定:
⏹教师编号是主关键字;
⏹院系列为计算列(取教师编号的第1和第2个字符),并且院系值参照院系表的编号值,此约束说明一名教师一定属于某个院系;
⏹职称的取值为教授、副教授、讲师或助教。
--E3
createtableTeacher
(教师编号char(10)primarykey,
院系asconvert(char(8),substring(教师编号,1,2))
姓名char(20)notnull,
性别char
(2)constraintc3check(性别in('
职称char(6)constraintc4check(职称in('
教授'
副教授'
讲师'
助教'
专业char(40)
例4:
定义课程表,其中规定:
⏹课程编号是主关键字;
⏹课程名称不允许为空值;
⏹责任教师参照教师表的教师编号值,此约束说明责任教师一定是已经在编的教师;
⏹学时不允许为空值;
⏹课程性质分为公共基础、专业基础、专业选修和任意选修。
--E4
createtableCourse
(课程编号char(8)primarykey,
课程名称char(30)notnull,
责任教师char(10)constraintDuty_Teacherforeignkey(责任教师)referencesTeacher(教师编号),
学时smallintnotnull,
课程性质char(10)constraintc5check(课程性质in('
公共基础'
专业基础'
专业选修'
任意选修'
例5:
定义选课表,其中规定:
⏹学号和课程编号两列构成主关键字(需要表级完整性约束);
⏹学号参照学生表的学号(约束选课的学生必须存在);
⏹课程编号参照课程表的课程编号(约束被选的课程必须存在);
⏹考试成绩取值在0~100之间,并且默认为空值。
--E5
createtableSC
(学号char(10),
课程编号char(8),
考试成绩smallintconstraintc6check(考试成绩between0and100)defaultnull,
primarykey(学号,课程编号),
foreignkey(学号)referencesStudent(学号),
foreignkey(课程编号)referencesCourse(课程编号)
例6:
规定学生表的性别字段不允许为空值
--E6
altertableStudentaltercolumn性别char
(2)notnull;
例7:
删除课程表中的责任教师列
--E7
altertableCoursedropconstraintDuty_Teacher
altertableCoursedropcolumn责任教师;
例8:
为课程表增加责任教师列,列描述如下:
⏹字符类型,长度为10;
⏹允许空值;
--E8
altertableCourseadd责任教师char(10)null
constraintnewdtforeignkeyreferencesTeacher(教师编号);
例9:
插入院系表的第1个元组(记录)
--E9
insertintoDepartment(编号,名称,负责人,办公地点)
values(01,'
信息管理学院'
李嘉'
教一楼层'
例10省略列名、插入院系表的第2个元组
--E10
insertintoDepartmentvalues(02,'
经济管理学院'
吴鸿忠'
教三楼层'
例14:
插入学生表的第1个元组
--E14
insertintoStudent(学号,姓名,性别,生源,状态)
values('
04014101'
曹波'
湖北'
例15插入学生表的第2条记录(指定正确的院系值)
--E15
04014111'
程鸣'
湖南'
例27删除考试成绩为NULL的记录。
--E27
delete
fromSC
where考试成绩isnull;
例30将04014122号学生的B00101课程的考试成绩修改为78分
--E30
updateSC
set考试成绩=78
where学号='
04014122'
and课程编号='
B00101'
;
例31:
查询学生的全部信息
--E31
select*
fromStudent;
例32:
查询所有课程名称和学时信息。
--E32
select课程名称,学时
fromCourse;
例33:
查询学时大于等于40的课程编号和课程名称。
--E33
select课程编号,课程名称
fromCourse
where学时>
=40;
例34:
查询课时在50到60(含)之间的课程信息。
--E34
=50and学时<
=60;
例35:
使用between查询课时在50到60(含)之间的课程信息。
--E35
where学时between50and60;
例36:
查询具有教授和副教授职称的教师信息。
--E36
fromTeacher
where职称='
or职称='
或者:
where职称like'
%教授'
例37:
查询责任教师字段为空值的记录。
--E37
where责任教师isnull;
例38:
查询职称为讲师或副教授的教师信息。
or职称='
例39:
查询或浏览课程性质和学时信息
select课程性质,学时
例40:
查询“专业基础”课程的信息,并将结果存储到Student模式下、表名为“专业基础”。
into专业基础
where课程性质='
例41:
按教师编号升序列出所有教师信息。
orderby教师编号;
例42:
查询所有学生信息,先按生源升序排序、再按学号升序排序。
fromStudent
orderby生源,学号;
例43:
从选课表中查询考试成绩最高的3条选课信息。
selecttop3*
orderby考试成绩desc;
例45:
从选课表中查询考试成绩在前15%的选课记录信息,如果随后有成绩并列的记录也一起列出。
selecttop15percent*
fromSC
例54:
查询考试成绩在90分以上(含)的学生的学号、姓名、相应的课程名称和考试成绩(使用CROSSJOIN连接完成查询)。
selectStudent.学号,姓名,课程名称,考试成绩
fromStudentleftjoinSCon(Student.学号=SC.学号)leftjoinCourseon(SC.课程编号=Course.课程编号)
where考试成绩>
=90;
例55:
查询目前有多少责任教师。
selectcount(distinct责任教师)
例56:
查询数据库课程的平均成绩。
selectavg(考试成绩)
fromSC,Course
whereSC.课程编号=Course.课程编号and课程名称='
数据库'
例57:
查询各院系教师的人数(显示院系名称和教师人数)。
select名称,count(*)教师人数
fromDepartment,Teacher
whereDepartment.编号=Teacher.院系
groupby名称;
例58:
查询各门课程考试成绩的平均分、最高分和最低分。
select课程名称,avg(考试成绩)平均分,max(考试成绩)最高分,min(考试成绩)最低分
fromCourseleftjoinSCon(Course.课程编号=SC.课程编号)
groupby课程名称;
例59:
查询专业基础课平均分大于等于60分的各门课程考试成绩的平均分、最高分和最低分。
groupby课程名称
havingavg(考试成绩)>
=60;
例60:
查询所有专业基础课的信息,并计算其总学时。
computesum(学时);
例61:
查询学生的考试成绩(要求查询学号、姓名、课程名称和考试成绩),同时计算每个学生的平均成绩、最高成绩和最低成绩。
fromStudent,Course,SC
whereStudent.学号=SC.学号andCourse.课程编号=SC.课程编号
orderbyStudent.学号
computeavg(考试成绩),max(考试成绩),min(考试成绩)
byStudent.学号;
例62:
同时计算所有学生的平均成绩、最高成绩和最低成绩。
byStudent.学号
computeavg(考试成绩),max(考试成绩),min(考试成绩);
例63:
查询由教授负责的课程信息(课程编号、课程名称、学时和课程性质)
select课程编号,课程名称,学时,课程性质
fromCourseleftjoinTeacheron(Course.责任教师=Teacher.教师编号)
where职称='
或代码:
fromCourse
where责任教师in
(select教师编号
例64:
查询责任教师的有关信息(姓名、性别、职称、专业)。
select姓名,性别,职称,专业
where教师编号=any
(select责任教师
where责任教师isnotnull);
where教师编号in
例65:
查询有考试成绩大于数据库课程全部考试成绩的学生信息。
fromStudent
where学号in
(select学号
fromSC
where考试成绩>
=any
(select考试成绩
fromSCleftjoinCourseon(SC.课程编号=Course.课程编号)
where课程名称='
and考试成绩isnotnull)
例66:
查询“系统分析与设计”课程的责任教师的姓名、职称,以及所负责的其他课程(课程编号和课程名称)。
select姓名,职称,课程编号,课程名称
fromTeacherleftjoinCourseon(Teacher.教师编号=Course.责任教师)
where教师编号in
fromCourse
where课程名称='
系统分析与设计'
例68:
查询哪些学生(学号和姓名)有未完成考试的课程(考试成绩为NULL)
select学号,姓名
whereexists
(select*
where考试成绩isnullandSC.学号=Student.学号);
例69:
查询哪些学生(学号和姓名)没有未完成考试的课程(考试成绩为NULL)
wherenotexists