mysql数据库联表查询(四)

-- ------------------- 关联查询(多表查询)------------------------------- --
		/*
			查询出员工及其所在部门(员工姓名、所在部门名称)
		*/
	
	-- 交叉连接查询(笛卡尔乘积查询,不常用,会产生两表的记录数乘积条记录)
	SELECT LAST_NAME,DEPARTMENT_NAME FROM ssh_employee,ssh_department;
	-- 多表查询的规则 1)、确定查询的表; 2)、确定查询的字段; 3)、确定表与表之间的连接条件
		-- 1、内连接查询 (满足条件的才会显示)
		SELECT LAST_NAME,DEPARTMENT_NAME        -- b、确定查询的字段
					FROM  ssh_employee,ssh_department -- a、确认查询表格
						WHERE ssh_employee.DEPARTMENT_ID =ssh_department.ID;-- c、表与表之间的连接条件
		-- 内链接另一种写法
		SELECT LAST_NAME,DEPARTMENT_NAME
					FROM ssh_employee        -- 查询的副表
					INNER JOIN ssh_department-- 主表
					ON ssh_employee.DEPARTMENT_ID =ssh_department.ID; -- 两表关联条件
		-- 开发常用别名写法,代码更直观(别名 AS 可省略)
			SELECT e.LAST_NAME,d.DEPARTMENT_NAME
					FROM ssh_employee AS e       -- 查询的副表
					INNER JOIN ssh_department AS d-- 主表
					ON e.DEPARTMENT_ID =d.ID; -- 两表关联条件 
	

	-- 查询每一个部门的员工			
	-- 使用如果使用内连接查询。则不能显示员工数为0的部门
	/*
		2、左(外)连接查询:使用左边表的数据去匹配右表的数据,如果符合连接条件的结果则显示右表数据,不符合则显示NULL;
			但是左表的数据一定是完全显示的
			备注:其中 OUTER 可以省略,所以也称左连接查询
	*/
	
	SELECT d.DEPARTMENT_NAME, e.LAST_NAME;
			FROM ssh_department d -- 左表
				LEFT OUTER JOIN ssh_employee e -- 右表
					ON d.ID = e.DEPARTMENT_ID;


/*
		3、右(外)连接查询:使用右边表的数据去匹配右表的数据,如果符合连接条件的结果则显示左表数据,不符合则显示NULL;
			但是右表的数据一定是完全显示的
			备注:其中 OUTER 可以省略,所以也称右连接查询
	*/
	-- 查询每一个部门的员工	


SELECT d.DEPARTMENT_NAME,e.LAST_NAME
			FROM ssh_employee e-- 左表
				RIGHT OUTER JOIN ssh_department d-- 右表
					ON d.ID = e.DEPARTMENT_ID;

	/*
			4、自连接查询(虚拟一张上级部门表,采用内或外连接查询)
				查询部门的上级部门
	*/
	SELECT a.DEPARTMENT_NAME,b.DEPARTMENT_NAME
			FROM ssh_department a
			  LEFT OUTER JOIN	ssh_department b
				ON a.PARENT_DEPARTMENT=b.ID;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值