首页 > 数据库 > MySQL > 正文

MySql之多表查询

2024-07-24 13:00:16
字体:
来源:转载
供稿:网友

1、内连接

1).方言版

SELECT   e.empname,  d.`deptname` FROM  emp e,  dept d WHERE e.`deptno` = d.`deptno` ;

2).标准版

SELECT   e.`empname`,  d.`deptname` FROM  emp e   INNER JOIN dept d     ON e.`deptno` = d.`deptno` ;

3).自然版

SELECT   e.`empname`,  d.`deptname` FROM  emp e natural   join dept d ;

2、外连接

1).左外连接:左表无论是否满足条件都会被查询出来,而右表只有满足条件的才能被查询出来。左表中不满足条件的记录,右表不分都为NULL。

SELECT   e.`empname`,  d.`deptname` FROM  emp e   LEFT OUTER JOIN dept d     ON e.`deptno` = d.`deptno` ;

2).右外连接:右表无论是否满足条件都会被查询出来,而左表只有满足条件的才能被查询出来。右表不满足条件的记录,左表部分都为NULL。

SELECT   e.`empname`,  d.`deptname` FROM  emp e   RIGHT OUTER JOIN dept d     ON e.`deptno` = d.`deptno` ;

3、子查询

查询中有查询(查看SELECT关键字的个数)

1).出现的位置

一种为where后作为条件存在,另一种为from后作为表存在(多行多列)

2).根据条件结果分类

Ⅰ.单行单列:SELECT   *    FROM   表1   别名1    WHERE    列1    [>    <    =   >=   <=   != ]  (SELECT  列   FROM   表2    别名2    WHERE    条件)

Ⅱ.多行单列:SELECT   *    FROM   表1   别名1    WHERE    列1    [IN   ANY    ALL ]  (SELECT  列   FROM   表2    别名2    WHERE    条件)

Ⅲ.单行多列:SELECT   *    FROM   表1   别名1    WHERE    (列1   列2)   IN  (SELECT  (列1,列2)   FROM   表2    别名2    WHERE    条件)

Ⅵ.多行多列:SELECT   *    FROM   表1   别名1    ,(SELECT ......)    别名2    WHERE    条件

  


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表