十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
10018是联通统一的会员服务专线,钻卡、金卡、银卡会员用户可拨打10018直接联系客户经理,客户经理也可通过10018直接与您联系。自2015年11月15日起,河南10018服务专线将全部转接至10010客服热线,提供统一服务。
创新互联公司专业为企业提供伊春网站建设、伊春做网站、伊春网站设计、伊春网站制作等企业网站建设、网页设计与制作、伊春企业网站模板建站服务,十年伊春做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
—————
联通伴你看世界,独享团费折扣、国际漫游流量免费送!还等什么,赶紧点击 参与活动吧!
您可能还关注:
优惠大赠送!【业务办理,方便快捷!】【全新推出广东流量快餐包,流量不够用?打个快餐吧!大流量当天有效!】~~还等什么,点击下列相应链接进行办理吧!
【广东业务推荐】:;
【广东流量快餐包】:5元1GB ; 10元3GB ;
select b.ename,'的经理是: ',a.ename
from emp a inner join emp b on a.empno=b.mgr;
************
log:
************
[SCOTT@ORA1] SQLselect b.ename,'的经理是: ',a.ename
2 from emp a inner join emp b on a.empno=b.mgr;
ENAME '的经理是: ENAME
---------- ---------- ----------
SCOTT 的经理是: JONES
FORD 的经理是: JONES
ALLEN 的经理是: BLAKE
WARD 的经理是: BLAKE
JAMES 的经理是: BLAKE
TURNER 的经理是: BLAKE
MARTIN 的经理是: BLAKE
MILLER 的经理是: CLARK
ADAMS 的经理是: SCOTT
JONES 的经理是: KING
CLARK 的经理是: KING
BLAKE 的经理是: KING
SMITH 的经理是: FORD
****************
补充:循环一遍肯定是根据你的sql只取出一条数据,你试试把你的sql直接弄到数据库总执行以下,看看应该是这个样子的。
****************
---
以上,希望对你有所帮助。
---关联查询
/**
等值连接:关联表中存在相同列
非等值连接:表中没有相同的列名,但是一个表中列,在另外表中存在某种关系,比如在范围内
外连接:左外连接(左边显示全部记录)和右外连接(右边显示全部记录)
自连接:自己关联自己查询
*/
select * from emp;
select * from dept;
-- 笛卡尔积
select * from emp,dept;
-- 关联查询
select * from emp,dept where emp.deptno = dept.deptno;
-- 查询雇员的名称和部门的名称
select ename,dname from emp,dept where emp.deptno = dept.deptno;
select * from salgrade;
--查询雇员名称和薪水等级
select e.ename,g.grade from emp e,salgrade g where e.sal between g.losal and g.hisal;
-- 需要将雇员表中的数据全部显示,利用等值连接,只能把关联到的数据显示出来,这就需要外连接
select * from emp e,dept d where e.deptno = d.deptno; --等值连接
select * from emp e,dept d where e.deptno = d.deptno(+); --左外连接(左数据要显示全,右表补空)
select * from emp e,dept d where e.deptno(+) = d.deptno; --右外连接(右数据要显示全,左表补空)
-- 自连接,把一张表自己关联自己
-- 将雇员和他的经理查出来 e表示雇员表,m也表示雇员表 匹配的e.mgr的经理是哪个雇员
select e.ename,m.ename from emp e,emp m where e.mgr = m.empno;
-- 不加任何连接条件 笛卡尔积
select * from emp e,dept d;
--以上是sql 92语法问题
-- 关联查询条件放到where子句中,而where语句还负责对结果集进行条件过滤,
-- 意味着将连接条件和过滤条件写在一起,可读性差,不符合单一职责
sql 99 语法
cross join 等价 92语法笛卡尔积
select * from emp cross join dept;
select * from emp cross join dept;
-- natural join 相当于等值连接,但是不需要等值条件,会做动找相同列左连接
-- 如果两表中没有相同列,相当于笛卡尔积
-- 有相同的列,会自动做等值连接
select * from emp e natural join dept d;
-- 没有相同的列,相当于笛卡尔积
select * from emp e natural join salgrade;
--on 子句,添加连接条件
-- on子句等值连接,相连接当于92语法等值连接
select * from emp e join dept d on e.deptno = d.deptno;
--on 子句非等值连接,相当于92语法非等值连接
select * from emp e join salgrade sg on e.sal between sg.losal and sg.hisal;
-- left outer join ,其中outer可省略 99语法左外连接 会把左表记录显示全,右表无对应记录,显示空
select * from emp e left outer join dept d on e.deptno = d.deptno;
-- 92语法 左外连接
select * from emp e,dept d where e.deptno = d.deptno(+);
-- right outer join ,其中outer可省略 99语法右外连接
select * from emp e right outer join dept d on e.deptno = d.deptno;
-- 92语法 右外连接
select * from emp e,dept d where e.deptno = d.deptno;
-- full outer join 99语法独有相当于同时满足左外连接和右外连接
select * from emp e full outer join dept d on e.deptno = d.deptno;
-- inner join 就是表连接
select * from emp e inner join dept d on e.deptno = d.deptno;
-- 省略inner
select * from emp e join dept d on e.deptno = d.deptno;
--using,除了使用on作为连接条件,也可使用using作为连接条件
--此时查出的deptno不属于任何一张表
select * from emp e join dept d using(deptno);
-- 发现会出现两列deptno,分别属于两张表
select * from emp e join dept d on e.deptno = d.deptno;
99语法和92语法,实际开发中都可使用,建议使用99语法,可读性更强
-- 检索雇员名字、所在单位、薪水等级
select e.ename,d.loc,sg.grade from emp e join dept d on e.deptno = d.deptno join salgrade sg on e.sal between sg.losal and sg.hisal;