-- 创建部门表 dept
create table dept(
did int(8) PRIMARY key ,
dname varchar(20)
);
select * from dept;
insert into dept values(1,'人力资源')
insert into dept values(2,'计生办')
insert into dept values(3,'计生委');
-- 查 寻员工的详细信息 ( emp dept)
-- 查询出的数据有问题 select * from emp ,dept ;
select * from emp , dept where deptno= did;
select * from emp , dept where emp.deptno= dept.did;
-- 内连接 inner join 表名 on
select * from emp inner join dept on deptno= did;
-- 查询表 emp dept
select * from emp ;
select * from dept;
-- 内连接 inner join 表名 on 筛选条件
-- 查询员工的信息以及所在部门信息(没有部门的员工 不显示)
-- 最普通的 方式查询
select * from emp ,dept where emp.deptno=dept.did;
select * from emp inner join dept on emp.deptno=dept.did;
-- inner join on 查询出来的数据 是 两张表的 交集数据
-- 外连接 有两种 left join 表名 on 左外链接 left 不可以省略
-- right join 表名 on 右外链接 right 不可以省略
-- 左外链接 特点是:以左表为主 显示全部左表的数据 并显示出相关右表的数据
select * from emp left join dept on emp.deptno=dept.did;
-- 右外链接 特点是: 以右表为主 显示全部的右表的数据 并显示相关左表的数据
select * from emp right join dept on emp.deptno=dept.did;
-- into 可以省略
insert into dept values(7,'督查处');
insert dept values(5,'就业处');
select * from dept;
-- 全连接 mysql 数据库的 union 就是把左外链接的数据和 右外链接的数据 全部显示出来
select * from emp left join dept on emp.deptno=dept.did
union
select * from emp right join dept on emp.deptno=dept.did;
-- 子查询 从自己查询的结果集中 再次进行查询
-- 查询emp 表中工资 最小的 员工的全部的信息 emp 有dept 表中的信息
-- 单表的子查询
select * from emp where sal=(select min(sal) from emp);
select * from emp ,dept where sal =(select min(sal) from emp) and emp.deptno=dept.did;
-- 比较 = > >= < <= != <>
-- 查询 员工工资大于最小工资的员工的 信息
select * from emp where sal>ANY(select min(sal) from emp);
-- in() 括号里面的放的数据集合
select * from emp where id=1 or id=2;
select * from emp where id in(1,2);
-- 子查询中的 in
select * from emp where id in( select id from emp where sex='女');
SQL语句两表联查
最新推荐文章于 2024-08-21 17:47:05 发布