MySQL-多表查询

多表查询

补充知识:
	笛卡尔积:(相当于就是组合的意思)
		有两个集合AB,取这两个集合的所有组成情况
		要完成多表查询,需要消除无用的数据

查询语法:
	select
		列名列表
	from
		表名列表
	where...

多表查询的分类
1.内连接查询
2.外连接查询
3.子查询
内连接查询
1.内连接查询:
		1)隐式内连接:使用where条件消除无用的数据
			样例:
			查询所有员工信息和对应的部门信息:
                select * from emp,dept where emp.`dept_id` = dept.`id`;

                查询员工表的名称,性别,部门表的名称:
                select emp.name,emp.gender,dept.name from emp,dept where emp.`dept_id` = dept.`id`;
                取别名,简化查询:
                select
                    t1.name, -- 员工表的姓名
                    t1.gender, -- 员工表的性别
                    t2.name -- 部门表的名称
                from
                    emp t1,dept t2
                where
                    t1.`dept_id` = t2.`id`;

		2)显式内连接:
		   语法:
		   	select 字段列表 from 表名1 [inner] join 表名2 on 条件
		   	  样例:
		   	  	select * from emp inner join dept on emp.`dept_id` = dept.`id`;
			 或 select * from emp join dept on emp.`dept_id` = dept.`id`;

	注意要明确以下内容:
		从哪些表中查询数据
		条件是什么
		查询哪些字段
外连接查询
1.左外连接
	查询的是左表所有数据以及其交集部分
	语法:
		select 字段列表 from 表1 left [outer] join 表2 on 条件;
	

    查询所有员工信息,如果员工有部门,则查询部门名称,没有部门,则不显示部门名称:
    #该方法存在问题:如果没有部门,则该条数据所有信息都不显示了
    select
        t1.*,t2.`name`
    from
        emp t1,dept t2
    where
        t1.`dept_id` = t2.`id`;

    #正确写法
    select
        t1.*,t2.`name`
    from
        emp t1 left join dept t2
    on
        t1.`dept_id` = t2.`id`;


2.右外连接
	查询的是右表所有数据以及其交集部分
	语法:
		select 字段列表 from 表1 right [outer] join 表2 on 条件;


	select
        *
    from
        dept t2 right join  emp t1 
    on
        t1.`dept_id` = t2.`id`;

子查询
概念:
	查询中嵌套查询,称嵌套查询为子查询
	
样例:
-- 查询工资最高的员工信息
-- 1.查询最高的工资是多少
select MAX(salary) from emp;

-- 2.查询员工信息,并且工资等于最高工资的
select * from emp where emp.`salary` = 9000;

-- 一步完成该操作 子查询
select * from emp where emp.`salary` = (select MAX(salary) from emp);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值