【数据库】 sql的一些基本语法(三)
2015-02-11 09:13
302 查看
(一)from 表1 join 表2 on(连接限制条件)
select ename, sal from empjoin (select max(sal), deptno from emp group by deptno ) t
on (emp.sal = t.max(sal) and emp.deptno = t.deptno); //显示每个部门工资最高的人的姓名和工资
注: 两个表不一定要有相同的属性才能连接
例:select ename, dname, sal, salgrade from emp e
join dept d on (e.deptno = d.deptno) //雇员与部员连接 通过 deptno
join salgrade s on(e.sal between s.losal and s.hisal) ; //工资等级表与雇员表的连接,通过雇员的工资在等级表中比较
遇到了一个问题:
sql:ORA-00918: 未明确定义列的错误。(连接的两个表中属性名重复,而又需要查询此属性。要指定是哪个表里的属性)
上面语句select ename, sal from emp
join (select max(sal), deptno from emp group by deptno ) t
on (emp.sal = t.max(sal) and emp.deptno = t.deptno); //显示每个部门工资最高的人的姓名和工资
当我在select 中想要添加查找 deptno 属性时报错,最后检查原因发现在后面的两张表里都有deptno属性,
虽然这个属性在两张表里的内容相同,但在select中必须指定是哪个表里的deptno
修改后:
select ename, sal , e.deptno from emp
join (select max(sal), deptno from emp group by deptno ) t
on (emp.sal = t.max(sal) and emp.deptno = t.deptno); //显示每个部门工资最高的人的姓名和工资
(二) 自连接
在一个表里两个相关属性的连接,比如emp表里 雇员属性对应的上司属性本身也是一个雇员属性实现一: (where)
select e1.ename, e2.ename from emp e1, emp e2 where e1.mgr = e2.empno; //显示每个员工及其对应的经理人的姓名
实现二: (join,on)
select e1.ename, e2.ename from emp e1 join emp e2 on (e1.mgr = e2.empno);
(三) 外连接
左外连接 : left join右外连接: right join
全外连接: full join
显示连接的两张表中没有对应属性的属性
相关文章推荐
- 【数据库】 sql的一些基本语法(四)
- 【数据库】 sql的一些基本语法(一)
- 【数据库】 sql的一些基本语法(二)
- 数据库SQL基本语法+增删改查练习
- SQL的一些基本操作语法
- 【数据库之SQL复杂查询】SQL复杂查询基本语法
- 数据库的一些基本语法二
- 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
- 数据库SQL基本语法
- 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
- 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
- sql2005的t-sql的一些基本的语法
- SQL语法的一些基本应用
- MSSQL-用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
- 数据库之SQL基本语法
- 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
- 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
- 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
- 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
- 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等