1.EXISTS子查询
①DROP TABLE IF EXISTS temp;#检测temp表是否已经创建
CREATE TABLE temp(.......);
②语法 SELECT .....FROM 表名 WHERE EXISTS(子查询);
为TRUE有返回结果,为FALSE无返回结果,外层查询不执行。
(注:只出现在子查询中而没有出现在父查询中的列不能包含在输出列)
2.多表查询
① 内连接
SELECT ... FROM 表1 INNER JOIN 表2 ON.......等价于 SELECT .... FROM 表1,表2 WHERE...
SELECT`student`.`studentName`,`result`.`subjectNo`,`result`.`studentResult`
FROM `student`,`result`
WHERE `student`.`studentNo` = `result`.`studentNo`;
SELECT S.`studentName`,R.`subjectNo`,R.`studentResult`
FROM `student` AS S
INNER JOIN `result` AS R ON (S.`studentNo` = R.`studentNo`);
② 三表内连接
SELECTS.studentName AS 姓名,SU.subjectName AS 课程,R.studentResult AS 成绩
FROMstudent AS S
INNER JOIN `result` AS R ON (S.`studentNo` = R.`studentNo`)
INNER JOIN `subject` AS SU ON(SU.subjectNo=R.subjectNo);
③外链接:左外连接
SELECT S.studentName,R.subjectNo,R.studentResult
FROM resultAS R
LEFT JOIN student AS S
ON S.studentNo = R.studentNo;
④右外连接
SELECT图书编号,图书名称,出版社名称
FROM 图书表
RIGHT JOIN 出版社表
ON 图书表.出版社编号 = 出版社表.出版社编号;
3.视图
①基本概念:视图是一张虚拟表,表示一张表的部分数据或多张表的综合数据。
②创建视图:CREATE VIEW view_name AS <SELECT 语句>;
③删除视图:DROP VIEW[IF EXISTS]view_name;
④查看视图:SELECT 字段1,字段2,....FROM view_name;