mysql数据库高级查询

1.exists 子查询:用来判断是否存在,例如
                              (1)create table if exsits school(....)判断school表是否存在   
                              (2)select * from school where exists(子查询)  
                                        子查询有返回结果,exists判断为true,外层父级查询执行。
                                        子查询无返回结果,exists判断为false,外层父级查询不执行 。



2.多表连接查询:
            分为三种 内连接 inner join
                             右外链接 right join
                             左外链接 left join                                                                                                                              (1)内连接例子:

mysql数据库高级查询_第1张图片
从表student和studentResult连表查询得出查询结果

select s.student,s.studentName,sr.subject,sr.studentResult from student as s inner join studengResulet as sr on(s.studentNO=sr.studentNO);
语句解释:  从student和studentResult表格查询student等几个字段,设student表别名s 设studengResult表别名为 sr 条件是student表的studentNo和student表的studentNO字段相等

mysql数据库高级查询_第2张图片
三表联查

(2)左联例子:

mysql数据库高级查询_第3张图片
左联查询

SELECT S.studentName,R.subjectNo,R.studentResult
FROM student AS S
LEFT JOIN result AS R
ON S.studentNo = R.studentNo;

简单来说 join左侧表对应字段去匹配右侧表字段,S.studentNO第一个匹配右侧R.student,S编号1匹配右侧R表匹配第一个成功没有第二个编号1那么结束,S表编号2匹配R表编号2,匹配到第一条数据,然后匹配到第二条数据,继续匹配数据,匹配不到结束,进行编号3的匹配。
(3)右连查询与左联查询相反

你可能感兴趣的:(mysql数据库高级查询)