SQL基础知识整理
组函数: 去重 distinct() 统计总数sum() 计算个数count() 平均数avg() 最大值max() 最小数min()
多表连接: 内连接(省略默认inner) join ...on..左连接left join tableName as b on a.key ==b.key右连接right join 连接union(无重复(过滤去重))和union all(有重复[不过滤去重])
oracle(SQL server)数据库
可以对简单视图进行 DML 操作
复杂视图不能进行 DML 操作
何时创建索引:
case...when ... then... when ... then ... else ... end
SQL 优化:能使用 EXISTS 就不要使用 IN
已知有如下4张表:
为了演示题目的运行过程,我们先按下面语句在客户端navicat中创建数据库和表。
如何你还不懂什么是数据库,什么是客户端navicat,可以先学习这个:
如何向表中添加数据,以及添加结果。
查询姓“猴”的学生名单
查询姓“孟”老师的个数
面试题:查询课程编号为“0002”的总成绩
查询选了课程的学生人数
查询各科成绩最高和最低的分,以如下的形式显示:课程号,最高分,最低分
查询每门课程被选修的学生数
查询男生、女生人数
查询平均成绩大于60分学生的学号和平均成绩
查询至少选修两门课程的学生学号
查询同名同性学生名单并统计同名人数
查询不及格的课程并按课程号从大到小排列
查询每门课程的平均成绩,结果按平均成绩升序排序,平均成绩相同时,按课程号降序排列
检索课程编号为“0004”且分数小于60的学生学号,结果按按分数降序排列
统计每门课程的学生选修人数(超过2人的课程才统计)
要求输出课程号和选修人数,查询结果按人数降序排序,若人数相同,按课程号升序排序
查询两门以上不及格课程的同学的学号及其平均成绩
查询所有课程成绩小于60分学生的学号、姓名
查询没有学全所有课的学生的学号、姓名
查询出只选修了两门课程的全部学生的学号和姓名
1990年出生的学生名单
查询各科成绩前两名的记录
查询所有学生的学号、姓名、选课数、总成绩
查询平均成绩大于85的所有学生的学号、姓名和平均成绩
查询学生的选课情况:学号,姓名,课程号,课程名称
查询出每门课程的及格人数和不及格人数
使用分段[100-85],[85-70],[70-60],[<60]来统计各科成绩,分别统计:各分数段人数,课程号和课程名称
查询课程编号为0003且课程成绩在80分以上的学生的学号和姓名
使用sql实现将该表行转列为下面的表结构