sql连接操作

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行

举例如下:
-——————————————-
表A记录如下:
aID     aNum
1     a20050111
2     a20050112
3     a20050113
4     a20050114
5     a20050115

表B记录如下:
bID     bName
1     2006032401
2     2006032402
3     2006032403
4     2006032404
8     2006032408

-——————————————-
1.left join
sql语句如下:
select * from A
left join B
on A.aID = B.bID

结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
5     a20050115    NULL     NULL

(所影响的行数为 5 行)
结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.
-——————————————-
2.right join
sql语句如下:
select * from A
right join B
on A.aID = B.bID

结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
NULL     NULL     8     2006032408

(所影响的行数为 5 行)
结果说明:
仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.
-——————————————-
3.inner join
sql语句如下:
select * from A
innerjoin B
on A.aID = B.bID

结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404

结果说明:
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
-——————————————-
注:
LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。

语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2

说明:table1, table2参数用于指定要将记录组合的表的名称。
field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
compopr参数指定关系比较运算符:”=”, “<”, “>”, “<=”, “>=” 或 “<>”。
如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误.

  • mysql开启关闭update/delete安全模式

    mysql开启关闭update/delete安全模式 在使用mysql执行update的时候,如果不是用主键当where语句,会报如下错误,使用主键用于where语句中正常。 异常内容:Error Code: 1175. Y...

    mysql开启关闭update/delete安全模式
  • 关于COLLATE=utf8mb4_0900_ai_ci问题

    关于COLLATE=utf8mb4_0900_ai_ci问题 mysql8版本特有的对照,排序之类的,备份数据库时.sql脚本会自动设置COLLATE=utf8mb4_0900_ai_ci,,若将此脚本迁徙到mysql5.6...

    关于COLLATE=utf8mb4_0900_ai_ci问题
  • root@localhost拒绝问题

    mysqlworkbench连接mysql出现root@localhost denied问题,发现原因是登录mysql需要sudo,就是建立建立mysql连接是需要超级权限,所以连接不上去。 解决办法: 登录mysql,然后 use ...

    root@localhost拒绝问题
  • Mysql细节

    Mysql Mysql插入语句之value与values区别: ​ 二者可以混着用,不报错,但是value插入多行数据会快一点.

    Mysql细节
  • 数据库的锁

    数据库的锁 概要数据库锁一般可以分为两类,一个是悲观锁,一个是乐观锁。 乐观锁一般是指用户自己实现的一种锁机制,假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲...

    数据库的锁
  • ACID

    数据库的ACID性质 原子性:指整个数据库事务是不可分割的工作单位。只有使据库中所有的操作执行成功,才算整个事务成功;事务中任何一个SQL语句执行失败,那么已经执行成功的SQL语句也必须撤销,数据库状态应该退回到执行事务前的...

    ACID
  • mysql执行顺序

    mysql执行顺序 (1)from(3) join(2) on(4) where(5)group by(开始使用select中的别名,后面的语句中都可以使用)(6)avg,sum….(7)having(8) select(9) ...

    mysql执行顺序
  • antd输入文本域样式

    a-textarea文本域样式问题 当时开发遇到一个问题,使用antd的a-textarea的时候宽度定义不了,进一步排查发现a-textarea标签antd框架那边已经对这个样式做了约束,所以一般的加style改不了,转而...

    antd输入文本域样式
  • vuex基本使用

    vuex学习 简介​ vuex是专门用来管理vue.js应用程序中状态的一个插件。他的作用是将应用中的所有状态都放在一起,集中式来管理。这里所说的状态指的是vue组件中data里面的属性。 vuex组成结构示意图​ ...

    vuex基本使用
  • vue-axios的get请求个post请求

    vue-axios的get请求个post请求 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中,能够拦截请求和响应,能转换请求与响应数据,能取消请求,自动转换Json格式,浏览器...

    vue-axios的get请求个post请求