- oracle 函数

select sign(-3),sign(3), sign(0) from dual;

select ceil(3.7) from dual;
select floor(3.7) from dual;
-- 四舍五入
select round(123.456, 2) from dual;
select round(183.456, -2) from dual;
select round(183.556) from dual; select trunc(123.456, 2) from dual;
select trunc(183.456, -2) from dual;
select trunc(183.556) from dual; -- length() 返回字符串长度 select ename, length(ename) from emp e; -- 查询长度是6个字符的员工名字
select ename from emp e where length(ename) = 6; select ename from emp e where ename like '______'; -- 查询长度是6个字符并且以M开头的员工名字
select ename from emp e where length(ename) = 6 and ename like 'M%'; select ename from emp e where ename like 'M_____'; select lower('abCdE') from dual;
select upper('abCdE') from dual; select * from emp where lower(ename) = 'scott'; -- sysdate 当前日期时间
select sysdate from dual; select sysdate, last_day(sysdate) from dual; -- to_date()
select to_date('20170711', 'YYYYMMDD') from dual;
select to_date('20170711 18:20:45', 'YYYYMMDD hh24:mi:ss') from dual; -- to_char()
select to_char(sysdate, 'mm') from dual; select * from emp e; -- 查询12月份入职的员工信息
select * from emp where to_char(hiredate, 'mm') = '12'; -- 分组函数
-- max() 最大值
-- min() 最小值
-- avg() 平均值
-- sum() 求和
-- count() 数目 -- 分组函数有两种用法
--1. 单独使用
-- 查询10号部门最高工资
select max(e.sal) from emp e where e.deptno = 10; -- 查询10号部门最高工资、最低工资
select max(e.sal), min(e.sal) from emp e where e.deptno = 10; select sum(e.sal),count(e.sal) from emp e; -- 查询工资高于30号部门所有人的员工信息
select * from emp where sal > (select max(sal) from emp where deptno = 30); -- 查询20号部门的员工数目
select count(empno) from emp where deptno=20; select count(*) from emp where deptno=20; -- 查询所有销售(SALESMAN)的最低工资
select min(e.sal) from emp e where e.job = 'SALESMAN'; -- 查询30号部门工资最高员工名字 select ename
from emp
where deptno = 30
and sal = (select max(sal) from emp where deptno = 30); --2. 配合group by一起使用 -- 分组: group by 列 -- 查询每个部门的最高工资,显示部门编号和最高工资
select deptno, max(sal) from emp group by deptno; -- (分组之后)筛选组: having ...
-- 查询最高工资超过2900的部门,显示部门编号和最高工资
select deptno, max(sal) from emp group by deptno having max(sal) > 2900; -- 查询最高工资超过2900的部门,显示部门编号和最高工资
-- 按照最高工资降序排序
select deptno, max(sal)
from emp
group by deptno
having max(sal) > 2900
order by max(sal) desc; -- 查询语句骨架 select xxx from xxx
[where ...]
[group by ...]
[having ...]
[order by ... [asc|desc]] --表连接查询 create table stu(
sno number(3),
sname varchar2(20),
sclass varchar2(10)
); create table cls(
cid varchar2(10),
ctype varchar2(20)
); insert into stu values(1, 'tom', 'c01');
insert into stu values(2, 'mary', 'c02');
insert into stu values(3, 'jack', 'c05');
commit; insert into cls values('c01', '测试');
insert into cls values('c02', '测试');
insert into cls values('c03', '开发');
commit; select * from stu;
select * from cls; -- 查询结果是两张表的笛卡尔积
select * from stu, cls; -- 内连接
select * from stu s inner join cls c on s.sclass = c.cid;
select * from stu s join cls c on s.sclass = c.cid; select * from stu s, cls c where s.sclass = c.cid; -- 左连接
select * from stu s left join cls c on s.sclass = c.cid;
select * from stu s, cls c where s.sclass = c.cid(+); -- 右连接
select * from stu s right join cls c on s.sclass = c.cid;
select * from stu s, cls c where s.sclass(+) = c.cid; -- 全连接
select * from stu s full join cls c on s.sclass = c.cid; select * from emp e;
select * from dept d; -- 查询所有员工的名字和所属部门名字
select e.ename, d.dname from emp e, dept d where e.deptno=d.deptno; select e.ename, (select d.dname from dept d where d.deptno = e.deptno) dname
from emp e; -- 查询ALLEN的所属部门名字
select d.dname
from emp e, dept d
where e.deptno = d.deptno
and e.ename = 'ALLEN'; -- 查询销售部(SALES)所有员工名字
select e.ename
from emp e, dept d
where e.deptno = d.deptno
and d.dname = 'SALES'; select ename
from emp
where deptno = (select deptno from dept where dname = 'SALES'); -- 查询工资超过2000的员工姓名和上班地点
select e.ename, d.loc
from emp e, dept d
where e.deptno = d.deptno
and e.sal > 2000; -- 查询所有员工姓名和其主管姓名,没有主管的主管姓名为空
select a.ename,b.ename from emp a, emp b where a.mgr = b.empno(+); -- 查询ALLEN的主管姓名
select b.ename
from emp a, emp b
where a.mgr = b.empno
and a.ename = 'ALLEN'; -- 查询入职时间早于其主管的员工姓名
select a.ename
from emp a, emp b
where a.mgr = b.empno
and a.hiredate < b.hiredate; -- 查询每个部门的最高工资,显示部门编号和最高工资
select e.deptno,max(e.sal) from emp e group by e.deptno; -- 查询每个部门的最高工资,显示部门名字和最高工资
select d.dname, max(e.sal)
from emp e, dept d
where e.deptno = d.deptno
group by d.dname; -- 查询最高工资超过2900的部门,显示部门名字和最高工资
select d.dname, max(e.sal)
from emp e, dept d
where e.deptno = d.deptno
group by d.dname
having max(e.sal) > 2900; -- 查询最高工资超过2900的部门,显示部门名字和最高工资,按照最高工资升序排序
select d.dname, max(e.sal)
from emp e, dept d
where e.deptno = d.deptno
group by d.dname
having max(e.sal) > 2900
order by max(e.sal) asc; -- 查询员工数目超过2个的职位,显示职位和员工数目,按照员工数目降序排序
select e.job, count(*)
from emp e
group by e.job
having count(*) > 2
order by count(*) desc; -- 查询工资高于平均工资的员工信息
select * from emp where sal > (select avg(sal) from emp); -- 查询工资高于本部门平均工资的员工信息
-- 方法1
select *
from emp e
where e.sal > (select avg(a.sal) from emp a where a.deptno = e.deptno); -- 方法2 select e.*
from emp e, (select deptno, avg(sal) av from emp group by deptno) a
where e.deptno = a.deptno
and e.sal > a.av; -- 查询每个部门的编号、名字和员工数目 select d.deptno, d.dname, a.c
from dept d, (select e.deptno, count(*) c from emp e group by e.deptno) a
where d.deptno = a.deptno(+); select d.deptno, d.dname, nvl(a.c, 0)
from dept d, (select e.deptno, count(*) c from emp e group by e.deptno) a
where d.deptno = a.deptno(+); -- nvl() 为空值赋值函数
select ename,sal,nvl(comm, 0) from emp; -- 查询每个部门工资最高的员工姓名 select e.ename
from emp e, (select deptno, max(sal) m from emp group by deptno) a
where e.deptno = a.deptno
and e.sal = a.m;

oracle 常用语句3的更多相关文章

  1. ORACLE常用语句:

    ORACLE常用语句: 1.首先,创建(新)用户: create user username identified by password; username:新用户名的用户名 password: 新 ...

  2. Oracle常用语句集合

    oracle常用经典SQL查询 常用SQL查询: .查看表空间的名称及大小 )),) ts_size from dba_tablespaces t, dba_data_files d where t. ...

  3. Oracle常用语句

    Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, ...

  4. Oracle常用语句语法汇总

    第一篇  基本操作 --解锁用户   alter user 用户 account unlock; --锁定用户   alter user 用户 account lock; alter user sco ...

  5. oracle常用语句总结

    一.用户管理类 1.创建用户: Create user username Identified by password Default tablespace tablespacename Tempor ...

  6. oracle 常用语句

    创建用户及授权create temporary tablespace test_temp tempfile 'C:\oracle\product\10.2.0\oradata\hszxdbtemp.d ...

  7. Oracle 常用语句1

    -- 我是注释信息 sql语句 -- 创建用户: create user 用户名 identified by 密码; create user jack identified by j123; -- l ...

  8. 查锁住的表,以及kill进程,Oracle常用语句

    --找出所有被锁的对象,定位出哪个回话占用 select l.session_id,o.owner,o.object_name from v$locked_object l,dba_objects o ...

  9. Oracle 常用语句备份

    1.oracle 11g 用户名和密码默认区分大小写,可更改alter system set sec_case_sensitive_logon=false 设置改为不区分大小写. 2.授权创建视图:G ...

随机推荐

  1. jwt鉴权学习 (php示例代码)

    前段时间听朋友讲起 jwt鉴权,博主我是一脸懵逼,通过朋友坚持不懈的讲解,我终于听懂了,jwt就是登陆token校验嘛 然而事情并不是博主想象的那么简单,在一个艳阳高照,晴空万里的夜晚,博主手贱百度了 ...

  2. On Starting My Blogging On CNBlogs

    About Myself I am a would-be Master of Engineering, on the last year of my student life, I'm ambitou ...

  3. 使用Camtasia制作魔性抖肩舞视频

    最近一首风魔各大视频网站的魔性舞蹈又来袭了!这首充满魔性节奏的舞蹈就是抖肩舞了,为了将我热爱的抖肩舞视频分享给大家,我必须使用Camtasia教程录制(Windows系统)软件来制作一个魔性抖肩舞视频 ...

  4. .NET可视化权限功能界面设计

    权限功能是信息系统不可或缺的重要部分,一个优秀的权限设计可以使开发工作事半功倍,给使用者带来良好的使用体验. 企业做生意,都会聘请员工,若是员工数量较多,"权限管理"必不可少,这样 ...

  5. 蓝桥杯——Java集合练习题

    回文数.维密.约瑟夫环 回文数 问题描述: 123321是一个非常特殊的数,它从左边读和从右边读是一样的.输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n. 输入格式: ...

  6. LeetCode 045 Jump Game II

    题目要求:Jump Game II Given an array of non-negative integers, you are initially positioned at the first ...

  7. 02_启动和销毁Service

    在Application关闭后,Service仍然会运行. package com.example.servdemo; import android.app.Activity; import andr ...

  8. CentOS7.X 挂载磁盘 与Mysql 自动备份

    1.前言 搞了好几天终于弄了出来,简单记录一下.注意以下教程是在测试服务器基础上编写 如数据盘含有数据切勿使用此教程,如对命令行不熟悉的 不建议搞哈 .本文中的磁盘/dev/sdb为笔者测试服务器上的 ...

  9. Java 虚拟机垃圾收集机制详解

    本文摘自深入理解 Java 虚拟机第三版 垃圾收集发生的区域 之前我们介绍过 Java 内存运行时区域的各个部分,其中程序计数器.虚拟机栈.本地方法栈三个区域随线程共存亡.栈中的每一个栈帧分配多少内存 ...

  10. day102:MoFang:后端完成对短信验证码的校验&基于celery完成异步短信发送&flask_jwt_extended&用户登录的API接口

    目录 1.用户注册 1.后端完成对短信验证码的校验 2.基于celery实现短信异步发送 2.用户登录 1.jwt登录验证:flask_jwt_extended 2.服务端提供用户登录的API接口 1 ...