Mysql-多表查询

image

image

image
image
image

SELECT
*
FROM
emp;
SELECT
*
FROM
dept;-- 多表查询
SELECT
*
FROM
emp,
dept;-- 笛卡尔积 有A和B两个集合 取AB所有的组合情况
-- 消除无效数据
-- 查询emp和dept的数据,emp.dep_id=dept.did
-- 隐式内连接
SELECT
*
FROM
emp,
dept
WHERE
emp.dep_id = dept.did;-- 查询emp表的name,gender,dept表的dname
SELECT
emp.NAME,
emp.gender,
dept.dname
FROM
emp,
dept
WHERE
emp.dep_id = dept.did;-- 给表起别名
SELECT
t1.NAME as '姓名',
t1.gender as '性别',
t2.dname as '部门'
FROM
emp t1,
dept t2
WHERE
t1.dep_id = t2.did;

-- 显示内连接
SELECT * from emp INNER join dept on emp.dep_id = dept.did;

-- 显式内连接inner 可以省略
SELECT * from emp join dept on emp.dep_id = dept.did;

-- 左外连接
-- 查询emp表所有数据和对应的部门信息

SELECT * from emp LEFT JOIN dept on emp.dep_id=dept.did;

-- 右外连接
-- 查询dept表所有数据和对应的员工信息

SELECT * from emp RIGHT JOIN dept on emp.dep_id=dept.did;

SELECT * from dept LEFT JOIN emp on emp.dep_id=dept.did;

-- 子查询
-- 查询工资高于猪八戒的员工信息
-- 1.查询猪八戒的工资
SELECT salary from emp where name='猪八戒';

-- 2.查询工资高于猪八戒的员工信息
SELECT * from emp where salary >3600;

SELECT * from emp where salary >(SELECT salary from emp where name='猪八戒');

-- 单行单列 作用:
-- 查询财务部和市场部所有的员工信息
SELECT did from dept where dname='财务部' or dname='市场部';
SELECT * from emp where dep_id in(SELECT did from dept where dname='财务部' or dname='市场部');

-- 多行多列
-- 查询入职日期 是'2011-11-11'之后的员工信息和部门信息
SELECT * from emp where join_date>'2011-11-11';

SELECT * from (SELECT * from emp where join_date>'2011-11-11') t1 ,dept where t1.dep_id=dept.did;

posted @ 2022-11-26 23:13  NiceTwocu  阅读(21)  评论(0编辑  收藏  举报