PLSQL:查询语句简述

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PLSQL:查询语句简述相关的知识,希望对你有一定的参考价值。

参考技术A SELECT column, group_function

        FROM table

                [WHERE condition]

                        [GROUP BY group_by_expression]

                                [HAVING group_condition]

                                        [ORDER BY column];

        语法:SELECT table.column, table.column FROM table1, table2 WHERE table1.column1 = table2.column2;(或者where其他条件)

        where子句中的连接条件,一般要满足数据类型相符,含义一致。

        如果设置别名,则只能使用别名:

        SELECT 别名.column, 别名.column FROM table1 别名1, table2 别名2 WHERE 别名.column1 = 别名.column2;(或者where其他条件)

        例子:select e.ename,e.sal,s.grade,s.losal,s.hisal from emp e,salgrade s

                            where e.sal between s.losal and s.hisal;--包含边界值

        例子:SELECT table.column, table.column FROM table1, table2 WHERE table1.column(+) = table2.column;

        +在左边,代表左边需要扩展/删除。左边是从表,右边是主表。主表显示全部项目,从表跟随主表扩展/删除。

        例子:SELECTtable.column, table.column FROMtable1, table2 WHEREtable1.column = table2.column(+);

        +在右边,代表右边需要扩展/删除。右边是从表,左边是主表。主表显示全部项目,从表跟随主表扩展/删除。

        左右外连接用起来是一样的,只是表格书写位置的区别。

        例子:select w.ename,w.empno,m.ename,m.empno from emp w,emp m

                            where w.mgr=m.empno;

        同一张表,设置两个别名,进行同一张表内的互联,如同一个人既是下属又是上级。

        表1 [inner] join 表2 on 表1.列1=表2.列2。

        例子:select e.empno,e.deptno,d.loc

                            from emp e inner join dept d

                            on e.deptno=d.deptno;

        inner可以省略,效果一样的。

        主表 left outer join 从表 on 主表.列1=从表.列2

        例子:select d.deptno,d.loc,e.empno,e.ename from dept d left outer join emp e

                            on d.deptno=e.deptno;

        从表 right outer join 主表 on 从表.列1=主表.列2

        例子:select e.empno,e.ename,d.deptno,d.loc from emp e right outer join dept d

                            on e.deptno=d.deptno;

        例:查询工资高于Jones的员工信息 (也可用自连接查询)

                select * from emp where sal>(select sal from emp where ename='JONES') order by sal;

        注意:子查询要用括号括起来,子查询中不要加ORDER BY子句。

        例子:查询哪个部门没有员工 in(列表)

                    select deptno from dept where deptno not in (select distinct deptno from emp);

        例子:查询工资小于任何办事员,且职位不是办事员的员工信息

                    any任意值  >any 大于最小值  <any 小于最大值

                    select ename,sal from emp

                            where sal<any(select sal from emp where job='CLERK')

                                    and job<>'CLERK';

        例子:查询工资大于最高平均工资的员工信息

                    all所有值  >all 大于最大值  <all 小于最小值

                    select ename,sal from emp

                            where sal>all(select avg(sal) from emp group by deptno);

        语法:SELECT column, group_function FROM table [WHERE condition] [GROUP BY group_by_expression]

                    [HAVING group_condition] [ORDER BY column];

        例:查询部门平均工资大于2000的部门信息

                select deptno,avg(sal) from emp group by deptno having avg(sal)>2000;

以上是关于PLSQL:查询语句简述的主要内容,如果未能解决你的问题,请参考以下文章

使用plsql时查询Oracle语句中文无法匹配问题

在PLSQL, sql语句中带有中文的查询条件查询不到数据

在表中动态记录 PLSql 语句

关于plsql!!!

plsql怎么看查询的数据总数

oracle PLSQL 查询语句select t.*, t.rowid from PU.YK t