Oracle笔记 三、function 、select

Scott表下有这么几个常用的表,而且还带有数据。分别是emp、dept、salgrade;
1、查看表结构用desc
    desc emp;
 
2、空表dual,最常用的空表,如:
    select 2 * 4 from dual;
    select sysdate from dual;
 
3、双引号能保持格式
    如:select sysdate “toDay 日 期” from dual;
 
4、|| 字符串连接
    如:select 2*3 || 8 from dual;
    select ename || sal from scott.emp;
    select ename || ‘ORACLE’ from scott.emp;
 
5、单引号,如:select 2 * 2 || 'abc''efg' from dual;
    用两个单引号表示一个单引号
 
6、去掉重复数据distinct
    select distinct deptno from scott.emp;
    去掉重复组合:select distinct deptno,job from scott.emp;
 
7、where查询
    A、=查询,select * from scott.emp where sal = 1500;
 
    B、比较<、>、>=、<=
        select * from scott.emp where sal > 1500;
    C、and or
        select * from scott.emp where sal > 1500 and sal <= 5000 or deptno = 10;
    D、in、not in
        select * from scott.emp where sal in (1500, 800) and deptno not in (10, 20)
 
    E、like模糊 escape 转义
        Select * from scott.emp where ename like ‘%in%’;
        Select * from scott.emp where ename like ‘%in\%k%’;
        Select * from scott.emp where ename like ‘%in#%k%’ escape ‘#’;
        表示like中的#号是转义字符,相当于\
    F、is null、is not null
    K、    order by
        select sal, ename from scott.emp order by sal;
        select sal, ename from scott.emp order by sal asc;
        select sal, ename from scott.emp order by sal desc;
        select sal, ename from scott.emp where sal > 2000 order by sal desc;
        select sal, deptno, ename from scott.emp order by sal,deptno desc;
    
8、function
    A、lower、upper、substr
        select lower(‘abcABC’) from dual;
        select upper(‘abcABC’) from dual;
        substr(target, startIndex, length)
        select substr(‘abcABC’, 1, 3) from dual;
 
    B、chr、ascii
        将数字安装ascii值转换成字符:select char(65) from dual;
        将字符转换成ascii值:select ascii(‘Z’) from dual;
    
    C、round、to_char
        精确小数
        select round(22.456) from dual;
        保留2位小数:select round(22.456, 2) from dual;
        精确到个位:select round(22.456, -1) from dual;
    
        货币
        设置货币格式,000前面不足就用0代替
        select to_char(sal, '$000,000.00') from scott.emp;
        999就不会替换不足的地方,只会安装格式输出
        select to_char(sal, '$999,999.99') from scott.emp;
        本地货币格式
        select to_char(sal, 'L999,999.99') from scott.emp;
 
        日期
        日期格式 
        格式控制 描述 
        YYYY、YYY、YY 分别代表4位、3位、2位的数字年 
        YEAR 年的拼写 
        MM 数字月 
        MONTH 月的全拼 
        MON 月的缩写 
        DD 数字日 
        DAY 星期的全拼 
        DY 星期的缩写 
        AM 表示上午或者下午 
        HH24、HH12 12小时制或24小时制 
        MI 分钟 
        SS 秒钟 
        SP 数字的拼写 
        TH 数字的序数词 
 
        “特殊字符” 假如特殊字符 
        HH24:MI:SS AM 15:43:20 PM
        select to_char(sysdate, 'YYYY-MM-DD HH:MI:SS') from dual;
        select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') from dual;
 
     D、to_date、to_number、nvl
        to_date(target, current_format)
        select to_date('2011-4-2 17:55:55', 'YYYY-MM-DD HH:MI:SS') from dual;
        select to_number('$12,322.56', '$999,999.99') + 10 from dual;
        select to_number('$12,322.56', '$00,000.00') + 10 from dual;
        select to_number('22.56') + 10 from dual;
        nvl可以将某个字段的空值转换成指定的值
        select ename, sal, nvl(comm, 1.00) from scott.emp;
 
9、group function 组函数:min、max、avg、sum、count
        select max(sal) from scott.emp;
        select min(sal) from scott.emp;
        select avg(sal) from emp;
        select round(avg(sal), 2) from emp;
        select to_char(avg(sal), 'L999,999.99') from emp;
        select sum(sal) from emp;
        select count(comm) from emp;
        select count(distinct deptno) from emp;
 
10、group by 分组
    select deptno, avg(sal) from emp group by deptno;
    select deptno, job, avg(sal) from emp group by deptno, job;
    求部门最高工资的所在部门的员工信息:
    select deptno, ename, sal from emp where sal in (select max(sal) from emp group by deptno);
 
11、having 对分组数据进行过滤
    求部门评价工资:
    select * from (select avg(sal) sal, deptno from emp group by deptno) where sal > 2000;
    select avg(sal) sal, deptno from emp group by deptno having avg(sal) > 2000;
 
12、子查询
    求部门分组后工资最高的员工信息
    select emp.ename, emp.sal, emp.deptno from emp, (select max(sal) max_sal, deptno from emp group by deptno) t where emp.sal = t.max_sal and emp.deptno = t.deptno;
    求部门平均工资等级
    select s.grade, t.deptno, t.avg_sal from scott.salgrade s, (select deptno, avg(sal) avg_sal from emp group by deptno) t where t.avg_sal > s.losal and t.avg_sal < s.hisal;(between)
 
13、自连接
    select a.ename, b.ename mgr_name from emp a, emp b where a.empno = b.mgr;
 
14、 连接查询
    select dname, ename from dept, emp where dept.deptno = emp.deptno;
    select dname, ename from dept join emp on dept.deptno = emp.deptno;
    select dname, ename from dept join emp using(deptno);
    select dname, ename from dept left join emp on dept.deptno = emp.deptno;
    select dname, ename from dept right join emp on dept.deptno = emp.deptno;
    select dname, ename from dept full join emp on dept.deptno = emp.deptno;
    select a.ename, b.ename mgr_name from emp a join emp b on a.mgr = b.empno;
    select a.ename, b.ename mgr_name from emp a left join emp b on a.mgr = b.empno;
 
15、 Rownum
    select rounum, deptno, dname from dept;
    select * from (
         select rownum r, dept.* from dept
    ) t where  t.r > 2;
 
16、树状结构查询
    select level, empno, ename, mgr from emp
    connect by prior mgr = empno;
 
17、排序函数
    --按部门分组,给出分组后的序号
    select row_number() over(partition by deptno order by sal), emp.* from emp;
    
    --rank排序,空出相同部分
    select rank() over(partition by deptno order by sal), emp.* from emp;
    select rank() over(order by deptno), emp.* from emp;
    select rank() over(order by sal), emp.* from emp;
    
    --dense_rank排序给出相同序号,不空留序号
    select rank() over(order by sal), emp.* from emp;
    select dense_rank() over(order by sal), emp.* from emp;
 
18、交集、并集、割集查询
    --并集:不带重复数据
    select * from emp
    union
    select * from emp2;
    
    --并集:带重复数据
    select * from emp
    union all
    select * from emp2;        
    
    --割集,显示不同部分
    select * from emp
    minus
    select * from emp2;
 
19、 查询系统表、视图
    select owner, object_name, object_type, status, dba_objects.* from dba_objects where object_type = 'view' and status = 'invalid';
 
    select * from user_objects where object_type like 'PROCEDURE';
 
20、练习题
    --部门最高薪资员工信息
    select ename, sal, deptno from emp 
    where sal in (select max(sal) from emp group by deptno);
    
    --部门最高薪资员工信息
    select ename, sal, emp.deptno from emp 
    join (select max(sal) max_sal, deptno from emp group by deptno) t 
    on emp.deptno = t.deptno and emp.sal = t.max_sal;
    
    --部门平均薪资等级
    select grade, losal, hisal, t.avg_sal from salgrade 
    join (select avg(sal) avg_sal, deptno from emp group by deptno) t
    on t.avg_sal between losal and hisal;
    
    --经理人
    select ename, job from emp where empno in (select mgr from emp);
    
    --不用分组函数,查询薪水最高值
    select * from (select sal, ename from emp order by sal desc) where rownum = 1;
    select distinct a.sal from emp a join emp b on a.sal > b.sal where rownum = 1;
    select sal from emp where sal not in (select distinct a.sal from emp a join emp b on a.sal < b.sal);
    
    --部门平均薪水最高的部门编号
    select deptno, t.avg_sal from (select avg(sal) avg_sal, deptno from emp group by deptno) t
    where avg_sal = (
        select max(avg_sal) max_sal from (select avg(sal) avg_sal, deptno from emp group by deptno)
    );
    
    select deptno, t.avg_sal from (select avg(sal) avg_sal, deptno from emp group by deptno) t
    where avg_sal = (
        select max(avg(sal)) max_sal from emp group by deptno
    );
    
    --部门平均薪水最高的部门名称
    select dname from dept where deptno = (
     select deptno from (select avg(sal) avg_sal, deptno from emp group by deptno) t
     where avg_sal = (
            select max(avg_sal) max_sal from (select avg(sal) avg_sal, deptno from emp group by deptno)
     )
    );
    
    select dname from dept where deptno = (
        select deptno from (select avg(sal) avg_sal, deptno from emp group by deptno) t
        where avg_sal = (
               select max(avg(sal)) from emp group by deptno
        )
    );
    
    --平均薪水最低的部门的部门名称
    select dname from dept where deptno = (
      select deptno from (select avg(sal) avg_sal, deptno from emp group by deptno) 
      where avg_sal = (
        select min(avg_sal) min_sal from (
               select avg(sal) avg_sal from emp group by deptno
        )
      )
    );
    
    select dname from dept where deptno = (
        select deptno from (select avg(sal) avg_sal, deptno from emp group by deptno) 
        where avg_sal = (    
          select min(avg(sal)) avg_sal from emp group by deptno
        )
    );
    
    --平均薪水等级最低的部门的部门名称
    select dname from dept where deptno = (
    select deptno from (
         select grade, t.deptno from salgrade s join (
            select avg(sal) avg_sal, deptno from emp group by deptno
         ) t
         on t.avg_sal between s.losal and s.hisal
      )
      where grade = (
        select min(grade) from salgrade s join (
            select avg(sal) avg_sal, deptno from emp group by deptno
        ) t
        on t.avg_sal between s.losal and s.hisal
      )
    );
    
    --部门经理人中,平均薪水最低的部门名称
    select t.deptno, dname from (
        select sal, deptno from emp where empno in (select distinct mgr from emp)
    ) t join dept 
    on t.deptno = dept.deptno
    where sal = (
        select min(sal) from emp where empno in (select distinct mgr from emp)
    );
    
    --比普通员工的最高薪水还要高的经理人名称
    select * from (
        select empno, ename, sal from emp where empno in (select distinct mgr from emp where mgr is not null)
    ) t
    where t.sal > (
        select max(sal) max_sal from emp where empno not in (
         select distinct mgr from emp where mgr is not null
        )
    );

转载于:https://www.cnblogs.com/bokxy/p/4873017.html

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

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

相关文章

C和指针之动态内存分配malloc、calloc、realloc简单使用和区别

1、介绍 3个函数都在<stdlib.h>头文件1&#xff09;、void* malloc(unsigned size);在内存的动态存储区中分配一块长度为size字节的连续区域&#xff0c;参数size为需要内存空间的长度&#xff0c;返回该区域的首地址&#xff0c;这里我们需要主要如果申请失败返回空指针…

理解Linux系统中的load average

一、什么是load average&#xff1f;linux系统中的Load对当前CPU工作量的度量 (WikiPedia: the system load is a measure of the amount of work that a computer system is doing)。也有简单的说是进程队列的长度。Load Average 就是一段时间 (1 分钟、5分钟、15分钟) 内平均…

【贯穿】.NET6结合Docker傻瓜式实现容器编排

常规开发部署的痛点一个项目的开发上线有很多纷繁复杂的问题&#xff0c;例如&#xff1a;操作系统运行环境以及各种应用配置、集群环境搭建等等。特别是各种版本的迭代导致的不兼容&#xff0c;这些对于曾经的架构师而言也十分苦恼。而Docker的出现实现了从“蚂蚁搬家”到“乾…

bootstrapt 表格自适应_一起聊B端设计 - 如何设计表格?

一、 数据查看让我们先来回顾一下表格的基本构成&#xff0c;最上面的为表头&#xff0c;横为行&#xff0c;纵为列&#xff0c;内容区每一组展示数据区域为单元格。 表格的设计&#xff0c;虽然看似简单&#xff0c;但是作为用户最常用的组件之一&#xff0c;我们需要对视觉和…

.NET 6 攻略大全(二)

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;15分钟)接上篇内容&#xff0c;本篇文章将介绍&#xff1a;Arm64、容器、支持 OpenTelemetry 指标、Windows Forms 的相关攻略。 Arm64这些天来&#xff0c;对于笔记本电脑、云硬件和其他设备来说&#xff0c;Arm64 令…

C和指针之动态内存分配之输入很多整数进行排序

1、问题 读取一列整数,然后按升序排列它们,最后打印列表 2、代码实现 #include <stdio.h> #include <stdlib.h> /** 此函数根据你给的比较条件进行快速排序,通过指针移动实现排序 void qsort ( void * base, size_t num, size_t size, int ( * comparator ) (…

ubuntu 开启 apache mod_rewrite

2019独角兽企业重金招聘Python工程师标准>>> ci里需要隐藏index.php的输入需要使用apache的rewrite模块,按照下面的步骤开启mod_rewrite http://www.dev-metal.com/enable-mod_rewrite-ubuntu-14-04-lts/ 转载于:https://my.oschina.net/u/1177171/blog/354202

【转】Linux中断处理学习笔记

原文网址&#xff1a;http://www.cnblogs.com/GT_Andy/archive/2011/06/21/2086100.html 1&#xff0e;Linux中断的注册与释放&#xff1a; 在<linux/interrupt.h>, , 实现中断注册接口: int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct …

Jenkins入门系列之——03PDF文档下载

啥都不说了&#xff0c;网页看着蛋疼的&#xff0c;自己下载pdf文档吧。 点击下载文档 http://files.cnblogs.com/zz0412/jenkins%E5%85%A5%E9%97%A8%E6%89%8B%E5%86%8C.pdf &#xff08;一直有人说下载不了&#xff0c;把连接单独发出来&#xff09; 好记性不如烂笔头&#x…

Android之ndk之用arm-linux-androideabi工具通过地址找到具体哪里崩溃

1、配置环境 1)、找到ndk目录,如果不记得我们到bashrc文件里找到 vim ~/.bashrc 2)、配置ndk目录下的arm-linux-androideabi的bin到bashrc文件里面去 vim ~/.bashrc 然后配置路径,这里是我的 export PATH=$PATH:******/android-ndk-r10e…

composer切换源_Composer具体安装方法

composer 作为依赖管理工具&#xff0c;使用频率还是挺高的。特别是对于我这种比较懒的程序猿&#xff0c;有现成轮子的时候坚决不自己重复造轮子。它主要有三部分构成&#xff1a;命令行工具&#xff0c;包仓库&#xff0c;代码库。包仓库就是我们常说的 composer 源&#xff…

C# 操作FireBird 附源码

写了一个C#操作firebird数据库的小Demo&#xff0c;有需要的可以研究研究, 步骤&#xff1a; 1.创建数据库 2.建数据表&#xff0c;插入数据&#xff0c;并读取、 写的时候碰到N多奇葩问题&#xff0c;记录了一些 解决方案&#xff1a; 程序集-生成-目标平台 改成 x86 源码地址…

UILabel的高度自适应

_content [UILabel new]; _content.text "日落时分&#xff0c;沏上一杯山茶&#xff0c;听一曲意境空远的《禅》&#xff0c;心神随此天籁&#xff0c;沉溺于玄妙的幻境里。仿佛我就是那穿梭于葳蕤山林中的一只飞鸟&#xff0c;时而盘旋穿梭&#xff0c;时而引吭高歌&a…

.NET 6 攻略大全(三)

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;15分钟).NET 6 继续与大家相约周日啦。本篇文章将介绍&#xff1a;单文件应用、IL 修整、System.Text.Json、源代码构建、库AIP的相关攻略。 单文件应用 在 .NET 6中&#xff0c;已为 Windows 和 macOS 启用内存中单文…

从如何优化SQL入手,提高数据仓库的ETL效率

1 引言数据仓库建设中的ETL(Extract, Transform, Load)是数据抽取、转换和装载到模型的过程&#xff0c;整个过程基本是通过控制用SQL语句编写的存储过程和函数的方式来实现对数据的直接操作&#xff0c;SQL语句的效率将直接影响到数据仓库后台的性能。 目前&#xff0c…

C和指针之动态内存分配(读取范围在1和标准输入读取的size之前每个数据出现的次数)

1、问题 读取范围在1和标准输入读取的size之前每个数据出现的次数 2、代码实现 #include <stdio.h> #include <stdlib.h> #include <string.h>//读取范围在1和标准输入读取的size之前每个数据出现的次数 int *count(int size) {if (size <= 0)return NUL…

测试眉形的有哪个软件_这五款自动化软件测试工具,你最喜欢用哪个?

对测试自动化的依赖性增加导致大量自动化软件测试工具的出现&#xff0c;使得很难确定哪些是最好的。为了帮助您完成自动化工作&#xff0c;我们根据自己和他人的经验创建了五大最佳自动化软件测试工具列表。1. SeleniumSelenium可以说是web开发人员和测试人员中最受欢迎的自动…

本科 8年经验,20k的Offer,接还是不接?

伴随着疫情的此起彼伏&#xff0c;今年的金三银四跳槽季比往年要低沉很多&#xff0c;近日一条朋友圈火遍社区&#xff0c;“坐标一线城市&#xff0c;本科毕业&#xff0c;8年经验&#xff0c;15天仅5场面试&#xff0c;最终接了20k的offer&#xff0c;今年真难&#xff01;”…

CAD中批量打印

同事在网上找各种软件来实现CAD图的批量打印&#xff0c;总是问题多多。于是&#xff0c;我想到一个更方便的解决方法&#xff0c;即只要我将一个打印出来&#xff0c;然后就可以用批量处理来实现。 1.在CAD中输入plot命令&#xff08;或快捷键CtrlP&#xff09;&#xff0c;即…

java里面的文件上传与下载

java里面的文件上传与下载 文件的上传与下载主要用到两种方法&#xff1a;1、方法一&#xff1a;commons-fileupload.jar commons-io.jarapache的commons-fileupload实现文件上传&#xff0c;下载 【upload】package com.handson.bbs.servlet; import java.io.File;import java…