oracle新接触的sql语句

本文介绍了Oracle SQL的一些实用技巧,包括SELECT语句中字段的使用规则、CASE和DECODE表达式的应用、如何获取受雇日期的天数、计算部门及职位的平均工资和奖金状态、查询工资高于部门平均工资的员工信息、不同类型的表连接方式及其结果对比,以及创建包含特定部门员工信息的表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面sql语句  是依据  oracle下用户scott/tiger下的emp表

新接触的知识

1.出现在select列表中的字段或者出现在order by后面的字段,如果不是包含在分组函数中,那么该字段必须同时在group by子句中出现.

出现在group by子句中的字段则不必须出现在select列表中.

2.如果没有group by子句,select列表中不允许出现字段(单行函数)与分组函数混合使用的情况

例如

SELECT empno ,sal FROM emp; 合法

SELECT avg(sal)FROM emp;合法

SELECT empno,INITCAP(ename),AVG(sal) FROM emp;不合法

3.case 表达式

SELECT empno,ename,sal,
CASE deptno
  WHEN 10 THEN '财务部'
    WHEN 20 THEN '研发部'
      ELSE '未知部门'
        END 部门
        FROM emp;

4.decode表达式

SELECT empno,ename,sal,
decode(deptno,10,'财务部门',
       20,'研发部门',
       '未知部门')部门
       FROM emp;

5.在pl/sql developer中   使用select * from emp for update 然后点击查询结果集左上角的锁  就能进行修改 也可以对一个列进行插入等操作

6. v_ename=&NAME;   &表示可以接受键盘输入   如果接受的是数字的话  直接输入即可 例如:  2

如果接受的是字符型数据的话  需要在数据上加    单引号    例如 '张云成'

-------------------------------------------------

1.获取受雇日期的天数

SELECT ename,trunc(SYSDATE-hiredate)FROM emp;

SELECT ename,trunc(SYSDATE)-TRUNC(hiredate) FROM emp;

2.算出每个部门,每个职位的平均工资和平均奖金(平均值包括没有奖金),如果平均奖金大于300,显示"奖金不错",如果平局奖金100到300,显示

"奖金一般",如果平均奖金小于100,显示"基本没有奖金",按部门编号降序,平均工资降序排列.

SELECT AVG(sal),AVG(NVL(comm,0)),
CASE  
  WHEN AVG(NVL(comm,0))>300 THEN '奖金不错'
    WHEN AVG(NVL(comm,0))<=300 AND AVG(NVL(comm,0))>100 THEN '奖金一般'
      ELSE '基本没奖金'END 奖金状况
FROM emp GROUP BY deptno,job
ORDER BY deptno DESC,AVG(sal) DESC;

3.得到工资大于自己部门平均工资的员工信息

SELECT e.*,m.avgsal
FROM emp e, (SELECT deptno, AVG(sal) AS avgsal FROM emp GROUP BY deptno)m
WHERE e.deptno=m.deptno AND e.sal>m.avgsal ;

4.两表联查

a: 1      b:  2

     2           4

     3           6

     4

     5

1):内连接

    2   2

    4    4

2)满外连接

    1   

     2     2

     3     

     4      4

     5     

              6

3)左连接

    1

     2     2

     3    

     4      4

     5

4)右连接

    2    2

    4    4

           6

5.集合操作

建立一张只包含20部门员工信息的表

CREATE TABLE emp20 AS SELECT * FROM emp WHERE deptno=20;     


参考资料:超详细Oracle教程.pdf


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值