连接查询与子查询

来源:互联网 发布:爱狗人士杨玉华 知乎 编辑:程序博客网 时间:2024/04/28 13:56

连接查询

连接查询是将两个或多个的表按某个条件连接起来,从中选取需要的数据,连接查询是同时查询两个或两个以上的表的使用的。当不同的表中存在相同意义的字段时,可以通过该字段来连接这几个表。

 

     1.内连接查询

            内连接查询是一种最常用的连接查询。内查询可以查询两个或两个以上的表。举例说明两个表的连接查询。当该字段的值相等时,就查询出该记录。

      举个栗子~

       SELECT  num,name,employee.d_id,sex,d_name,function

               FROM employee ,department

                WHERE employee.d_id=department.d_id;

 

      2.外连接查询

            基本语法:

                 SELECT 属性名列表

                                FROM 表名1  LEFT | RIGHT JOIN 表名2

                                ON 表名1.属性1=表名2.属性2;

 

 

  • 左连接查询

                  进行左连接查询时,可以查出表1的表中所有记录,而表2所指的表中,只能查询出匹配的记录

 

  • 右连接查询

                  进行右连接查询时,可以查出表2的表中所有记录,而表1所指的表中,只能查询出匹配的记录

     3.复合·条件查询

                  在连接查询时,也可以增加其他的限制条件,使查询结果更加准确。

 

 

子查询

       子查询是将一个查询语句嵌套在另外一个查询语句中,内层查询语句的查询结果,可以为外层查询语句提供查询条件。

          举个栗子~IN

          SELECT   *   FROM   employee

                       WHERE  d_id   IN

                         (SELECT   d_id    FROM   department);

          还 举个栗子~比较运算符

          SELECT  id ,name, score FROM computer_stu

                    WHERE  score>=

                           (SELECT score FROM scholarship

                              WHERE level=1);

           还 举个栗子~EXISTS(表示存在,使用EXISTS关键字时,内层查询语句不反悔查询的记录,而是返回一个真假值)

          SELECT  *   FROM employee

                        WHERE EXISTS

                       ( SELECT d_name FROM department

                                    WHERE d_id =1003);

            还 举个栗子~ANY(表示满足其中任一条件)

                如查询获得任意一个奖学金的最低分,即只要获得奖学金都满足条件

          SELECT * FROM computer_stu

                 WHERE score >=ANY

                         ( SELECT score FROM scholarship);

               最后一个栗子~ALL(表示满足所有条件)

                如查询获得最高奖学金的记录

           SELECT * FROM computer_stu

                  WHERE score >=ALL

                         ( SELECT score FROM scholarship);

 

 

0 0
原创粉丝点击