一.sql中连接查询分类:
-
内连接,
-
外连接,(左外连接,右外连接)
-
自然连接,
-
交叉连接
二.内连接
1.概念:内链接[inner]join,从左表中取出每一条记录,去右表中与所有记录进行匹配;是某个条件在左表中与右表中相同最终才会有保留结果,否则不保留。
2.基本语法:
左表 [inner] join 右表 on 左表.字段 = 右表.字段;
on表示连接条件:条件字段就是代表相同的业务含义(如mi.mTypeId和mti.mid),大多数情况下为两张表中的主外键关系。
将两个表中满足条件的行组合起来作为结果集,内连接中只有两个表中匹配行的结果集才能显示出现。
string sql = "select mi.*,mti.mTitle as MTypeTitle " +
"from MemberInfo as mi " +
"inner join MemberTypeInfo as mti " +
"on mi.mTypeId=mti.mid " +
"where mi.mIsDelete=0";
3.内连接有两种:
隐士连接:没有INNER JOIN,形成的中间是两个表的笛卡尔积
显示连接:有INNER JION,形成的中间表示两个表经过ON条件过滤后的笛卡尔积
三.补充:
连接查询不限于两张表,可以是三张,四张,N张。通常连接查询并不是需要整个笛卡尔积,只是需要其中的一部分,那就要用主外键关系去去除掉不需要的记录。
两张表查询至少有一个外键条件,N张表查询至少有N-1个外键条件。