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

    结果例如以下:

     

    小结:

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

  • 相关阅读:
    ios端浏览器拍照上传到服务器,图片被旋转90度 php 解决方案
    wgs84 转百度经纬度坐标
    vue 编译大量空格警告问题总结 warning: Replace `↹↹` with `··`
    微信sdk php签名方法整理
    Vue 使用百度地图组件
    php unicode转字符串
    第十篇、微信小程序-view组件
    第九篇、微信小程序-button组件
    第八篇、微信小程序-progress组件
    第七篇、微信小程序-video组件
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10078149.html
Copyright © 2011-2022 走看看