MySQL使用连接实现多表检索

1.内连接:

  INNER JOIN ,CRROSS JOIN,JOIN在MySQL中是等价的连接,会产生笛卡尔积。

连接运算符","(逗号)与之类似,但逗号运算符的优先级与其他连接类型的有所不同。有时,在其他连接类型的都正常的情况下,它会导致语法错误,因此建议尽量避免使用逗号运算符


  其他语法格式:使用ON子句代替WHERE子句。如:SELECT t1.*,t.* FROM t1 INNER JOIN t2 ON t1.i1 = t2.i2

  使用USING()子句。它在概念上类似于ON子句,但要求被连接的列必须同名。如以下的查询语句可以将mytbl1.b连接到mytbl2.b

    SELECT mytbl1.*,mytbl2.* FORM mytbl1 INNER JOIN mytbl2 USING (b);

2.左外连接和右外连接

  左外连接是使用LEFT JOIN,右外连接使用RIGHT JOIN

  LEFT JOIN 的工作方式是:先指定用于对两个表里的行进行匹配的列;接着,当左表的某行右表的某行相匹配时,两行的内容会被选取为一个输出行;当左表的某行在右表里无匹配时,

它仍然会被选取为一个输出行,只是与它连接的是右表的一个假行,其中的每一列都包含NULL。

  在使用时需要注意这样一个问题,即只有将右表里的列全部定义为not null的结果集里的行才没有什么问题。例如,右表里包含值为NULL的列,那么就无法将这些null值与标识未匹配行的那些null值区别开来。

猜你喜欢

转载自www.cnblogs.com/dgq-blog/p/9206970.html