MySQL数据库——多表查询连接

1、交叉连接:cross

#交叉连接 cross 
#将多条单表(员工表)和(部门表) 转化为一个表
#笛卡尔积,没有实际意义,

	select
	*
	from
	emp
	cross join
	dept;

2、自然连接:natural(自动匹配所有的重名列)

	**#自然连接 natural
	#查找emp表的empno、ename  和 dept 表的loc
	#优点:简单
	#缺点:没有指明各列属于那个表,效率低下**
	select
		empno,ename,loc
	from
		emp
	natural
	join dept;

	**#解决:直接在查询的字段列前加上表名**
	
	select
		emp.empno,emp.ename,dept.loc
	from
		emp 
	natural
	join dept;
	
	**#当然,这样也有缺点 我们可以利用别名是代码更加简洁**
	select
	e.empno,e.ename,d.loc
	from
	emp e
	natural
	join dept d;

3、using子句 (指定查询某一列字段)

	**缺点:包括了natrual的缺点,必须使用同名列**
	##根据部门查找empno、ename、deptno
	
	select
		e.empno,e.ename,d.loc,e.deptno
	from
		emp e
	join 
		dept d
	using (deptno);# 根据部门

4、on子句

	**#为了解决主键和外键不同名	使用on**
	
	select
		e.empno,e.ename,d.loc,e.deptno
	from
		emp e
	join dept d
	on (e.deptno=d.deptno);# 根据部门

问题:到底使用那种方法连接
(1)cross:不用
(2)natural 、using :必须使用相同字段列
(3)on:不管是否有没有同名的字段列,均可使用,可读性强,推荐使用!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值