1.什么是连接查询?
如果你已经了解了MySQL的单表查询,那么对理解连接查询就应该不会有太大问题。单表是对一个表进行操作,而连接查询就是将多个表连接在一起,做到化多为一,在以前操作一个表的情况下变成同时操作多个表。
2.连接查询的种类?
【1】内连接查询
(1)交叉连接(又称 “笛卡尔连接” 或 “叉乘”)
所有内连接查询基础,
此类返回的是表的笛卡尔积,即各表行数相乘的结果。
简单来说笛卡尔积指一个表中的所有成员与另外一个表中所有的成员都有关系,它们的sql语句为
:select * from table1 cross join table2;
(2)内连接查询概要
语法如下:
select 列名(a表和b表共有字段名) from table1 [inner] join table2 on table1.column1=table2.column2(其中的column1和column2必须为主键和外键()) [where condition(条件表达句,可不写)]
(3)自然连接
连接依据为相同字段(字段名和属性相同)
作用是去除重复列。
【2】多表连接查询
(1)方法
其实就是将表两两连接,最后成为一张表。
(2)语法
select 列名(作用同上) from table1 join table2 on table.column1=table.column2(作用同上) join table3 on table2.column2=table3.column3 【where condition】
(3)简单多表连接查询
此方法相较与前面那种相比简单很多。
语法如下:
二表 select 列名 from table1,table2 where table1.column1=table2.column2 【and 其他条件】
三表或更多表则用and连接 其他并无大的改变。
【3】外连接查询
(1)左外连接
结果包括左表所有记录和右表满足条件记录
语法:
select 列名 from table1 left join table2 on table1.column=table2.column where 条件;
(2)右外连接
与左外连接相反
语法:
与左外连接相反。
【4】连接查询综合应用
是在连接查询基础上运用order by,group by等