一、实验目的:
掌握查询的各种設计工具的使用方法以及各种查询的创建和编辑方法
二、准备工作:
1.学习创建简单的选择查询;
2.学习创建包含计算字段的查询;
3.学习创建有汇总功能的查询;
4.学习创建交叉表查询;
5.学习创建各种操作查询。
三、实验内容:
打开班级数据库
在"学生信息"表中选择"学号"、
"姓名",在"學生成绩"表中选择"期中成绩"、
在"课程"表中选择"课程名称"字段
2.使用设计视图建立查询
(1) 建立查询"CX1",检索所有学生的姓名、出生日期和性别。
(4) 建竝查询"CX4",检索"期中成绩"、"期末成绩"均高于85分以上的学生的信息
(5) 建立查询"CX5",检索参加期中考试或期末考试的学生的学号和课程号。
(6) 建立查询"CX6",检索参加课程号为"0001"的课程考试,并且"期中成绩"或"期末成绩"
大于等于90分的学生的学号
(8) 建立查询"CX8",检索期中成绩在60分以上(包括60分)的学生学号和期中成绩,且要
求按学号的升序排列。
按照"出生日期"升序排列
(10) 建立查询"CX10",显示学生学号、姓名、课程名称、期中成绩、期末成绩、平时成绩
(11) 建立查询"CX11",检索"刘畅"同学在各门课考试中的期中成绩和课程名称。
(12) 建立查询"CX12",检索平时成绩低于80的学生的学号、姓名、课程名称、平时成绩
建立"成绩查询B",查询参数为"请输入课程名称:",对"CX10"按"课程名称"进行查询,查询
动态集将显示所有选修该课程的学生的记录。
建立交叉表查询"成绩查詢C","CX10"为数据源,以"学号"和"姓名"作为行标题、
课程名称"作为列标题列出每位学生选修的各门课程期末成绩和平均期末成绩。
建立"成绩查询D",删除課程表中所有学分少于2分(包含2分)的记录
)掌握数据库对象的操作过程包括创建、修改、删除
)熟悉表的各种操作,包括插入、修改、删除、查询
选择如下一个应用背景之一:
)建立一个数据库和相关的表、索引、视图等数据库对象练习对表、索引和视图的各种操作
)要求认真进行实验,记录各实验用例及执行结果
)深入了解各个操作的功能。
实验要求包括如下方面的内容:
基本表的创建、修改及删除
完成各类更新操作包括:
近段时间一直都在学习MySQL为了检驗自己的学习效果,特意拿了网上经典的SQL50题练了一下
我用的是MySQL Server 8.0版本(新增了窗口函数rank()等,接下来我会把自己的SQL语句以及运行结果放到這里来答案不唯一,仅供参考若有更好的查询方式,欢迎交流学习
以上4个表是通过加粗的字段建立连接的。
1、创建学生表并插入数據:
2、创建课程表并插入数据
3、创建教师表并插入数据
4、创建成绩表并插入数据
这道题得用到left join不能用where连接,因为题目说了要求有显示为null的where是inner join,不会出现null如果用where在这道题里会查不出第08号学生
要求输出课程号和选修人数,查询结果按人数降序排列若人数相同,按课程号升序排列
以如下形式显示:课程ID,课程name最高分,最低分平均分,及格率中等率,优良率优秀率。
Score 重复时保留名次空缺,指的是rank()和dense_rank()的区别也就是两个并列第一名之后的那个人是第三名(rank)还是第二名(dense_rank)的区别。
要求输出课程号和选修人数查询结果按人数降序排列,若人数相同按课程号升序排列。
TIMESTAMPDIFF函数:有参数设置可以精确到年(YEAR)、天(DAY)、小时(HOUR),分钟(MINUTE)和秒(SECOND)使用起来比datediff函数更加灵活。對于比较的两个时间时间小的放在前面,时间大的放在后面
datediff函数:返回值是相差的天数,不能定位到小时、分钟和秒
week(时间)默认从0开始,并却星期天默认为第一天国外的算法
week(时间,1)从1开始并却星期一为第一天,国内算法
因为学生表中的学生沒有11月份出生的所以结果为null