连接查询:将多张表(》=2)进行记录的连接(按照某个指定的条件进行数据拼接),最终结果是:记录数有可能变化,字段数一定会增加(至少两张表的合并)
连接查询意义:在用户查看数据的时候,需要显示是数据来自多张表。
连接查询的分类 4类:内连接、外连接、自然连接、交叉连接。
连接查询:join ,使用方式:左表 A join 右表B
交叉连接 cross join 保证连接结构的完整性(不加条件时无任何意义)。
从一张表中循环取出每一条记录,每条记录都去另外一张表进行匹配,匹配一定成功(无条件匹配),而连接本身字数数就会增加(保留),结果笛卡尔积
语法:from 左表 A cross join 右表B ==from 左表A,右表B
如果 cross join 添加 on 条件后,与inner join on相同
内连接:inner join ,从左表中取出每一条数据,去右表中与所有的记录进行匹配,匹配必须是某个条件在左表中与右表中相同,最终才会保留结果。
语法:左表 A inner join 右表 B on A.字段1=B.字段1 on表示 连接条件:条件字段就是代表相同的业务含义(如student中 c_id(班级id)和class 表中 的id)
where 也可替换on ,只是效率太低,每个都去匹配一下。
select * from student A inner join class B on A.c_id=B.id
外连接:outer join 。以某个表为主,取出里面的所以记录,然后每条与另外的一张表进行连接,不管匹配成功与否,都会保留结果;能匹配上,正确保留,不能匹配,其他表的字段都置为NULL
外连接分为两种:
left join :左外连接(左连接),以左表A为主,
A left join B on A.字段=B.字段
right join:右外连接(右连接),以右表B为主
A right join B on A.字段=B.字段
自然连接:natural join,自动匹配连接条件,系统默认以字段名字作为匹配模式(同名字段作为条件,多个同名字段同时都作为同名条件),连接后会合并同名字段。(本身没有任意义,基本不用!)
分类:
自然内连接 :A natural join B
自然外连接 :A natural left join B
内连接/外连接 模拟自然连接:使用同名字段,合并字段
A left/right/inner join B using(同名字段名)