MySQL——查询(2)

一、目标

	1、掌握SQL多表连接查询
	2、掌握SQL子查询操作

二、知识点

1、多表连接查询
	种类:
		1、内连接查询
			关键字:inner join  ...  on 查询条件
			作用:用于在数据库中将多个表通过主外键关联在一起,实现多个
				 表的数据查询.
			原理:通过主键去关联外键数据,在外键表中所存在数据才能通过
				 内连接查询获取。
	SELECT * FROM student;
	SELECT * FROM score;

/*查询出参加考试的学员信息包括成绩*/
SELECT * FROM student INNER JOIN score ON student.`STU_ID`=score.`u_id`
/*数据库性能优化*/
SELECT * FROM student s,score sc WHERE s.stu_id=sc.`u_id`


2、外连接查询
		种类:左外连接、右外连接查询
		关键字: left join  、right join
		作用:在查询中将查询的关系通过外链接实现主次的区分从而获得查询的
			  数据.		

/*获取所有学员的所有信息*/
SELECT * FROM student LEFT JOIN score ON student.`STU_ID`=score.`u_id`
SELECT * FROM student RIGHT JOIN score ON student.`STU_ID`=score.`u_id`
SELECT s.stu_id,s.stu_name,s.stu_age,s.stu_sex,sc.`c_id`,sc.`c_score` 
FROM student s LEFT JOIN score sc ON s.`STU_ID`=sc.`u_id`

/*获取市场部员工信息*/
SELECT * FROM emp e,dept d WHERE e.dept_no=d.dept_no AND d.dept_name='市场部'

3、子查询
	作用:实现查询的嵌套,将查询条件以普通查询获取。
	种类:
		1、普通子查询
			要求:
				1、查询返回的字段不能操作一个
				2、查询返回的记录不能操作一条
				
		2、in子查询
			在子查询可以返回多条记录,通过匹配的方式获取子查询结果

/*获取市场部员工信息   普通子查询*/

SELECT * FROM emp WHERE 
emp.`dept_no`=(SELECT dept_no FROM dept WHERE dept.`dept_name`='市场部')

SELECT * FROM emp e,(SELECT dept_no FROM dept WHERE dept.`dept_name`='市场部') dp
WHERE dp.dept_no=e.dept_no;

SELECT * FROM emp e,(SELECT * FROM dept) dp
/*查询返回的字段不能操作一个*/
SELECT * FROM emp WHERE 
emp.`dept_no`=(SELECT * FROM dept WHERE dept.`dept_name`='市场部')
/*查询返回的记录不能操作一条*/
SELECT * FROM emp WHERE 
emp.`dept_no`=(SELECT dept_no FROM dept)

/*in子查询*/
SELECT * FROM emp e WHERE e.`dept_no` IN(SELECT dept_no FROM dept) 

/*查询平均薪资最低的部门的员工信息*/	
SELECT * FROM emp e,(
SELECT dept_no ,MIN(s) FROM (
	SELECT dept_no,MIN(sal) s FROM 
		(SELECT dept_no,AVG(emp_sal) sal FROM emp GROUP BY dept_no) dp
		GROUP BY sal
	)depts 
)d WHERE e.`dept_no`=d.dept_no;  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值