--mysql查询练习
首先准备表,
1、学生表student
2、课程表course
3、成绩表score
4、教师表teacher

添加数据完成后开始查询练习。
-- 1.查询student表中所有的记录

-- 2.查询student表中所有记录的s_name,s_sex和s_class列

-- 3.查询教师所有的单位但是不重复的t_depart列
==distinct 排重==


-- 4.查询score表中成绩在60-80之间所有的记录(sc_degree)
==查询区间==
between ... and ...(between是包括边界点的)

或者
---直接使用运算符比较

-- 5.查询score表中成绩为85, 86, 或者88的记录(sc_degree)
---表示 或者关系的查询 in

-- 6.查询student表中'95031'班或者性别为'女'的同学记录
---or 表示或者

-- 7.以class降序查询student表中所有的记录
---升序asc、降序desc

-- 8.以c_no升序.sc_degree降序查询score表中所有的数据

-- 9.查询'95031'班的学生人数
---统计 count

-- 10.查询score表中的最高分数的学生号和课程号.(子查询或者排序)

----1、找到最高分
select max(sc_degree) from score;
2、找最高分的s_no和c_no
select s_no,c_no from score where sc_degree=(select max(sc_degree) from score);
---排序的做法
select s_no,c_no,degree from score order by degree;
--- limit
第一个数字表示从多少开始,第二个数字表示传多少条。

-- 11.查询每门课的平均成绩
--avg()

---如何在一个sql语句中进行查询?
---group by分组

-- 12,查询score表中至少有2名学生选修的,并且以3开头的课程的平均分

--对一个复杂的查询,分段的思路进行操作

---因为已经分好组了,所以可以用select(*);
---having是过滤的意思。
---模糊查询用的是like
-- 13.查询分数大于70但是小于90的s_no列:

-- 14.查询所有的学生 s_name , c_no, sc_degree列

-- 15.查询所有学生的s_no, c_name, sc_degree列

-- 16.查询所有的学生 s_name , c_name, sc_degree列

-- 17.查询班级是'95031'班学生每门课的平均分

-- 18.查询选修"3-105"课程的成绩高于'109'号同学'3-105'成绩 的所有同学的记录

-- 19.查询成绩高于学号为'109',课程号为'3-105'的成绩的所有记录

-- 20.查询所有学号为108、101的同学同年出生的所有学生的s_no,s_name和s_birthday

-- 21.查询 张旭 教师任课的学生的成绩

-- 22.查询选修课程的同学人数多余 2 人的教师姓名
---having 是在分组情况下的条件触发词。
---where用于筛选表内全部记录,having用于筛选分组后的记录。

-- 23.查询95033班和95031班全体学生的记录

-- 24.查询存在85分以上成绩的课程c_no

-- 25.查出所有'计算机系' 教师所教课程的成绩表

-- 26.查询'计算机系'与'电子工程系' 不同职称的教师的t_name和t_prof
----union 求并集

-- 27, 查询选修编号为"3-105"课程且成绩至少高于选修编号为'3-245'同学的c_no,s_no和sc_degree,并且按照sc_degree从高到地次序排序
---至少?any

-- 28.查询选修编号为"3-105"且成绩高于选修编号为"3-245"课程的同学c_no.s_no和sc_degree
---且?all

-- 29. 查询所有教师和同学的 name ,sex, birthday
---合并两个表 union
---别名 as

-- 30.查询所有'女'教师和'女'学生的name,sex,birthday

网友评论