-- JION(表) ON (判断的条件)连接查询 -- where 等值查询 SELECT studentNo,studentName,SubjectNo,StudentResult FROM student AS s INNERJOINresultAS r WHERE s.studentNo=r.studentNo
--Right Join SELECT s.studentNo,studentName,SubjectNo,StudentResult FROM student AS s RIGHTJOINresultAS r ON s.studentNo = r.studentNo
--LEFT Join SELECT s.studentNo,studentName,SubjectNo,StudentResult FROM student AS s LEFTJOINresultAS r ON s.studentNo = r.studentNo
操作
描述
Inner join
如果表中至少有一个匹配,就返回行
left join
即使左表中没有匹配,也会从左表中返回所有的值
right jion
即使右表中没有匹配,也会从右表中返回所有的值
-- 查询考的同学 SELECT s.studentNo,studentName,SubjectNo,StudentResult FROM student AS s LEFTJOINresultAS r ON s.studentNo = r.studentNo WHERE StudentResult ISNULL
-- 查询了参加考试同学的信息:学号:学生姓名:科目名:分数 SELECT s.`studentNo`,`studentName`,`SubjectName`,`studentResult` FROM student s RIGHTJOINresult r ON r.studentNo=s.studentNo INNERJOIN`subject` sub ON r.SubjectNo=sub.SubjectNo
-- 我要查询哪些数据 SELECT .... -- 从哪几个表中查 FROM 表 xxx JOIN 连接的表 ON 交叉条件 -- 假设存在一中多张表查询,先查询两章表,然后再慢慢增加
--FROM a LEFT JOIN b 左为准 --FROM a RIGHT JOIN b 右为准
自连接(了解)
自己的表跟自己的表连接,核心:一张表拆为两张一样的表
父类
categoryid
categoryName
2
信息技术
3
软件开发
5
美术设计
子类
pid
categoryid
categoryName
3
4
数据库
2
8
办公信息
3
6
web开发
5
7
ps技术
操作:查询父类对应子类关系
父类
子类
信息技术
办公信息
软件开发
数据库
软件开发
web开发
美术设计
ps技术
-- 查询父子信息
SELECT a.`categroryName`AS`父栏目`,b.`categroryName`AS`子栏目` FROM`catgroy`AS a,`catgroy`AS b WHERE a.`categoryid`=b.`pid`
-- 查询学员所属的年级(学号,学生的姓名,年级) SELECT studentNo,studentName,gradeName FROM student s INNERJOIN`grade` g ON s.`GradeId`=g.`GradeId`
-- 排序: 升序ASC 降序 DESC SELECT xx FROM xx JOIN xx WHERE xx ORDERBY xx ASC || DESC
分页
-- 为什么要分页 -- 缓解数据库压力,给人的体验更好
-- 分页,每页显示五条数据
-- 语法: limit 当前页,页面的大小 -- limit 0,5 1-5 -- limit 1,5 1-5 -- limit 6,5 SELECT s.`StudentNo`,`StudentName`,`SubjectName`,`StudentResult` FROM student s INNERJOIN`result` r ON s.`StudentNo`=r.`StudentNo` INNERJOIN`subject` sub ON r.`subjectNo`=sub.`subjectNo` WHERE subjectName='数据结构-1' ORDERBY StudentResult ASC LIMIT0,5
-- 1.查询 数据库结构-1的所有考试结构(学号,科目编号,成绩) 降序 -- 方式一: 连接查询 SELECT`StudentNo`,r.`SubjectName`,`StudentResult` FROM`result` r INNERJOIN`subject` sub ON r.SubjectNo = sun.SubjectNo WHERE subjectName = '数据库结构-1' ORDERBY StudentResult DESC
-- 方式二:使用子查询(由里及外) SELECT`StudentNo`,r.`SubjectName`,`StudentResult` FROM`result` WHERE StudentNo=( SELECT SubjectNo FROM`subject` WHERE SubjectName = '数据库结构-1' ) ORDERBY StudentResult DESC
-- 分数不少于80分的学生的学号和姓名 SELECTDISTINCT s.`StudentNo`,`StudentName` FROM student s INNERJOINresult r ON r.StudentNo = s.StudentNo WHERE StudentResult>=80
-- 在这个基础上 增加一个科目 ,高等数学-2 SELECTDISTINCT s.`StudentNo`,`StudentName` FROM student s INNERJOINresult r ON r.StudentNo = s.StudentNo WHERE StudentResult>=80AND`SubjectNo`=( SELECT Subject FROM`subject` WHERE SubjectName='高等数学-2' )
-- 查询课程为 高等数学-2 且分数不小于80分的同学的学号和姓名 SELECT s.`StudentNo`,`StudentName` FROM student s INNERJOINresult r ON s.StudentNo = r.StudentNo INNERJOIN`subject` sub ON r.`SubjectName`='高等数学-2' WHERE`SubjectaName`='高等数学-2'AND StudentResult >=80