-- 查询考试记录(学生表)学号姓名(成绩表)科目编号,分数SELECT*FROM student;SELECT*FROM result;/*
1. 分析需求,分析查询的字段来自哪些表(连接查询)
2. 确定使用哪种连接查询 (7种)
3. 确定交叉点(两表间的联系)
在此例中:学生表中学号和成绩表中学号相等为判断条件
*/-- inner joinSELECT s.studentNO,studentName,SubjectNO,StudentResult
FROM student AS s
INNERJOIN result AS r
ON s.studentNO = r.studentNO;-- rigth joinSELECT studentNO,studentName,SubjectNO,StudentResult
FROM student AS s
RIGHTJOIN result AS r
ON s.studentNO = r.studentNO;-- left joinSELECT studentNO,studentName,SubjectNO,StudentResult
FROM student AS s
LEFTJOIN result AS r
ON s.studentNO = r.studentNO;
三者的区别:以on为前提
操作
说明
INNER JOIN
如果表中至少有一个匹配,就返回
RIGHT JOIN
会返回左表中所有的值,即使在右表中没有匹配
LEFT JOIN
会返回右表中所有的值,即使在左表中没有匹配
-- 查询没有考试记录的同学SELECT studentNO,studentName,SubjectNO,StudentResult
FROM student AS s
LEFTJOIN result AS r
ON s.studentNO = r.studentNO
WHERE StudentResult ISNULL
-- 要查询父类子类对应表SELECT p.categoryName AS 父类, s.categoryname AS 子类
FROM category AS s,category AS p
WHERE s.pid=p.categoryid;-- 用联表查询也可-- 由于有课程不存在父类也有课程不存在子类-- 为了不出现null的查询结果 使用innerSELECT p.categoryName AS 父类, s.categoryname AS 子类
FROM category AS s
INNERJOIN category AS p
ON s.pid=p.categoryid;
分页和排序
排序:ORDER BY 升序ASC 降序DESC
-- ========排序 order by==========-- 排序:升序、降序-- order by 字段 升/降序:以规定字段的规定方式对查询结果排序SELECT*FROM student
ORDERBY studentNo ASC;-- 学号升序排列学生表-- 降序SELECT*FROM student
ORDERBY studentNo DESC;-- 学号升序排列学生表
DQL(续)where子句逻辑运算符运算符语法描述and &&a and b a&&b逻辑与,ab都为真则为真,否则为假or ||a or b a||b逻辑或,ab都为假则为假,否则为假Not !not a !a逻辑非,a为真则假,a为假则真-- 查询成绩在95到100之间学生的成绩SELECT `StudentId` , `StudentResult` FROM `result`WHERE StudentResu