欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MYSQL学习笔记2 (连接查询)

程序员文章站 2022-05-29 16:49:12
...

MYSQL学习笔记2 (连接查询)

1.连接查询分类(连接方式)

  内连接:
    等值连接
    非等值连接
    自连接
  外链接:
    左链接
    右连接
  全连接:

1.1.内连接和外连接的区别

  内连接:
    假设A和B表进行连接,使用内连接的话,凡是A表和B表能够匹配上的记录查询回来,就是内连接,AB两表没有主副之分。
  外连接:
    假设A和B表进行连接,使用外连接的话,AB两张表中有一张表是主表,一张表是副表。主要查询主表中的数据,捎带查询副表的数据,当副表的数据没有和主表的数据匹配上时,副表自动模拟出NULL与之匹配。

2.笛卡尔积现象

  当两张表进行连接查询时,没有任何条件进行限制,最终的查询结果条数为两张表记录条数的乘积。

3.表的别名

  当两张或更多张表中有相同的字段时,为了提高执行效率,需要给表起别名。
例如:
  select a.字段,b.字段,… from 表1 a,表2 b;

4.避免笛卡尔积现象

  避免笛卡尔积现象的方法:加条件进行过滤。
  注意:加条件进行过滤后不会减少匹配的次数,只是显示的是有效记录

例如:
  select a.字段,b.字段,… from 表1 a join 表2 b on a.字段=b.字段;

4.内连接

4.1 等值连接

	select 
		a.字段,
		b.字段,
		..... 
	from 
		表1 a 
		join 
		表2 b 
	on                   //条件
		a.字段=b.字段;

4.2 非等值连接

  连接条件中的关系是非等量关系

	select 
		a.字段,
		b.字段,
		..... 
	from 
		表1 a 
		join 
		表2 b 
	on                   //条件
		a.字段  between b.字段1 and b.字段2

4.2 自连接

  一张表看成两张表,自己连自己。
  自连接的条件可以是等量关系也可以是非等量关系。

	select 
		a.字段,
		b.字段,
		..... 
	from 
		表1 a 
		join 
		表1 b 
	on                   //条件
		a.字段  between b.字段1 and b.字段2;
		或
		a.字段=b.字段;

5.外连接

5.1.左连接

  左边的表是主表

	select 
		a.字段,
		b.字段,
		..... 
	from 
		表1 a 
	  left join 
		表1 b 
	on                   //条件
		a.字段  between b.字段1 and b.字段2;
		或
		a.字段=b.字段;

5.2.右连接

  右边的表是主表

	select 
		a.字段,
		b.字段,
		..... 
	from 
		表1 a  
	  right join 
		表1 b 
	on                   //条件
		a.字段  between b.字段1 and b.字段2;
		或
		a.字段=b.字段;