第十天:SQL加强训练

取别名&表连接

JOIN ON

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

  • 如下图,学生表和成绩表有sno
  • 成绩表和课程表有cno
  • 课程表和老师表有tno
image.png
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、查询所有选修“计算机导论”课程的“男”同学的成绩表

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1).创建数据库 create database学生选课数据库 2).创建四张表 Create table Stu...
    blvftigd阅读 5,532评论 0 0
  • 最近打算采用关系型数据库来理一下公司的运营数据,先拿点东西练手找感觉。下面是几个关于学生课业的表,需要建立一个数据...
    九天朱雀阅读 4,572评论 0 3
  • 今天早晨,妈妈在给我买锅盔的时候,小姑打来了电话,我很好奇,因为小姑一般打电话都是带我去玩,等我妈妈接完电话之后,...
    王思博阅读 1,549评论 0 0
  • (一) 最近想学习写作,于是根据别人的推荐读了《哈佛非虚构写作课:怎样写好一个故事》这本书。 读这本书之前,作为一...
    知澜阅读 6,161评论 4 6
  • 秦淮河畔状元楼,武定门外白鹭洲。 心雄何必空垂泪,景美无须重远游。 雨花台上悲白发,莫愁湖中看偏舟。 富贵是否成浮...
    庭上望月阅读 2,206评论 4 26

友情链接更多精彩内容