精华内容
下载资源
问答
  • 数据库中join用法

    2013-12-07 22:31:35
    原链接 http://zh.wikipedia.org/wiki/%E8%BF%9E%E6%8E%A5_(SQL)#.E7.A4.BA...   一、join用法 内连接、外连接   示例用表: 雇员表(Employee) LastNameDepartmentID Rafferty31 Jones33 Steinberg33...

    原链接

    http://zh.wikipedia.org/wiki/%E8%BF%9E%E6%8E%A5_(SQL)#.E7.A4.BA.E4.BE.8B.E7.94.A8.E8.A1.A8

     

    一、join的用法

    内连接、外连接

     

    示例用表:

    雇员表(Employee)

    LastNameDepartmentID

    Rafferty31

    Jones33

    Steinberg33

    Robinson34

    Smith34

    JasperNULL

     

     

    部门表(Department)

    DepartmentID部门

    31销售部

    33工程部

    34书记

    35市场部

     

    1、内连接:相等连接、自然连接、交叉连接

     

    1)、显式的内连接与隐式连接(inner join == join )

     

    显示连接:SELECT  * from   employee join  department on employee.DepartmentID = department.DepartmentID

    等价于:

    隐式连接:SELECT  * from   employee,department WHERE employee.DepartmentID = department.DepartmentID

     

    注:当DepartmentID不匹配,就不会往结果表中生成任何数据。

     

    2)、相等连接

    提供了一种可选的简短符号去表达相等连接,它使用 USING 关键字。

    SELECT  * from   employee join  department  using (DepartmentID)

     

    注:与显式连接不同在于:DepartmentID只显示一列

     

    3)、自然连接

     比相等连接的进一步特例化。两表做自然连接时,两表中的所有名称相同的列都将被比较,这是隐式的。

     自然连接得到的结果表中,两表中名称相同的列只出现一次.

    select * from employee natural join department

     

    注:在 Oracle 里用 JOIN USING 或 NATURAL JOIN 时,如果两表共有的列的名称前加上某表名作为前缀,

    则会报编译错误: "ORA-25154: column part of USING clause cannot have qualifier" 

    或 "ORA-25155: column used in NATURAL join cannot have qualifier".

     

    4)交叉连接(又称笛卡尔连接)

     如果 A 和 B 是两个集合,它们的交叉连接就记为: A × B.  

    显示连接:

    select * from employee cross join department

    等价于

    隐式连接:

    select * from employee,department

     

     

    2、外连接

    并不要求连接的两表的每一条记录在对方表中都一条匹配的记录。

    1)左连接(left outer join == left join)

     若A表与B表左连接,A表对就的B表没有匹配,连接操作也会返回一条记录,对应值为NULL。

     

     如:

    Jaspernull null null

    Jones3333工程部

    Rafferty3131销售部

    Robinson3434书记

    Smith3434书记

    Steinberg3333工程部

     

     若A表对应B表中有多行,则左表会复制和右表匹配行一样的数量,并组合生成连接结果。

     如:select * from department  left join employee  on employee.departmentId = department.departmentId

     

    31销售部Rafferty31

    33工程部Jones33

    33工程部Steinberg33

    34书记Robinson34

    34书记Smith34

    35市场部nullnull

     

    2)、右连接(right outer join == right join)

    与左连接同(略)

    3)、全连接(full outer join ==full join)

    是左右外连接的并集. 连接表包含被连接的表的所有记录, 如果缺少匹配的记录, 即以 NULL 填充。

    select * from employee full outer join department on employee.departmentId = department.departmentId

     

    注:一些数据库系统(如 MySQL)并不直接支持全连接, 但它们可以通过左右外连接的并集(参: union)来模拟实现.

    和上面等价的实例:

     

    select * from employee left join department on employee.departmentId = department.departmentId

    union all

    select * from employee right join department on employee.departmentId = department.departmentId  

     

    注:SQLite 不支持右连接。

     

     

    展开全文
  • 主要给大家介绍了关于数据库中JOIN用法,文中通过示例代码介绍的非常详细,对大家学习或者使用数据库具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
  • 本章主要介绍数据库中Join的的用法,也是我们在使用数据库时非常基础的一个知识点。本次会介绍数据库中的inner join、left join、right join 的用法以及它们之间的区别。 文章如有错误还请大家及时指出~ 以下都是...

    前言

    欢迎关注公众号:Coder编程
    获取最新原创技术文章和相关免费学习资料,随时随地学习技术知识!

    本章主要介绍数据库中Join的的用法,也是我们在使用数据库时非常基础的一个知识点。本次会介绍数据库中的inner joinleft joinright join 的用法以及它们之间的区别。 文章如有错误还请大家及时指出~

    以下都是采用mysql数据库

    Join

    相信大家在学习数据库的使用时,都有使用过Join,对数据库中的两张或两张以上表进行连接操作。
    Join 分为:

    • 内连接(inner join)
    • 外连接(outer join)

    其中外连接分为:

    • 左外连接(left outer join)
    • 右外连接(right outer join)
    • 全外连接(full outer join)

    说明:

    1.其中外连接的“OUTER”关键字可以省略不写。
    2.内连接用于返回满足连接条件的记录;而外连接则是内连接的扩展,它不仅会满足连接条件的记录,而且还会返回不满足连接条件的记录。

    笛卡尔积

    在我们进行多表联合查询的时候会出现的一种情况——笛卡尔积现象

    我们以下面两张表举例:

    学生表(Student)
    |ID | StudentName | StudentClassID|
    |---|---|---|
    |1 | 小明| 1|
    |2 | 小红| 2|
    |3 | 小兰 | 3|
    |4 | 小吕 | 2|
    |5 | 小梓 | 1|

    班级表(Class)
    |ClassID| ClassName|
    |---|---|
    |1 | 软件一班|
    |2 | 软件二班|
    |3 | 软件三班|

    当我们进行查询操作的时候:

    select * from Student,Class;


    查询

    就会出现上面的情况,也就是笛卡尔现象,表Student中有5条记录,表Class中有3条记录,那么对于表Student而言有5种选择,对于表Class来说有3种选择。所以一共有 5 * 3 = 15种选择了,也就是笛卡尔积


    内连接——inner join

    内连接查询返回满足条件的所有记录,默认情况下没有指定任何连接则为内连接。
    例如:查询xx学生在xx班级 沿用上面的数据表

    select stu.StudentName,cl.ClassName from Student stu inner join Class cl on stu.StudentClassID=cl.ClassID;


    查询结果

    inner join

    左外连接——left join

    左外连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的连接操作符左边表的其他行。
    我们在原Student 表中新增学生:小美
    新增学生-小美
    例如: 查询xx学生在xx班级 沿用上面的数据表

    select stu.StudentName,cl.ClassName from Student stu left join Class cl on stu.StudentClassID=cl.ClassID;


    查询结果

    左外连接

    右外连接——right join

    右外连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的连接操作符右边表的其他行。
    我们在原Class表中新增班级:软件四班

    新增班级_软件四班

    例如: 查询xx学生在xx班级 沿用上面的数据表

    select stu.StudentName,cl.ClassName from Student stu right join Class cl on stu.StudentClassID=cl.ClassID;


    查询结果

    查询结果

    全连接——full join

    全连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的其他行。

    注:mysql默认不支持full join。

    这里我们就不做介绍了。


    文末

    欢迎关注个人微信公众号:Coder编程
    获取最新原创技术文章和免费学习资料,更有大量精品思维导图、面试资料、PMP备考资料等你来领,方便你随时随地学习技术知识!
    新建了一个qq群:315211365,欢迎大家进群交流一起学习。谢谢了!也可以介绍给身边有需要的朋友。

    文章收录至
    Github: https://github.com/CoderMerlin/coder-programming
    Gitee: https://gitee.com/573059382/coder-programming
    欢迎关注并star~
    微信公众号

    推荐阅读

    一篇让你理解进程与线程的区别与联系

    通过“表白”的方式,让我们快速了解网络协议

    一篇带你读懂TCP之“滑动窗口”协议

    参考文章:

    https://www.cnblogs.com/jackson-zhangjiang/p/7819634.html

    http://www.360doc.com/content/14/1229/21/7635_436727229.shtml

    转载于:https://www.cnblogs.com/coder-programming/p/10668123.html

    展开全文
  • 数据库join用法

    2018-11-29 10:42:49
    Left Join / Right Join /inner join 左连接where只影向右表,右连接where只影响左表。 1,Left Join ...左连接后的检索结果是显示tbl1的所有数据和tbl2满足where 条件的数据。 2,Right Join select * ...

    Left Join / Right Join /inner join

    左连接where只影向右表,右连接where只影响左表。

    1,Left Join

    select * from tbl1 Left Join tbl2 where tbl1.ID = tbl2.ID

    左连接后的检索结果是显示tbl1的所有数据和tbl2中满足where 条件的数据。

    2,Right Join

    select * from tbl1 Right Join tbl2 where tbl1.ID = tbl2.ID

    检索结果是tbl2的所有数据和tbl1中满足where 条件的数据。

    3,inner join

    select * FROM tbl1 INNER JOIN tbl2 ON tbl1.ID = tbl2.ID

    功能和 select * from tbl1,tbl2 where tbl1.id=tbl2.id相同。

    总结:

    • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
    • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
    • INNER JOIN: 如果查询的表中都有至少一个匹配,则返回行
    展开全文
  • ---------------------- Windows Phone 7...SQL join 用于根据两个或多个表的列之间的关系,从这些表查询数据。 表1 newClass 新闻类别 id className 1 社会新闻 2 娱乐新闻 3 体育新闻 表2 new 新
    ---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------
    


     

    SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

    表1 newClass 新闻类别
    id  className
    1  社会新闻
    2  娱乐新闻
    3  体育新闻

    表2 new 新闻表
    id title                                     content    classid
    1 刘德华有小孩了                   XXXX       2
    2 油价又高了                          油价YY    1
    3  林书豪得18分了                 林林林     3
    4  尼克斯大战猛龙24日7点    大战大战  3

    select  n.id, n.title, n.content, c.className  from [new] as n
    inner join [className] as c
    on n.classid = c.id

    ---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

    详细请查看:http://net.itheima.com/

    展开全文
  • 主要介绍了CI框架数据库查询之join用法,结合实例形式分析了join方法在数据库查询过程的使用技巧,需要的朋友可以参考下
  • 数据库join用法概览

    2018-08-01 12:03:59
    在关系代数,连接运算是由一个笛卡尔积运算和一个选取运算运构成的.首先用笛卡尔积完成对两个数据集合的乘积的运算,然后对省城的结果集合进行选区运算,确保只把分别来自两个数据集合并且具有重叠部分的行合并在一起...
  • left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的. 换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID). B表记录不足的...
  • 在mysql是无法执行的,mysql 不支持full join,可以换成下面这种union连接左右连接,即 left join + right join这种方式。 select * from a left outer join b  on a.name = b.name  union  select * ...
  • 下面是例子分析 ...INNER JOIN 主表和从表都存在的记录才会查出来,OUTER JOIN 如果主表存在的记录,从表不存在则用NULL替代   转载于:https://www.cnblogs.com/shouyeren/p/6178227.html
  • 一、sql的left join 、right join 、inner join之间的区别 left join(左联接) 返回包括左表的所有记录和右表联结字段相等的记录 right join(右联接) 返回包括右表的所有记录和左表联结字段相等的记录 ...
  • 这篇文章包括大部分JOINs...JOIN的几种用法在实际开发过程很容易造成混淆,程序员开发过程总是在处理混淆,下面将通过简洁的介绍这些用法。 一个很简单的例子,学生(user)和课程登记(course) 例子表 'user'
  • 数据库查询连接(JOIN)用法 概述 工作写SQL语句时需要用到在多个表之间各查询点数据,然后组合,利用mybatis返回给一个bean对象。 现在把这几个连接总结下,方便下次用时参考。 JOIN 下面是学生表student: id...
  • 数据库INNER JOIN、LEFT JOIN和RIGHT JOIN

    千次阅读 2017-09-29 15:55:12
    由于对数据库的INNER JOIN、LEFT JOIN和RIGHT JOIN用法有点模糊不清,特在此做一个梳理总结。 首先需明确一个概念:A INNER/LEFT/RIGHT JOIN B操作,A表被称为左表,B表被称为右表。 然后记住以下三点: A ...
  • 数据库中几种join(连接)的用法

    千次阅读 2013-01-11 16:08:52
    2、inner join等同于join:仅对满足连接条件的CROSS的列, 自然连接。 3、left outer join等同于left join:左表的所有行和右表满足条件的行。 4、right outer join等同于right join:与left outer join相同,...
  • MySQL中join用法解析

    千次阅读 2016-08-07 15:30:45
    MySQL中join用法解析实例数据库如下: student表:mysql> select * from student; +-----------+-----------+------+------+-------+ | Sno | Sname | Ssex | Sage | Sdept | +-----------+-----------+------+----...
  • 前言 本章主要介绍数据库中 groupby的...并且也会涉及Join的使用,关于Join的用法,可以看我写的上一篇文章:带你了解数据库中JOIN用法 如有错误还请大家及时指出~ 以下都是采用mysql数据库 Group By ...
  • 数据库中union的用法

    千次阅读 2019-03-06 17:20:09
    原文地址:... SQL Union和SQL Union All用法 UNION 指令的目的是将两个 SQL 语句的结果合并起来。从这个角度来看, UNION 跟 JOIN 有些许类似,...
  • left join 是left outer join的简写,left join默认是outer属性的。 Inner Join Inner Join 逻辑运算符返回满足第一个(顶端)输入与第二个(底端)输入联接的每一行。...它还返回任何在第二个输入没...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 331
精华内容 132
关键字:

数据库中join用法