MySQL入门之使用SQL99标准的连接查询
2017-01-12 14:27
477 查看
使用SQL99标准的连接查询(JOIN..ON..)
内连接
只返回满足连接条件的数据(两边都有的才显示)。
select e., d.
from emp e
inner join dept d
on e.deptno=d.deptno
– 也可以省略inner关键字。
select e.empno, e.ename, e.sal, d.dname
from emp e, dept d
where e.deptno=d.deptno
//显示所有部门信息
//显示各个部门的部门人数
select d.deptno 部门号, d.dname 部门名称,count(e.empno) 人数
from emp e, dept d
where e.deptno(+)=d.deptno
group by d.deptno, d.dname
自连接: – 查询员工信息 ,老板信息
显示: *的老板是*
select e.ename , b.ename
from emp e, emp b
where e.mgr=b.empno
select concat ( concat(e.ename, ‘的老板是’), b.ename)
from emp e, emp b
where e.mgr=b.empno
select e.ename, ifnull(b.ename,’他自己’)
from emp e left outer join emp b
on e.mgr=b.empno
select concat ( concat(e.ename, ‘的老板是’), ifnull(b.ename,’他自己’))
from emp e left outer join emp b
on e.mgr=b.empno
+————————————————————————+
| concat ( concat(e.ename, ‘的老板是’), ifnull(b.ename,’他自己’)) |
+————————————————————————+
| SMITH的老板是FORD |
| ALLEN的老板是BLAKE |
| WARD的老板是BLAKE |
| JONES的老板是KING |
| MARTIN的老板是BLAKE |
| BLAKE的老板是KING |
| CLARK的老板是KING |
| SCOTT的老板是JONES |
| KING的老板是他自己 |
| TURNER的老板是BLAKE |
| ADAMS的老板是SCOTT |
| JAMES的老板是BLAKE |
| FORD的老板是JONES |
| MILLER的老板是CLARK |
+————————————————————————+
内连接
只返回满足连接条件的数据(两边都有的才显示)。
select e., d.
from emp e
inner join dept d
on e.deptno=d.deptno
– 也可以省略inner关键字。
select e.*, d.* from emp e inner join dept d on e.deptno=d.deptno 左外连接 左边有值才显示。 select e.*, d.* from emp e left outer join dept d on e.deptno=d.deptno -- 也可以省略outer关键字 右外连接 右边边有值才显示。 select e.*, d.* from emp e right outer join dept d on e.deptno=d.deptno -- 也可以省略outer关键字 满外联接 任一边有值就会显示。 select e.*, d.* from emp e full outer join dept d on e.deptno=d.deptno -- 也可以省略outer关键字 交叉连接: 叉集,就是笛卡尔积 select e.*, d.* from emp e cross join dept d
– 没有连接条件
eg:查询员工信息,员工号,姓名,月薪,部门名称select e.empno, e.ename, e.sal, d.dname
from emp e, dept d
where e.deptno=d.deptno
select e.empno, e.ename, e.sal, d.dname from emp e inner join dept d -- 逗号join on e.deptno=d.deptno -- where on
//显示所有部门信息
//显示各个部门的部门人数
select d.deptno 部门号, d.dname 部门名称,count(e.empno) 人数
from emp e, dept d
where e.deptno(+)=d.deptno
group by d.deptno, d.dname
select d.deptno 部门号, d.dname 部门名称,count(e.empno) 人数 from emp e right outer join dept d on e.deptno=d.deptno group by d.deptno, d.dname
自连接: – 查询员工信息 ,老板信息
显示: *的老板是*
select e.ename , b.ename
from emp e, emp b
where e.mgr=b.empno
select concat ( concat(e.ename, ‘的老板是’), b.ename)
from emp e, emp b
where e.mgr=b.empno
select e.ename, ifnull(b.ename,’他自己’)
from emp e left outer join emp b
on e.mgr=b.empno
select concat ( concat(e.ename, ‘的老板是’), ifnull(b.ename,’他自己’))
from emp e left outer join emp b
on e.mgr=b.empno
+————————————————————————+
| concat ( concat(e.ename, ‘的老板是’), ifnull(b.ename,’他自己’)) |
+————————————————————————+
| SMITH的老板是FORD |
| ALLEN的老板是BLAKE |
| WARD的老板是BLAKE |
| JONES的老板是KING |
| MARTIN的老板是BLAKE |
| BLAKE的老板是KING |
| CLARK的老板是KING |
| SCOTT的老板是JONES |
| KING的老板是他自己 |
| TURNER的老板是BLAKE |
| ADAMS的老板是SCOTT |
| JAMES的老板是BLAKE |
| FORD的老板是JONES |
| MILLER的老板是CLARK |
+————————————————————————+
相关文章推荐
- php入门学习知识点一 PHP与MYSql连接与查询
- mysql使用left join等表连接查询时需注意的情况
- MySQL中GROUP_CONCAT函数的使用,separator,将多行查询结果用特定字符串连接起来,适用于一对多
- mysql-连接及子查询使用删除重复记录
- 【自】nodeJs使用express框架进行快速建站 连接mysql进行增删改查的实际入门案例
- Mysql中使用UNION语句进行多表连接查询
- PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
- mysql(4)—— 表连接查询与where后使用子查询的性能分析。
- MySQL使用连接查询的方式查询(连接3个表,并使用COUNT内置函数)
- mysql入门连接查询(九)
- 使用连接(JOIN)来代替子查询(Sub-Queries) mysql优化系列记录
- 使用连接(JOIN)来代替子查询(Sub-Queries) mysql优化系列记录
- 4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)
- 使用Eclipse远程连接MySQL,以定时查询数据为示例
- mysql使用连接(JOIN)来代替子查询(Sub-Queries)
- 使用连接(JOIN)来代替子查询(Sub-Queries) mysql优化系列记录
- C语言连接mysql简单查询实例入门-mysql_init,mysql_real_connect,mysql_query,mysql_close等
- php使用mysql和mysqli连接查询数据
- MySQL中使用连接查询
- mysql经常使用查询:group by,左连接,子查询,having where