Browse Source

0416优化文档

王立琳 3 years ago
parent
commit
0aa70a6a60
1 changed files with 19 additions and 18 deletions
  1. 19 18
      sql/04.multitable.md

+ 19 - 18
sql/04.multitable.md

@@ -51,7 +51,7 @@ insert into table2 select 3, 70
 
 ### 1、概念
 
-内联接:也称等值连接,返回两张表都满足条件的部分
+内联接:也称等值连接,返回两张表都满足连接条件的部分
 
 > 注释:inner join 就等于 join
 
@@ -83,26 +83,27 @@ select * from table1 inner join table2 on table1.id = table2.id
 	<td>100</td>
 </tr>
 </table>
+
 > 注释:只返回符合条件的 table1 和 table2 的列
 
-与下列执行果相同
+与下列执行果相同
 
 ```sql
 A: select a.*, b.* from table1 a, table2 b where a.id = b.id
 B: select * from table1 cross join table2 where table1.id = table2.id
 ```
 
-> 注释:cross join 后加条件只能用 where,不能用 on
+> 注释:现已不建议使用 A 方法进行内连接取数,cross join 后加条件只能用 where,不能用 on
 
 ## 二、外连接
 
 ### 1、概念
 
-包括左外联接(left join)、右外联接(right join)或完整外部联接
+包括左外联接(left join)、右外联接(right join)或完整外部联接
 
-### 2、左连接:left join 或 left outer join
+### 2、左连接
 
-(1)左向外联接的结果集包括 left outer 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值(null)。
+(1)左外联接(left join 或 left outer join)的结果集包括左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值(null)。
 
 (2)SQL 语句
 
@@ -138,11 +139,12 @@ select * from table1 left join table2 on table1.id = table2.id
 	<td>NULL</td>
 </tr>
 </table>
-> 注释:包含 table1 的所有子句,根据指定条件返回 table2 相应的字段,不符合的以 null 显示
 
-### 3、右连接:right join 或 right outer join
+> 注释:包含 table1 的所有行,根据指定条件返回 table2 相应的字段,不符合的以 null 显示
+
+### 3、右连接
 
-(1)右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
+(1)右外联接(right join 或 right outer join)是左外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
 
 (2)SQL 语句
 
@@ -178,11 +180,12 @@ select * from table1 right join table2 on table1.id = table2.id
 	<td>70</td>
 </tr>
 </table>
-> 注释:包含 table2 的所有子句,根据指定条件返回 table1 相应的字段,不符合的以 null 显示
 
-### 4、完整外部联接:full join 或 full outer join
+> 注释:包含 table2 的所有行,根据指定条件返回 table1 相应的字段,不符合的以 null 显示
+
+### 4、完整外部联接
 
-(1)完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
+(1)完整外部联接(full join 或 full outer join)包含左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
 
 (2)SQL 语句
 
@@ -224,6 +227,7 @@ select * from table1 full join table2 on table1.id = table2.id
 	<td>70</td>
 </tr>
 </table>
+
 > 注释:返回左右连接的和(见上左、右连接)
 
 ## 三、交叉连接(完全)
@@ -302,13 +306,8 @@ select * from table1 cross join table2
 	<td>70</td>
 </tr>
 </table>
-> 注释:返回 3*3=9 条记录,即笛卡尔积
-
-等价(与下列执行效果相同)
 
-```sql
-A: select * from table1, table2 
-```
+> 注释:返回 3*3=9 条记录,即笛卡尔积
 
 ## 三、多表更新、删除
 
@@ -449,6 +448,7 @@ delete from table1 where not exists(select 1 from table2 b where table1.id = b.i
 	<td>70</td>
 </tr>
 </table>
+
 > 注释:将 table2 表中未使用的 table1 表编号删除
 
 
@@ -491,5 +491,6 @@ delete from table1 where exists(select 1 from table2 b where table1.id = b.id)
 	<td>70</td>
 </tr>
 </table>
+
 > 注释:将 table2 表中使用的 table1 表编号删除