-- 单表查询
SELECT sc.*FROM sc
SELECT * FROM course
-- 分页 LIMIT 从0开始检索
SELECT * FROM course LIMIT 0,3
SELECT * FROM course limit 3,3
SELECT * FROM course LIMIT 6,1
-- 多表连接查询
-- 1.等值与非等值连接查询
SELECT * FROM student;
SELECT * FROM course;
SELECT * FROM sc;
-- 笛卡儿积
SELECT * FROM student,sc;
SELECT * FROM student,sc WHERE student.Sno=sc.Sno
SELECT * FROM student,sc WHERE student.sno<>sc.sno
SELECT A.*,B.cno,B.Grade FROM student as A,SC as B WHERE A.sno=B.sno;
SELECT A.*,B.cno,C.Cname,B.grade FROM student A,sc B,course C
WHERE A.Sno=B.Sno AND B.cno=C.cno;
SELECT A.sno,A.Sname,A.Ssex,C.cname,B.grade FROM student A,sc B,course C
WHERE A.sno=B.sno and B.cno=C.cno;
-- 自身连接
SELECT * FROM course;
SELECT * FROM course A,course B;
-- 选择直接先修课
SELECT A.cno,A.cname,A.cpno,B.cname FROM course A,course B
WHERE A.Cpno=B.Cno AND A.cno=1;
-- 选择间接先修课
SELECT A.cno,A.cname,B.cpno FROM course A,course B
WHERE A.cpno=B.cno and A.cno=1;
-- FIRST SECOND
SELECT FIRST.cno, FIRST.cname, SECOND.cpno
FROM course FIRST,course SECOND
WHERE FIRST.cpno=second.cno AND FIRST.cno=1;
-- 选择pascal语言
SELECT A.cno,A.cname,B.cpno,C.cname FROM course A,course B,course C
WHERE A.cpno=B.Cno AND B.cpno=C.Cno;
-- 外连接
-- 查询每个学生的选课情况
SELECT * FROM student;
SELECT * FROM course;
SELECT * FROM sc;
-- LEFT JOIN: 以左表为基准,和右边的表连接,右边记录没用的以null代替
SELECT * FROM student A LEFT JOIN sc B on A.sno=B.sno;
-- 查找选过课程的学生的选课情况
SELECT * FROM student A RIGHT JOIN sc B on A.sno=B.sno;
SELECT * FROM sc A LEFT JOIN student B on A.sno=B.sno;
-- 查找每个学生的选课情况,要显示课程名称,三个表
SELECT * FROM student A LEFT JOIN sc B on A.sno=B.sno;
-- 三表连接 INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录
SELECT A.*,B.*,C.* FROM student A JOIN sc B INNER JOIN course C
ON A.sno=B.Sno and B.cno=C.Cno;
SELECT A.*,B.cno,C.cname,B.grade FROM student A INNER JOIN Sc B INNER JOIN course C
ON A.sno=B.sno AND B.Cno=C.Cno;
-- INNER JOIN/join(内连接,或等值连接):获取两个表中字段匹配关系的记录。
-- LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
-- RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
-- 复合条件连接
-- 嵌套查询 IN
SELECT * FROM student;
SELECT * FROM student WHERE Sage in (18,19);
-- 男生的选课情况
SELECT * FROM sc WHERE sno IN(SELECT sno FROM student WHERE Ssex='男');
SELECT * FROM sc WHERE sno IN(SELECT sno FROM student WHERE Ssex in ('男'));