第十天:SQL加强训练

取别名&表连接

JOIN ON

多表连接必须有一个关键字段

  • 如下图,学生表和成绩表有sno
  • 成绩表和课程表有cno
  • 课程表和老师表有tno
第十天:SQL加强训练_第1张图片
image.png
第十天:SQL加强训练_第2张图片
image.png
SELECT u.*,v.*
FROM t_user_user u,t_cst_account v
WHERE u.cst_id=v.cst_id AND u.user_name='chendj123';
-- 取别名   join on 连接两张表格
SELECT *
FROM t_user_user bb JOIN t_cst_customer dd ON bb.`cst_id`= dd.`cst_id`;

-- 查询chendj123的密码和手机号
SELECT bb.`pwd`,dd.`phone`
FROM t_user_user bb JOIN t_cst_customer dd ON bb.`cst_id`=dd.`cst_id`
WHERE bb.user_name='chendj123';

-- 根据各自用户名 查询账户余额
SELECT b.`user_name`,d.`balance`
FROM t_user_user b JOIN t_cst_account d ON b.`cst_id`=d.`cst_id`
WHERE b.`user_name`='chendj123';

-- 查询手机号是131开头的用户,显示该用户的用户名和密码
SELECT d.`phone`,b.`user_name`,b.`pwd`
FROM t_user_user b JOIN t_cst_customer d
ON b.`cst_id`=d.`cst_id`
WHERE d.`phone` LIKE '131%';

-- 查询真实姓名 马超2 的用户,密码,冻结状态
SELECT d.`user_name`,d.`pwd`,b.`status`
FROM t_cst_customer b JOIN t_user_user d
ON b.`cst_id`=d.`cst_id`
WHERE b.`cst_name`='马超2';
-- 查询曾华的学习成绩
SELECT bb.`degree`
FROM scores bb JOIN students dd
ON bb.`sno`=dd.`sno`
WHERE dd.`sname`='曾华'; 

-- 计算机导论的老师是
SELECT te.`tname`
FROM courses co JOIN teachers te
ON co.`tno`=te.`tno`
WHERE co.`cname`='计算机导论';

-- 查询课程表,教师信息,使用右连接
SELECT co.*,te.*
FROM courses co RIGHT JOIN teachers te
ON co.`tno`=te.`tno`;

-- 查询成绩表,课程表,使用左连接
SELECT *
FROM scores sc LEFT JOIN courses co
ON sc.`cno`=co.`cno`;
  • 周末练习题

1、 查询Student表中的所有记录的Sname、Ssex和Class列。
2、 查询教师所有的单位即不重复的Depart列。
3、 查询Student表的所有记录。
4、 查询Score表中成绩在60到80之间的所有记录。
5、 查询Score表中成绩为85,86或88的记录。
6、 查询Student表中“95031”班或性别为“女”的同学记录。
7、 以Class降序查询Student表的所有记录。
8、 以Cno升序、Degree降序查询Score表的所有记录。
9、 查询“95031”班的学生人数。
10、查询Score表中的最高分的学生学号和课程号。

嵌套查询

20、查询score中选学一门以上课程的同学中分数为非最高分成绩的记录。
-- 找出选修多门课程 的学生
select sno
from scores
group by sno
having count(sno)>1
-- 判断不等于最大的分数
SELECT  
FROM scores
WHERE degree !=
-- 找出最大分数的
SELECT  MAX(degree) 
FROM scores


select  *
from scores
where degree !=(SELECT  MAX(degree) 
FROM scores) and sno in (SELECT sno
FROM scores
GROUP BY sno
HAVING COUNT(sno)>1)

21、查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
22、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
23、查询“张旭“教师任课的学生成绩。
24、查询选修某课程的同学人数多于5人的教师姓名。
25、查询95033班和95031班全体学生的记录。
26、查询存在有85分以上成绩的课程Cno.
27、查询出“计算机系“教师所教课程的成绩表。
28、查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。
29、查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。
30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.
31、查询所有教师和同学的name、sex和birthday.
32、查询所有“女”教师和“女”同学的name、sex和birthday.
33、查询成绩比该课程平均成绩低的同学的成绩表。
34、查询所有任课教师的Tname和Depart.
35 查询所有未讲课的教师的Tname和Depart.
36、查询至少有2名男生的班号。
37、查询Student表中不姓“王”的同学记录。
38、查询Student表中每个学生的姓名和年龄。
39、查询Student表中最大和最小的Sbirthday日期值。
40、以班号和年龄从大到小的顺序查询Student表中的全部记录。
41、查询“男”教师及其所上的课程。
42、查询最高分同学的Sno、Cno和Degree列。
43、查询和“李军”同性别的所有同学的Sname.
44、查询和“李军”同性别并同班的同学Sname.
45、查询所有选修“计算机导论”课程的“男”同学的成绩表

你可能感兴趣的:(第十天:SQL加强训练)