您的位置:首页 > 数据库 > MySQL

mysql基础总结 连接查询

2017-03-29 19:19 543 查看
连接查询
---------------------------------------------------------

将多张表进行记录的连接;

四类连接查询:内连接 ,外连接,自然连接,交叉连接

交叉连接:

从一张表中循环取出每一条记录去另一张表的每一条记录进行匹配,最终形成的表叫笛卡尔积。

左表 cross join 右表;

内连接

——————————————————————————————————————————

左表的每一条记录与右表的所有记录进行匹配:当左表的某个条件与右表的某个条件相同时,结果才会保留。

左表 [inner] join 右表 on 左表.字段=右表.字段;//on表示连接条件

当on后面没有条件,结果会形成笛卡尔积;

where可以代替on,但是使用on效率更高;

字段别名,表别名



select s.* ,c.name as c_name ,

c.room from my_student as s inner join my_class as c on s.id=c.id;

外连接

———————————————————————————————————————————

以某张表为主,取出里面的记录,然后每条记录与另一张表进行连接;

不管能不能匹配上条件,最终都会保留:能匹配,能正确保留;不匹配,其副表的字段为空;

 

外连接分为两种:

有主表

   left join:左外连接,以左表为主

   right join:右外连接,以右表为主

语法:select * from a left join b on 左表.字段=右表.字段;

      select * from b right join a on 左表.字段=右表.字段;

以上两种效果相同,都以a为主表

自然连接:

——————————————————————————————————————————

nature join:自动匹配连接条件:系统一字段的名字作为匹配模式

(同名字段就作为条件,多个同名字段就都作为条件)

自然连接:分为自动内连接和自动外连接。

自然内连接

select * from 表名1 nature join 表名2;//连接后合并同名字段

自然外连接

select * from 表名1 nature left join 表名2;

外连接,内连接可以模拟自然连接

例:  select * from 表名1  left join 表名2 using(字段);using()合并字段
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: