( 9 )MySQL中的连接查询

MySQL中的连接查询

连接查询
连接查询:将多张表进行记录的连接(按照某个指定的条件进行数据的拼接)
最终结果:记录数可能有变化,字段数一定会增加(至少两张表的合并).
连接查询的意义:在用户查看数据的时候需要显示的数据来自多张表.
连接查询 : join 使用方式 : 左表 join 右表 ;
连接查询分类:
SQL中将连接查询分为四类:
内连接 , 外连接 , 自然连接 , 交叉连接
交叉连接:
cross join :从一张表中循环取出每一条记录,每条记录都去另外一张表
进行匹配 , 匹配一定保留(没有条件匹配),而连接本身字段就会增加(保留)最终形成的结果叫做:笛卡尔积
基本语法:
左表 cross join 右表 ; 等价于 from 左表,右表;
笛卡尔积没有意义: 应该尽量避免(交叉连接没什么用)
交叉连接存在的价值:保证连接这种结构的完整性
内连接:
内连接: [inner] join 从左表中取出每一条记录,去右表中与所有的记录进行匹配:
匹配必须是某个字段在左表中与右表中相同最终才会保留结果,否则不保留
基本语法:
左表 [inner] join 右表 on 左表.字段 = 右表.字段;
on表示连接条件,条件字段就是代表相同的业务含义.
字段别名已经表别名的使用: 在查询的时候,不同表有同名字段,这个时候需要加上表名才能区分,而表名太长通常使用别名.
内连接可以没有连接条件: 就是没有On之后的内容,这个时候系统会保留所有的结果即笛卡尔积
内连接可以使用 where 代替 on ; where没有on的效率高
外连接:
外链接 outer join 以某张表为主,取出里面的所有记录,每条与另外一张表进行连接:不管能不能匹配上条件,最终都会保留,能匹配的正确保留,不能匹配其他的字段都至空 为NULL
外链接分为两种: 是以某张表为主:有主表Left join : 左外连接(左连接) , 以左表为主Right join : 右外连接(右连接) , 以右表为主
基本语法:
左表 left join 右表 on 左表.字段 = 右表.字段;
-- on不能省略
左表 right join 右表 on 左表.字段 = 右表.字段;
-- on不能省略
自然连接:
自然连接: natural join 自然连接,就是自动匹配连接条件:以字段名字作为匹配模式(同名字段作为条件,多个同名字段都作为条件)自然连接分为两种 : 自然内连接 和 自然外连接
基本语法:
自然内连接 : select * from 左表 natural join 右表 using 条件
自然左外连接 : select * from 左表 natural Left join 右表 --on可以省略
自然右外连接 : select * from 左表 natural right join 右表
自然连接 : 没什么意义.
 

 
 
posted @ 2017-10-30 14:57  -老衲-  阅读(138)  评论(0编辑  收藏  举报