【数据库】oracle常见语句

一、查询

  1. 查询员工表所有数据
select * from emp
  1. 查询职位(JOB)为’PRESIDENT’的员工的工资
select sal from emp where job='PRESIDENT'
  1. 查询佣金(COMM)为0或为NULL的员工信息
select * from emp where comm=0 or comm is null
  1. 查询入职日期在 1981-5-1到1981-12-31之间的所有员工信息
select * from emp where hiredate between to_date(19810501,'yyyy/mm/dd') and to_date(19811231,'yyyy/mm/dd')
  1. 查询所有名字长度为4的员工的员工编号,姓名
select empno,ename from emp where length(ename)=4
  1. 显示10号部门的所有经理(‘MANAGER’)和20号部门的所有职员(‘CLERK’)的详细信息
select * from emp where  deptno=10 and job='MANAGER' or (deptno=20 and job='CLERK')
  1. 显示姓名中没有’L’字的员工的详细信息或含有’SM’字的员工信息
select * from emp where ename not like '%L%' or ename like '%SM%'
  1. 显示各个部门经理(‘MANAGER’)的工资
select deptno,sal from emp where job='MANAGER'
  1. 显示佣金(COMM)收入比工资(SAL)高的员工的详细信息
select * from emp where comm >sal
  1. 把hiredate列看做是员工的生日,求本月过生日的员工(考察知识点:单行函数)
select ename from emp where extract(month from hiredate)=extract(month from sysdate)select ename from emp where to_char(hiredate, 'mm') = to_char(sysdate , 'mm');
  1. 把hiredate列看做是员工的生日,求下月过生日的员工(考察知识点:单行函数)
select ename from emp where extract(month from hiredate)=extract(month from sysdate)+1
select * from emp where to_char(hiredate, 'mm') = to_char(add_months(sysdate,1) , 'mm');
  1. 求1982年入职的员工(考察知识点:单行函数)
select ename from emp where extract(year from hiredate)=1982
select * from emp where to_char(hiredate,'yyyy') = '1982';
  1. 求1981年下半年入职的员工(考察知识点:单行函数)
select ename from emp
where extract(year from hiredate)=1981 and extract(month from hiredate)>6select * from emp where hiredate
between to_date('1981-7-1','yyyy-mm-dd') and to_date('1982-1-1','yyyy-mm-dd') - 1;
  1. 求1981年各个月入职的的员工个数(考察知识点:组函数)
select count(*),extract(month from hiredate) from emp
where extract(year from hiredate)='1981'  group by extract(month from hiredate) select count(*), to_char(trunc(hiredate,'month'),'yyyy-mm') from empwhere to_char(hiredate,'yyyy')='1981'   group by trunc(hiredate,'month')  order by trunc(hiredate,'month');
  1. 查询各个部门的平均工资
Select deptno, avg(sal) from emp group by deptno
  1. 显示各种职位的最低工资
select job, min(sal) from emp group by job
  1. 按照入职日期由新到旧排列员工信息
select * from emp order by hiredate desc
  1. 查询员工的基本信息,附加其上级的姓名
select emp.*, t.ename managername  from emp , emp t where emp.mgr=t.empno
  1. 显示工资比’ALLEN’高的所有员工的姓名和工资
select ename,sal from emp where sal>(select sal from emp where ename='ALLEN')
  1. 显示与’SCOTT’从事相同工作的员工的详细信息
select * from emp where job=(select job from emp where ename='SCOTT') and ename <> 'SCOTT'
  1. 显示销售部(‘SALES’)员工的姓名
select ename from emp,dept where emp.deptno=dept.deptno and dname='SALES'
  1. 显示与30号部门’MARTIN’员工工资相同的员工的姓名和工资
select ename,sal from emp where deptno=30 and sal=(select sal from emp where ename='MARTIN') and ename <> 'MARTIN'
  1. 查询所有工资高于平均工资(平均工资包括所有员工)的销售人员(‘SALESMAN’)
select ename from emp where sal>(select avg(sal) from emp) and job='SALESMAN'
  1. 显示所有职员的姓名及其所在部门的名称和工资
select ename,dname,sal from emp ,dept where emp.deptno=dept.deptno
  1. 查询在研发部(‘RESEARCH’)工作员工的编号,姓名,工作部门,工作所在地
select empno,ename,dname,loc from emp,dept where emp.deptno=dept.deptno
  1. 查询各个部门的名称和员工人数
select dname,countnum from dept, (select deptno,count(empno) countnum from emp group by deptno) twhere dept.deptno=t.deptnoselect dname,c from (select count(*) c, deptno from emp group by deptno) e   inner join dept d on e.deptno = d.deptno;
  1. 查询各个职位员工工资大于平均工资(平均工资包括所有员工)的人数和员工职位
select count(empno) ,job from  emp where sal>(select avg(sal) from emp)group by job
  1. 查询工资相同的员工的工资和姓名
select sal,ename from emp e where(select count(*from emp where sal=e.sal group by sal)>1
  1. 查询工资最高的 3名员工信息
select * from (select * from emp order by sal desc )t where rownum<4
  1. 按工资进行排名,排名从1开始,工资相同排名相同(如果两人并列第1则没有第2名,从第三名继续排)
select e.*, (select count(*) from emp where sal > e.sal)+1 rank from emp e order by rank;
  1. 求入职日期相同的(年月日相同)的员工
select * from emp e where (select count(*) from emp where e.hiredate=hiredate)>1
  1. 查询每个部门的最高工资
select deptno, max(sal) from emp group by (deptno)
  1. 查询每个部门,每种职位的最高工资
select deptno,job,max(sal) from emp group by deptno,job
  1. 查询每个员工的信息及工资级别(用到表 Salgrade)
select emp.*,grade from emp,salgrade where sal between losal and hisal
  1. 查询工资最高的第 6-10 名员工
select * from(select rownum r,ename from (select ename from emp order by sal desc))where r<=10 and r>=6
  1. 查询各部门工资最高的员工信息
select * from emp e where e.sal=(select max(sal) from emp where emp.deptno=e.deptno)
  1. 查询每个部门工资最高的前 2名员工
select * from emp e where  (select count(*) from emp where sal > e.sal and e.deptno =deptno) < 2select * from ( select rank() over (partition by deptno order by sal desc) rank, e.* from emp e) where rank < 3;
  1. 查询出有3个以上下属的员工信息
select * from emp, (select mgr,count(empno)countnum from emp group by mgr)twhere t.countnum>3 and emp.empno=t.mgrselect * from emp e where  (select count(*) from emp where e.empno =mgr) >2 ;
  1. 查询所有大于本部门平均工资的员工信息
select * from emp where sal>(select avg(sal)sal from emp e where deptno=emp.deptno)
  1. 查询平均工资最高的部门信息
select * from dept where deptno=(select deptno from emp group by deptno having avg(sal)=(select max(avg(sal)) from emp group by deptno))
  1. 查询大于各部门总工资的平均值的部门信息
select * from dept where deptno=(select deptno from emp group by deptno having sum(sal)>(select avg(sum(sal))sal from emp group by deptno ))
  1. 查询大于各部门总工资的平均值的部门下的员工信息(考察知识点:子查询,组函数,连接查询)
select * from emp where deptno=(select deptno from emp group by deptno having sum(sal)>(select avg(sum(sal))sal from emp group by deptno ))
  1. 查询没有员工的部门信息
select d.* from dept d left join emp e on (e.deptno = d.deptno) where empno is null;
  1. 显示与Blake在同一部门工作的雇员的项目和受雇日期,但是blake不包含在内。
select ename,hiredate from emp where deptno=
( select deptno from emp where ename='BLAKE') and ename <> 'BLAKE'                    

二、常见系统函数

1. 字符类函数

  • ASCLL©函数和CHR(i)函数

–分别求得字符”Z、H、D和空格”的ASCII值。

SELECT ASCII('Z') Z, ASCII('H') H, ASCII('D') D, ASCII(' ') SPACE FROM DUAL;

–返回字符

SELECT CHR(90), CHR(72), CHR(68), (32) S FROM DUAL;
  • CONCAT(s1,s2)函数

–连接俩个字符串

SELECT CONCAT(‘Hello’, ‘World!’) INFORMATION FROM DUAL;

  • INITCAP(s)函数

–将字符串首字母大写,其余字母小写。

SELECT INITCAP('oh mY God!') INFORMATION FROM DUAL;
  • INSTR(s1,s2,i,j)函数

–在字符串”oracle 11g”中,从第3个字符开始查询字符串“1”第2次出现的位置。
–i为负数将从右至左查询

SELECT INSTR('oracle 11g', '1', 3, 2) FROM DUAL;
  • LENGTH(s)函数

–查询字符串长度

SELECT LENGTH('hello') FROM DUAL;

–查询雇员名称长度大于5的雇员信息及所在部门信息。

SELECT *FROM EMP EINNER JOIN DEPT DON E.DEPTNO = D.DEPTNOWHERE LENGTH(E.ENAME) > 5;
  • LOWER(s)函数和UPPER(s)函数

–将字符串转换为小写

SELECT LOWER('HellO!') FROM DUAL;

–将字符串转换为大写

SELECT UPPER('heLLo!') FROM DUAL;
  • LTRIM(s1,s2)函数、RTRIM(s1,s2)函数个TRIM(s1,s2)函数

–删除字符串左边的指定字符串

SELECT LTRIM('###hello##!##', '#') FROM DUAL;

–删除字符串右边的指定字符串

SELECT RTRIM('###hello##!##', '#') FROM DUAL;

–删除字符串两端的指定字符串

SELECT TRIM('#' FROM '###hello##!##') FROM DUAL;
  • REPLACE(s1,s2,s3)函数

–将字符串”Bad Luck Bad Gril”中的”Bad”字符串用”Good”替换掉

SELECT REPLACE('Bad Luck Bad Gril', 'Bad', 'Good') FROM DUAL;
  • SUBSTR(s,i,j)函数

–截取字符串”MessageBox”中从第8个位置开始长度为3的字符串

SELECT SUBSTR('MessageBox', 8, 3) FROM DUAL;

2. 数字类函数

  • ABS(n)函数

–返回n的绝对值

SELECT ABS(-1) FROM DUAL;
  • CEIL(n)函数

–返回大于或等于数值n的最小整数

SELECT CEIL(-7.9) FROM DUAL;
  • COS(n)函数

–返回n的余弦值,n为弧度

SELECT COS(30) FROM DUAL;
  • EXP(n)函数

–返回e的n次幂

SELECT EXP(1) FROM DUAL;
  • FLOOR(n)函数

–返回小于或等于n的最大整数

SELECT FLOOR(-2.2) FROM DUAL;
  • LOG(n1,n2)函数

–返回以n1为底n2的对数

SELECT LOG(4, 16) FROM DUAL;
  • MOD(n1,n2)函数

–返回n1除以n2的余数

SELECT MOD(3, 2) FROM DUAL;
  • POWER(n1,n2)函数

–返回n1的n2次方

SELECT POWER(3, 4) FROM DUAL;
  • ROUND(n1,n2)函数

–返回舍入小数点右边n2位的n1的值,n2的默认值为0,
–这会返回小数点最接近的整数。
–如果n2为负数,就舍入到小数点左边相应的位置上,n2必须是整数。

SELECT ROUND(3.1415926, 2) FROM DUAL;
  • SIGN(n)函数

–若n为负数,则返回-1,若n为正数,则返回1,若n=0,则返回0.

SELECT SIGN(-22) FROM DUAL;
  • SIN(n)函数

–返回正弦值,n为弧度

SELECT SIN(30) FROM DUAL;
  • SQRT(n)函数

–返回n的平方根,n为弧度

SELECT SQRT(16) FROM DUAL;
  • TRUNC(n1,n2)函数

–返回结尾n2位小数的n1的值,n2默认设置为9,当n2为默认设置时,
–会将n1截尾为整数,如果n2为负值,就截尾在小数点左边响应的位上。

SELECT TRUNC(2333.1415, -2) FROM DUAL;

3. 日期和时间类函数

  • ADD_MONTHS(d,i)函数

–返回日期d加上i个月之后的结果。其中,i为任意整数

SELECT ADD_MONTHS('2015-2-22', 3) FROM DUAL;
  • LAST_DAY(d)函数

–返回包含日期d月份的最后一天

SELECT LAST_DAY('2016-3-19') FROM DUAL;
  • MONTHS_BETWEEN(d1,d2)函数

–返回d1和d2之间的数目,若d1和d2的日期都相同,或者都是该月的最后一天,
–则返回一个整数,否则返回的结果将包含一个小数。

SELECT MONTHS_BETWEEN('2016-3-19', '2015-3-19') FROM DUAL;
  • NEW_TIME(d1,t1,t2)函数

–其中,d1是一个日期数据类型,当时区t1中的日期和时间是d1时,
–返回时区t2中的日期和时间。t1和t2是字符串。

SELECT SYSDATE BJ_TIME, NEW_TIME(SYSDATE, 'PDT', 'GMT') LOS_ANGLES FROM DUAL;
  • SYSDATE()函数

–返回系统当前时间

SELECT SYSDATE FROM DUAL;

4. 转换类函数

  • CHARTOROWID(s)函数
    –该函数将字符串s转换为RWID数据类型

  • CONVERT(s,aset[,bset])函数
    –该函数将字符串s由bset字符集转换为aset字符集

  • ROWIDTOCHAR()函数
    –该函数将ROWID数据类型转换为CHAR类型

  • TO_CHAR(x[,format])函数
    –该函数实现将表达式转换为字符串,format表示字符串格式。

SELECT TO_CHAR(SYSDATE, 'YYYY:MM:DD') FROM DUAL;
  • TO_DATE(s[,format[lan]])函数

–该函数将字符串s转换成date类型,format表示字符串格式,lan表示所使用的语言

SELECT TO_DATE('2015-1-1', 'YYYY-MM-DD') FROM DUAL;
  • TO_NUMBER(s[,format[lan]])函数

–该函数将返回字符串s代表的数字,返回值按照format格式进行显示,
–format表示字符串格式,lan表示所使用的语言。
–将十六进制数-18f转换为十进制数

SELECT TO_NUMBER('18', 'xxx') AS "十进制数" FROM DUAL;

5. 聚合类函数

  • AVG()函数

–计算选择列表的平均值,列表项目可以是一个列或多个列的表达式

SELECT AVG(SAL) AS "平均工资" FROM EMP;
  • COUNT()函数

–返回查询结果中的记录数

SELECT COUNT(1) FROM EMP;
  • MAX()函数

–返回选择列表项目中的最大数,列表项目可以使一个列或多个列的表达式。

SELECT MAX(SAL) AS "最高工资" FROM EMP;
  • MIN()函数

–返回选择列表项目中的最小数,列表项目可以使一个列或多个列的表达式。

SELECT MIN(SAL) AS "最低工资" FROM EMP;
  • SUM()函数

–返回选择列表项目中的数值总和,列表项目可以使一个列或多个列的表达式。

SELECT SUM(SAL) AS "工资之和" FROM EMP;
  • VARIANCE()函数

–返回选择列表项目的统计方差,列表项目可以使一个列或多个列的表达式。

SELECT VARIANCE(SAL) AS "统计工资方差" FROM EMP;
  • STDDEV()函数

–返回选择列表项目中的标准偏差,列表项目可以使一个列或多个列的表达式。

SELECT STDDEV(SAL) AS "工资标准偏差" FROM EMP;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/649382.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

滑动窗口(算法)

一、算法分享&#xff1a;滑动窗口 原题描述&#xff1a; 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 思路 定义一个 map 数据结构存储 (k, v)&#xff0c;其中 key 值为字符&#xff0c;value 值为字符位置 1&#xff0c;加 1 …

【深度学习】CodeFormer训练过程,如何训练人脸修复模型CodeFormer

文章目录 BasicSR介绍环境数据阶段 I - VQGAN阶段 II - CodeFormer (w0)阶段 III - CodeFormer (w1) 代码地址&#xff1a;https://github.com/sczhou/CodeFormer/releases/tag/v0.1.0 论文的一些简略介绍&#xff1a; https://qq742971636.blog.csdn.net/article/details/134…

链路追踪-调用链跟踪-Jaeger

文章目录 一、什么是链路跟踪二、OpenCensusOpenCensus 主要特点OpenTracing标准基本概念Span 三、典型服务端产品什么是OpenTracing?opentracing 使用介绍 四、JaegerJaeger 包含的模块Jaeger-client&#xff08;客户端库&#xff09; 五、Jaeger服务容器化部署过程问题整理 …

csdn黑色背景用法

在edge浏览器下&#xff0c;下载油猴脚本管理器 脚本下载 edge扩展 效果图如下&#xff1a;&#xff1a;&#xff1a;

[ACM学习] 进制转换

进制的本质 本质是每一位的数位上的数字乘上这一位的权重 将任意进制转换为十进制 原来还很疑惑为什么从高位开始&#xff0c;原来从高位开始的&#xff0c;可以被滚动地乘很多遍。 将十进制转换为任意进制

适合深夜发朋友圈的心灵鸡汤(整理70句)

1、很多时候&#xff0c;我们赢得了口舌&#xff0c;却失去了感情。 2、失恋到极致的时候&#xff0c;我真的会用后退来保护自己。 3、全身心地去爱&#xff0c;你可能会受到伤害&#xff0c;但这是完整人生的唯一方式。 4、自由不是想干什么就干什么&#xff0c;而是不想干…

Linux中LVM实验

LVM实验&#xff1a; 1、分区 -L是大小的意思-n名称的意思 从vg0&#xff08;卷组&#xff09;分出来 2、格式化LV逻辑卷 LVM扩容 如果icdir空间不够了&#xff0c; 扩展空间lvextend -L 5G /dev/vg0/lv1 /dev/vg0/lv1(pp,vg,lv) 刷新文件系统xfs_growfs /lvdir VG扩容 …

php:规范小数位数,例:10.00展示为10,10.98展示为10.98

代码 <?php$value 10.98; // 原始的双精度类型值if ($value floor($value)) {$formattedValue number_format($value, 0); // 10.00 转换为 10echo $formattedValue;} else {$formattedValue number_format($value, 2); // 10.98 保持为 10.98echo $formattedValue;} …

Sublime Text 3配置 Java 开发环境

《开发工具系列》 《开发语言-Java》 Sublime Text 3配置 Java 开发环境 一、引言二、主要内容1. 初识 Sublime Text 32. 初识 Java3. 接入 Java3.1 JDK 下载3.2 安装和使用 java3.3 环境变量配置 4. 配置 Java 开发环境5. 编写 Java 代码6. 编译和运行 Java 代码7. 乱码问题 三…

服务器无法访问外网怎么办

目前是互联网时代&#xff0c;网络已经成为人们日常生活中不可或缺的一部分。我们通过网络获取信息、进行沟通、甚至进行工作&#xff0c;因此&#xff0c;保持网络的稳定和通畅是非常重要的。然而&#xff0c;有时候我们可能会遇到一些网络无法访问外网的问题&#xff0c;这给…

作者推荐 | 【深入浅出MySQL】「底层原理」探秘缓冲池的核心奥秘,揭示终极洞察

探秘缓冲池的核心奥秘&#xff0c;揭示终极洞察 缓存池BufferPool机制MySQL缓冲池缓冲池缓冲池的问题 缓冲池的原理数据预读程序的局部性原则&#xff08;集中读写原理&#xff09;时间局部性空间局部性 innodb的数据页查询InnoDB的数据页InnoDB缓冲池缓存数据页InnoDB缓存数据…

驱动开发--多路复用-信号

一、多路复用 每个进程都有一个描述符数组&#xff0c;这个数组的下标为描述符&#xff0c; 描述符的分类&#xff1a; 文件描述符&#xff1a;设备文件、管道文件 socket描述符 1.1 应用层&#xff1a;三套接口select、poll、epoll select&#xff1a;位运算实现 监控的描…

[DIOR | DIOR-R]旋转目标检测数据集——基于YOLOv8obb,map50已达81.8%

DIOR是一个用于光学遥感图像目标检测的大规模基准数据集。涵盖20个对象类。这20个对象类是飞机、机场、棒球场、篮球场、桥梁、烟囱、水坝、高速公路服务区、高速公路收费站、港口、高尔夫球场、地面田径场、天桥、船舶、体育场、储罐、网球场、火车站、车辆和风磨。 1. DIOR简…

常见の算法链表问题

时间复杂度 1.链表逆序 package class04;import java.util.ArrayList; import java.util.List;public class Code01_ReverseList {public static class Node {public int value;public Node next;public Node(int data) {value data;}}public static class DoubleNode {publi…

Java 字符串 05 练习-遍历字符串和统计字符个数

代码&#xff1a; import java.util.Scanner; public class practice{public static void main(String[] args) {//键盘录入一个字符串&#xff0c;并进行遍历&#xff1b;Scanner input new Scanner(System.in);System.out.println("输入一个字符串&#xff1a;")…

webassembly003 whisper.cpp的main项目-1

参数设置 /home/pdd/le/whisper.cpp-1.5.0/cmake-build-debug/bin/main options:-h, --help [default] show this help message and exit-t N, --threads N [4 ] number of threads to use during computation-p N, --processors …

C++(一) 类之封装

类的介绍 类的三大特性&#xff1a;封装 继承 多态 类是在结构体的基础上进化而来 类由成员变量&#xff08;属于对象&#xff09;&#xff0c;成员方法&#xff08;属于类&#xff09;构成 创建对象时开辟的空间是用来存储成员变量的 成员方法是属于类的&#xff0c;不属…

Android App开发-简单控件(2)——视图基础

2.2 视图基础 本节介绍视图的几种基本概念及其用法&#xff0c;包括如何设置视图的宽度和高度&#xff0c;如何设置视图的外部间距和内部间距&#xff0c;如何设置视图的外部对齐方式和内部对齐方式等等。 2.2.1 设置视图的宽高 手机屏幕是块长方形区域&#xff0c;较短的那…

【Python基础015】集合的用法

1、定义 集合是无序可变&#xff0c;元素不能重复。实际上&#xff0c;集合底层是字典实现&#xff0c;集合的所有元素都是字典中的 “ 键对象”&#xff0c;因此是不能重复的且唯一的。 2、创建 &#xff08;1&#xff09;使用{}创建 a {1, 2, 3} # 集合存储整数b {1, 2,…

【星海随笔】unix 启动问题记录.

启动Ubuntu操作系统时&#xff0c;直接进入GRUB状态。 调试时候&#xff0c;曾显示 no bootable device no known filesystem detected 注意&#xff1a; 目前 GRUB 分成 GRUB legacy 和 GRUB 2。版本号是 0.9x 以及之前的版本都称为 GRUB Legacy &#xff0c;从 1.x 开始的就称…