zoukankan      html  css  js  c++  java
  • 连接查询和集合查询

    版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/ZHOUCHAOQIANG/article/details/25965533
    

     在对数据库查询过程中。有些时候一张表中的数据不能满足我们的需求,这时候就须要把多张表连接起来。如以下的两张表所看到的。一张表涵盖了学生的信息。一张表表示学院的信息,假设我想知道某个学生是哪个学院的话,那么就须要把这两张表连接起来。

    StuID

    deptID

    stuName

    Age

    sex

    11090241032

    001

    王小虎

    22

    11090241032

    002

    张三

    23

    11090241033

    003

    王五

    22

     

     

     

    deptID

    deptName

    001

    管理学院

    002

    教育学院

    004

    文学院

     

    内连接查询

      等值连接

      是将指定的连接条件通过使用等号运算符(=)连接起来,并返回符合连接条件的记录

    语法格式:

    Select表名1.字段,表名2.字段...

    From表名1。表名2 where表名1.字段1=表名2.字段

     

    注意:在运行连接查询时。假设要查询的字段同一时候存在的两张表中,并且假设这两张表中的字段名同样的话。须要在select语句中加上该表名作为前缀

    演示样例

    select stuName,deptname from T_student ,t_dept  where t_student.deptid=t_dept.deptid

    (通过系别号字段来等值查询符合条件的记录)

    (使用表别名的方式不仅能够简化连接查询的操作,并且还能够提高查询的性能)

     

    非等值连接

    是指除使用等号外其它运算符的操作

    演示样例:

    (查询年龄大于15的学生的学院)

    ON子句建立相等连接

    使用方法与where同样

    语法规则:

    Select表名1.字段,表名2.字段

    From表名1 join表名2

    On表名1.字段=表名2.字段

    演示样例:

    select stuName,deptname from T_student a join t_dept b on a.deptid=b.deptid where a.age>15

    注意:尽管ON子句也能够用ANDkeyword指定其它查询条件。可是在使用ON子句建立相等连接时。其它的限制条件都写到WHERE子句中

    自连接查询

    连接查询中,还能够与自己本身表进行查询,这样的方式叫做自连接

    语法规则

    Select A.字段,A.字段

    From表名1 A,表名2 B

    Where A.字段=B.字段

    注意:由于是对同一张表查询,所以要为表指定不同的名称

    (如查询年龄最大的学生的姓名和年龄)

     

    外连接查询

     

     左外连接

    不仅显示满足连接条件的记录。并且还包括左側表中不满足条件的记录。

    语法规则:

    Select表名1.字段,表名2.字段

    From表名1 left join表名2

    On表名1.字段=表名2.字段2

     

    演示样例:

    select r.stuName,r.age,c.deptName 
    from T_student r left join t_dept c
    on r.deptid=c.deptid

    (由于第一张表中查询的字段在第二张表中未找到。所以置空值)

     

    右外连接

    与左外连接类似

    语法规则:

     Select表名1.字段,表名2.字段

    From表名1 right join表名2

    On表名1.字段=表名2.字段2

     

    全外连接

     不仅显示左側表中满足连接条件的记录。并且还会显示右側表中不满足查询条件的记录,能够觉得是左外连接和右外连接的合集

    语法规则:

     Select表名1.字段。表名2.字段

    From表名1 full join表名2

    On表名1.字段=表名2.字段2

     

    结果例如以下:

    select r.stuName,r.age,c.deptName 
    from T_student r FULL join t_dept c
    on r.deptid=c.deptid

     

     

    集合查询

    并操作

    使用keywordUNION。并操作返回的结果是包括了查询出来的全部不同的行

    语法规则:

    Select语法1

    UNION

    Select语法2

    演示样例:

    select r.stuName,r.age,c.deptName 
    from T_student r LEFT join t_dept c
    on r.deptid=c.deptid
    UNION
    select r.stuName,r.age,c.deptName 
    from T_student r RIGHT join t_dept c
    on r.deptid=c.deptid

    (相当于全外连接查询)

    注意:在进行并操作时,两个SELECT语句张红要查询的列相应的属性的个数和数据类型必须是同样的。

    交操作

    使用keyword是INTERSECT,交操作返回的结果集中包括了结果的公工行。交操作中不会出现反复行

    语法规则:

    Select语法1

    INTERSECT

    Select语法2

    演示样例:    

    结果例如以下:

    select r.stuName,r.age,c.deptName 
    from T_student r LEFT join t_dept c
    on r.deptid=c.deptid
    insertct
    select r.stuName,r.age,c.deptName 
    from T_student r RIGHT join t_dept c
    on r.deptid=c.deptid

     

    差操作

    运行差操作的keyword是EXCEPT,顾名思义,就是查询第一个表中的数据排除第二个表中数据的结果

    语法规则:

    Select语法1

    EXCEPT

    Select语法2

    演示样例:

    select r.stuName,r.age,c.deptName 
    from T_student r FULL join t_dept c
    on r.deptid=c.deptid
    EXCEPT
    select r.stuName,r.age,c.deptName 
    from T_student r RIGHT join t_dept c
    on r.deptid=c.deptid

    结果例如以下:

     

    小结:

    在连接查询中。常常使用到外连接和内连接。所以我们应该掌握这些连接的语法,以方便我们以后的使用。

  • 相关阅读:
    Blank page instead of the SharePoint Central Administration site
    BizTalk 2010 BAM Configure
    Use ODBA with Visio 2007
    Handling SOAP Exceptions in BizTalk Orchestrations
    BizTalk与WebMethods之间的EDI交换
    Append messages in BizTalk
    FTP protocol commands
    Using Dynamic Maps in BizTalk(From CodeProject)
    Synchronous To Asynchronous Flows Without An Orchestration的简单实现
    WSE3 and "Action for ultimate recipient is required but not present in the message."
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10078149.html
Copyright © 2011-2022 走看看