多表之间关联查询:
据库操作中,多表联合查询是后台开发者常用到的查询语句。
JOIN
SQL JOIN 子句用于把来自两个或多个表的行结合起来,最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)、SQL LEFT JOIN、SQL RIGHT JOIN、SQL FULL JOIN,其中前一种是内连接,后三种是外链接
JOIN 按照功能大致分为如下三类:
1.CROSS JOIN(交叉连接):
交叉连接又笛卡尔积连接
卡尔积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。笛卡尔积又叫笛卡尔乘积,是一个叫笛卡尔的人提出来的。 简单的说就是两个集合相乘的结果。 假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。
交叉连接的表现在于:行数相乘、列数相加
隐式交叉连接:SELECT * FROM A, B
显示交叉连接:SELECT * FROM A CROSS JOIN B
2.INNER JOIN(内连接或等值连接)
inner join内连接也叫等值连接,内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。
显示内连接:SELECT * FROM A INNER JOIN B ON A.id = B.id
隐式内连接:SELECT * FROM A,B WHERE A.id = B.id
注释:INNER JOIN 与 JOIN 是相同的。
3. OUTER JOIN(外连接)
外联接可以是左向外联接、右向外联接或完整外部联接。也就是说外连接又分为:左外连接、右外连接、全外连接,外连接需要有主表或者保留表的概念
左外连接(LEFT JOIN),取左并集
注释:在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN。
注释:在某些数据库中,RIGHT JOIN 称为 RIGHT OUTER JOIN。
分页查询:
关键字:LIMIT ( MySQL独有的语法 )
格式:select * from table limit m,n
其中m是指记录开始的index,从0开始,表示第一条记录
n是指从第m+1条开始,取n条。
select * from tablename limit 2,4
即取出第3条至第6条,4条记录
子查询:
子查询又称为内部查询,它允许把一个查询嵌套在另一个查询语句中,将第一个查询出的结果作为第二个查询的查询条件。
MySQL架构:
执行过程: