Oracle 高级查询

oracle_高级查询 oracle_高级查询,使用oracle数据库最终上升到高级用法 立即下载

1. 多表查询

基本概念

  • 从多个表中获取数据

image-20200606101831181

  • 笛卡尔积,列数=两表列数之和,行数=两表行数之积

    image-20200606101922362

连接条件至少=表数量-1

2. 连接类型

2.1 等值连接

  • 查询员工信息,要求显示:员工号,姓名,月薪,部门名称

    SQL> SELECT e.EMPNO,e.ENAME,e.SAL,d.DNAME
      2  FROM EMP e,DEPT d
      3  WHERE e.DEPTNO=d.DEPTNO;
    
         EMPNO ENAME                       SAL DNAME
    ---------- -------------------- ---------- ----------------------------
          7369 SMITH                       800 RESEARCH
          7499 ALLEN                      1600 SALES
          7521 WARD                       1250 SALES
          7566 JONES                      2975 RESEARCH
          7654 MARTIN                     1250 SALES
          7698 BLAKE                      2850 SALES
          7782 CLARK                      2450 ACCOUNTING
          7839 KING                       5000 ACCOUNTING
          7844 TURNER                     1500 SALES
          7900 JAMES                       950 SALES
          7902 FORD                       3000 RESEARCH
          7934 MILLER                     1300 ACCOUNTING
    
    已选择 12 行。
    

不等值连接

  • 查询员工信息,要求显示:员工号,姓名,月薪,薪水的级别

    SQL> SELECT e.EMPNO,e.ENAME,e.SAL,s.GRADE
      2  FROM emp e,SALGRADE s
      3  WHERE e.SAL BETWEEN s.LOSAL and s.HISAL;
    
         EMPNO ENAME                       SAL      GRADE
    ---------- -------------------- ---------- ----------
          7369 SMITH                       800          1
          7900 JAMES                       950          1
          7521 WARD                       1250          2
          7654 MARTIN                     1250          2
          7934 MILLER                     1300          2
          7499 ALLEN                      1600          3
          7844 TURNER                     1500          3
          7566 JONES                      2975          4
          7698 BLAKE                      2850          4
          7782 CLARK                      2450          4
          7902 FORD                       3000          4
          7839 KING                       5000          5
    

外连接

核心:通过外连接,把对于连接条件不成立的记录,仍然包含在最后的结果中
左外链接:当连接条件不成立的时候,等号左边的表仍然被包含
右外链接:当连接条件不成立的时候,等号右边的表仍然被包含

  • 按部门统计员工人数,要求显示:部门号,部门名称,人数

    SQL> select d.deptno 部门号,d.dname 部门名称,count(e.empno) 人数
      2  FROM emp e,dept d
      3  where e.deptno=d.deptno
      4  group by d.deptno,d.dname;
    
        部门号 部门名称                           人数
    ---------- ---------------------------- ----------
            10 ACCOUNTING                            3
            20 RESEARCH                              3
            30 SALES    SQL> select * from dept;
    
        DEPTNO DNAME                        LOC
    ---------- ---------------------------- --------------------------
            10 ACCOUNTING                   NEW YORK
    
    
            20 RESEARCH                     DALLAS
    
    
            30 SALES                        CHICAGO
    
    
            40 OPERATIONS                   BOSTON
                                 6
    
    SQL> select * from dept;
    
        DEPTNO DNAME                        LOC
    ---------- ---------------------------- --------------------------
            10 ACCOUNTING                   NEW YORK
    
    
            20 RESEARCH                     DALLAS
    
    
            30 SALES                        CHICAGO
    
    
            40 OPERATIONS                   BOSTON
    
    

    上面少了一条部门的记录,原因是什么?员工表中不存在40号部门的员工

    image-20200606110555249

  • 右外连接

    SQL> select d.deptno 部门号,d.dname 部门名称,count(e.empno) 人数
      2  FROM emp e,dept d
      3  where e.deptno(+)=d.deptno
      4  group by d.deptno,d.dname
      5  ;
    
        部门号 部门名称                           人数
    ---------- ---------------------------- ----------
            30 SALES                                 6
            10 ACCOUNTING                            3
            20 RESEARCH                              3
            40 OPERATIONS                            0
    

自连接

  • 查询员工姓名和员工的老板姓名

    SQL> SELECT e.ENAME 员工姓名,b.ENAME 老板姓名
      2  FROM EMP e,EMP b
      3  where e.MGR=b.EMPNO
      4  ;
    
    员工姓名             老板姓名
    -------------------- --------------------
    FORD                 JONES
    ALLEN                BLAKE
    WARD                 BLAKE
    MARTIN               BLAKE
    TURNER               BLAKE
    JAMES                BLAKE
    MILLER               CLARK
    JONES                KING
    BLAKE                KING
    CLARK                KING
    SMITH                FORD
    

自连接存在的问题,本质上还是多表查询

  • 不适合操作大表
  • 解决办法:层次查询
image-20200606112152938

上层员工号=下层员工的老板号

SQL> select level, empno,ename,sal,mgr
  2  from emp
  3  connect by prior empno=mgr
  4  start with mgr is null
  5  ORDER BY 1;

     LEVEL      EMPNO ENAME                       SAL        MGR
---------- ---------- -------------------- ---------- ----------
         1       7839 KING                       5000
         2       7566 JONES                      2975       7839
         2       7698 BLAKE                      2850       7839
         2       7782 CLARK                      2450       7839
         3       7844 TURNER                     1500       7698
         3       7900 JAMES                       950       7698
         3       7654 MARTIN                     1250       7698
         3       7521 WARD                       1250       7698
         3       7934 MILLER                     1300       7782
         3       7902 FORD                       3000       7566
         3       7499 ALLEN                      1600       7698
         4       7369 SMITH                       800       7902
  • 层次查询:没有笛卡尔积,但是结果不够直观
  • 多表查询:结果直观,但需要进行多表查询

3.子查询

3.1 什么时候使用子查询

image-20200606120102161

3.2 子查询语法

image-20200606120229873
  • 查询工资比CLARK高的员工信息
SQL> select * from emp where sal>(select sal from emp where ename='CLARK');

     EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
      7566 JONES                MANAGER                  7839 02-4月 -81           2975                    20


      7698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    30


      7839 KING                 PRESIDENT                     17-11月-81           5000                    10


      7902 FORD                 ANALYST                  7566 03-12月-81           3000                    20

3.3 子查询需要注意的问题

  • 子查询语法中的小括号

  • 子查询的书写风格

  • 可以使用子查询的位置: where, select, having,from

    SQL> select deptno ,avg(sal)
      2  from emp
      3  group by deptno
      4  having avg(sal) >(select max(sal)
      5                     from emp
      6                     where deptno=30);
    
        DEPTNO   AVG(SAL)
    ---------- ----------
            10 2916.66667
    
    SQL> select ename
      2  from (select empno,ename from emp);
    
    ENAME
    --------------------
    SMITH
    ALLEN
    WARD
    JONES
    MARTIN
    BLAKE
    CLARK
    KING
    TURNER
    JAMES
    FORD
    MILLER
    
  • 不可以使用子查询的位置: group by

    SQL> select avg(sal) from emp group by
      2  (select deptno from emp);
    (select deptno from emp)
     *
    第 2 行出现错误:
    ORA-22818: 这里不允许出现子查询表达式
    
  • 强调:from后面的子查询可以看作成一张新的表

    查询员工信息:员工号,姓名,月薪,年薪

    SQL> select *
      2  from (select empno, ename, sal, sal*12 annal from emp);
    
         EMPNO ENAME                       SAL      ANNAL
    ---------- -------------------- ---------- ----------
          7369 SMITH                       800       9600
          7499 ALLEN                      1600      19200
          7521 WARD                       1250      15000
          7566 JONES                      2975      35700
          7654 MARTIN                     1250      15000
          7698 BLAKE                      2850      34200
          7782 CLARK                      2450      29400
          7839 KING                       5000      60000
          7844 TURNER                     1500      18000
          7900 JAMES                       950      11400
          7902 FORD                       3000      36000
          7934 MILLER                     1300      15600
    
  • 主查询和子查询可以不是同一张表

    查询部门名称是 SALES的员工信息

    SQL> select *
      2  from emp
      3  where deptno=(select deptno
      4  from dept
      5  where dname= 'SALES');
    
         EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
    ---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
          7499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         30
          7521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500
          7654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400
          7698 BLAKE                MANAGER                  7839 01-5月 -81           2850
          7844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0
          7900 JAMES                CLERK                    7698 03-12月-81            950
    
    image-20200606125044205
  • 一般不在子查询中,使用排序;但在Top-N分析问题中,必须对子查询排序

    image-20200606125227519
  • 一般先执行子查询,再执行主查询;但相关子查询例外

  • eg:找到员工表中薪水大于本部门平均薪水的员工,可以使用相关子查询也可多表查询

    select empno, ename, sal,
    from emp
    where sal >(select avg(sal) from emp where deptno=??)
    

    外面主查询员工所在的部门号,需要使用某种方式将员工部门号作为参数传到子查询中,需要使用别名

    select empno, ename, sal,(select avg(sal) from emp where  deptno=e.deptno)
    from emp e
    where sal >(select avg(sal) from emp where deptno=e.deptno)
         EMPNO ENAME                       SAL (SELECTAVG(SAL)FROMEMPWHEREDEPTNO=E.DEPTNO)
    ---------- -------------------- ---------- -------------------------------------------
          7499 ALLEN                      1600                                  1566.66667
          7698 BLAKE                      2850                                  1566.66667
          7839 KING                       5000                                  2916.66667
          7566 JONES                      2975                                  2258.33333
          7902 FORD                       3000                                  2258.33333
    
  • 单行孑查询只能使用单行操作符;多行孑查査询只能使用多行操作符

  • 注意:子查询中是null值问题

3.4 单行子查询与多行子查询

概念

  • 单行子查询返回一条记录,多行子查询返回多条记录
  • select语句后的子查询必须是单行子查询

单行操作符

操作符含义
=等于
>大于
>=大于等于
<小于
<=小于等于
<>不等于

多行操作符

操作符含义
in等于列表中的任何一个
any和子查询返回的任意一个值比较
all和子查询返回的所有值比较

示例

  • 查询员工信息,要求-职位与7566员工一样,薪水大于7782员工的薪水
select *
from emp
where job=(select job from emp where empno=7566)and
sal >(select sal from emp where empno=7782);
     EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
      7566 JONES                MANAGER                  7839 02-4月 -81           2975                    20


      7698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    30
  • 查询最低工资大于20号部门最低工资的部门号和部门的最低工资

    select deptno, min(sal)
    from emp
    group by deptno
    having min(sal)>(select min(sal) from emp where deptno='20');
        DEPTNO   MIN(SAL)
    ---------- ----------
            30        950
    
    
            10       1300
    

    查询部门名称是 SALES和 ACCOUNTING的员工信息

  • SQL> select *
      2  from emp
      3  where deptno in( select deptno from dept
      4   where dname='SALES' or dname='ACCOUNTING');
    
         EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
    ---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
          7499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         30
          7521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500
          7654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400
          7698 BLAKE                MANAGER                  7839 01-5月 -81           2850
    
    
          7782 CLARK                MANAGER                  7839 09-6月 -81           2450                    10
          7839 KING                 PRESIDENT                     17-11月-81           5000
    
    
          7844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         30
          7900 JAMES                CLERK                    7698 03-12月-81            950
    
    
          7934 MILLER               CLERK                    7782 23-1月 -82           1300                    10
    
    
  • 查询工资比30号部门任意一个员工高的员工信息

    SQL> select *
      2  from emp
      3  where sal >any(select sal from emp where deptno=30);
    

    大于任意一个值,即大于最小值

3.5 rownum 行号

  • 表中没有这一列,是Oracle设计用来帮助我们解决某些问题的
  • 如果需要显示出来,需要显示的再查询语句加上rounum这一列,不写不会显示
  • 行号永远按照默认的顺序生成
  • 行号只能使用<,<=;不能使用>,>=
  • 行号–Oracle临时表
SQL> select rownum, empno, ename, sal from emp order by sal desc;

    ROWNUM      EMPNO ENAME                       SAL
---------- ---------- -------------------- ----------
         8       7839 KING                       5000
        11       7902 FORD                       3000
         4       7566 JONES                      2975
         6       7698 BLAKE                      2850
         7       7782 CLARK                      2450
         2       7499 ALLEN                      1600
         9       7844 TURNER                     1500
        12       7934 MILLER                     1300
         5       7654 MARTIN                     1250
         3       7521 WARD                       1250
        10       7900 JAMES                       950
         1       7369 SMITH                       800

SQL> select rownum, empno, ename, sal
  2  from (select * from emp order by sal desc)
  3  where rownum<=3;

    ROWNUM      EMPNO ENAME                       SAL
---------- ---------- -------------------- ----------
         1       7839 KING                       5000
         2       7902 FORD                       3000
         3       7566 JONES                      2975

3.6 子查询的null值问题

  • 单行子查询null问题
  • 多行子查询null问题
  • 使用not in 需要保证结果集中不含空置

查询不是老板的员工

SQL> select *
  2  from emp
  3  where empno not in (select mgr from emp);

未选定行

image-20200606152457945

修改后的sql

SQL> select *
from emp
where empno not in (select mgr from emp where mgr is not null);

查询是老板的的员工

SQL> select *
  2  from emp
  3  where empno in (select mgr from emp);

     EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
      7902 FORD                 ANALYST                  7566 03-12月-81           3000                    20


      7698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    30


      7839 KING                 PRESIDENT                     17-11月-81           5000                    10


      7566 JONES                MANAGER                  7839 02-4月 -81           2975                    20


      7782 CLARK                MANAGER                  7839 09-6月 -81           2450                    10

image-20200606152424936

4. 案例

4.1 分页查询

概念

  • Oracle的分页查询是通过嵌套子查询来实现的
  • MySQL的分页查询是通过limit关键字来实现的

示例

分页查询显示员工信息:显示员工号,姓名,月薪
  1. 每页显示四条记录
  2. 显示第二页的员工
  3. 按照月薪降序排列
  • 错误示例(Oracle数据库是一个行式数据库,取了第一行才能取第二行,行号只能从1开始)
SQL> select rownum, empno, ename, sal from emp
  2  ;

    ROWNUM      EMPNO ENAME                       SAL
---------- ---------- -------------------- ----------
         1       7369 SMITH                       800
         2       7499 ALLEN                      1600
         3       7521 WARD                       1250
         4       7566 JONES                      2975
         5       7654 MARTIN                     1250
         6       7698 BLAKE                      2850
         7       7782 CLARK                      2450
         8       7839 KING                       5000
         9       7844 TURNER                     1500
        10       7900 JAMES                       950
        11       7902 FORD                       3000
        12       7934 MILLER                     1300
SQL> select rownum, empno, ename, sal from emp
  2  where rownum>=5 and rownum <=8;

未选定行

正确示例

select r,empno,ename,sal
from (select rownum r, empno, ename, sal
from (select rownum, empno, ename, sal from emp order by sal desc)el
where rownum<=8) e2
where r>=5;

         R      EMPNO ENAME                       SAL
---------- ---------- -------------------- ----------
         5       7782 CLARK                      2450
         6       7499 ALLEN                      1600
         7       7844 TURNER                     1500
         8       7934 MILLER                     1300

找到员工表中薪水大于本部门平均薪水的员工。
  • 关联子查询方式
select empno, ename, sal,(select avg(sal) from emp where  deptno=e.deptno)
from emp e
where sal >(select avg(sal) from emp where deptno=e.deptno)
  • 多表、嵌套查询方式
select e.empno, e.ename,e.sal, d.avgsal
from emp e,(select deptno, avg(sal) avgsal from emp group by deptno) d
where e.deptno=d.deptno and e.sal>d.avgsal;
 EMPNO ENAME                       SAL     AVGSAL
---------- -------------------- ---------- ----------
      7499 ALLEN                      1600 1566.66667
      7566 JONES                      2975 2258.33333
      7698 BLAKE                      2850 1566.66667
      7839 KING                       5000 2916.66667
      7902 FORD                       3000 2258.33333

按部门统计员工人数
image-20200606180108888
SQL> select count (*) Total,
  2  sum(decode(to_char (hiredate, 'YYYY'),'1980',1, 0)) "1980",
  3  sum(decode(to_char (hiredate, 'YYYY'),'1981',1, 0)) "1981",
  4  sum(decode(to_char (hiredate, 'YYYY'),'1982',1, 0)) "1982",
  5  sum(decode(to_char (hiredate, 'YYYY'),'1987',1, 0)) "1987"
  6  from emp;

     TOTAL       1980       1981       1982       1987
---------- ---------- ---------- ---------- ----------
        12          1         10          1          0

子查询

image-20200606204403653

查看sql执行效率

  1. explain plan for
  2. select * from table(dbms_xplan.display);
SQL> explain plan for select e.empno, e.ename,e.sal, d.avgsal
  2  from emp e,(select deptno, avg(sal) avgsal from emp group by deptno) d
  3  where e.deptno=d.deptno and e.sal>d.avgsal;

已解释。

SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 269884559

-----------------------------------------------------------------------------
| Id  | Operation            | Name | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |      |     1 |    43 |     5  (20)| 00:00:01 |
|*  1 |  HASH JOIN           |      |     1 |    43 |     5  (20)| 00:00:01 |
|   2 |   VIEW               |      |     3 |    78 |     3  (34)| 00:00:01 |
|   3 |    HASH GROUP BY     |      |     3 |    21 |     3  (34)| 00:00:01 |
|   4 |     TABLE ACCESS FULL| EMP  |    12 |    84 |     2   (0)| 00:00:01 |
|   5 |   TABLE ACCESS FULL  | EMP  |    12 |   204 |     2   (0)| 00:00:01 |
-----------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("E"."DEPTNO"="D"."DEPTNO")
       filter("E"."SAL">"D"."AVGSAL")

SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 2399348195

----------------------------------------------------------------------------------
| Id  | Operation             | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------
|   0 | SELECT STATEMENT      |          |     1 |    69 |     8  (25)| 00:00:01 |
|*  1 |  HASH JOIN OUTER      |          |     1 |    69 |     8  (25)| 00:00:01 |
|*  2 |   HASH JOIN           |          |     1 |    43 |     5  (20)| 00:00:01 |
|   3 |    VIEW               | VW_SQ_1  |     3 |    78 |     3  (34)| 00:00:01 |
|   4 |     HASH GROUP BY     |          |     3 |    21 |     3  (34)| 00:00:01 |
|   5 |      TABLE ACCESS FULL| EMP      |    12 |    84 |     2   (0)| 00:00:01 |
|   6 |    TABLE ACCESS FULL  | EMP      |    12 |   204 |     2   (0)| 00:00:01 |
|   7 |   VIEW                | VW_SSQ_2 |     3 |    78 |     3  (34)| 00:00:01 |
|   8 |    HASH GROUP BY      |          |     3 |    21 |     3  (34)| 00:00:01 |
|   9 |     TABLE ACCESS FULL | EMP      |    12 |    84 |     2   (0)| 00:00:01 |
----------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("ITEM_2"(+)="E"."DEPTNO")
   2 - access("ITEM_1"="E"."DEPTNO")
       filter("SAL">"AVG(SAL)")

已选择 23 行。

参考资料

Oracle提高篇之DECODE

jiaozhu.zip 教主 Oracle SQL改写优化 2.0版 教主Oracle SQL高级查询优化改写完美培训视频 2.0版,这个我参与培训的,包含视频、SQL文件、教学文档内容完整,分享给大家学习,共同努力进阶转型开发DBA,人称教主,做sql改写十多年了,sql改写功底很强! 立即下载

相关推荐

多普勒频移测速与FMCW测距

文章目录时域与频域基于多普勒频移估计速度基于传统的FMCW测距什么是FMCWFMCW测距原理参考论文 时域与频域 时域 — 自变量是时间,即横轴是时间,纵轴是信号振幅的变化。表示振幅随时间的变化。 频域 — 自变量是频率,即横轴是频率,纵轴是该频率信号幅度的峰值。表示振幅峰值随频率的变化。 基于多普勒频移估计速度 当发送端静止而接收端相对运动时,有: v=FsFcv=\frac{F^s}{F}cv=FFs​c 其中,F是信号的原始频率;FsF^sFs 是接收信号频率与发送信号频率之差,即多普勒频移;c是

dsaaf21的博客 9185

12C 新特性 | 标量子查询自动转换

有超过6年超大型数据库专业服务经验,擅长数据库解决方案设计与项目管理;在多年的技术实践中,先后为运营商(移动、电信)、银行、保险、制造业等各行业客户的业务关键型系统提供了运维、升级、性能优化、项目实施与管理、容灾建设等咨询与技术实施服务。钟浪峰云和恩墨交付工程师本文由恩墨大讲堂150期线上分享整理而成。课程回看可点击文末“阅读原文”。 优化器是 Oracle 数据库最引人入胜的部件之一,因为它对每

Enmotech的博客 590

非标准包 game.rgss3a 的打开方法 | 2023 年实测

生活笔记

陌雨’的博客 1万+

oracle—高级查询

集合操作,高级分析函数等

weixin_43752912的博客 1337

5分钟搞懂知识抽取:如何把非结构化数据变成知识图谱的宝藏?

本文通过一个电商评论分析实战案例,详细解析了如何利用spaCy、Neo4j等工具,将非结构化文本数据转化为结构化知识图谱的完整流程。文章重点阐述了知识抽取的核心步骤,包括命名实体识别、关系抽取以及知识存储与查询,帮助读者快速掌握将数据转化为知识宝藏的关键技术。

weixin_29054245的博客 232

英飞凌TC3XX芯片---------CAN模块详解

CAN 总线是一种广泛应用于汽车、工业控制和其他领域的串行通信协议,CAN 英文名称:Controller Area Network。最初由德国的 Bosch 公司开发,用于汽车电子系统之间的通信。CAN 总线具有高可靠性、抗干扰能力强和实时性好等特点,因此被广泛应用于需要可靠数据传输的领域。CAN2.0B 协议中的 CAN 最多支持 29 位 ID,但是网络架构中使用的一般是 11 位的标准帧 ID。如下图是标准 CAN FD 帧数据结构:关于 CAN 协议相关内容,本文不作阐述。

sky的博客 3666

oracle怎么高级查询,Oracle高级技巧,高级查询

1. 删除表的注意事项在删除一个表中的全部数据时,须使用TRUNCATE TABLE 表名;因为用DROP TABLE,DELETE * FROM 表名时,TABLESPACE表空间该表的占用空间并未释放,反复几次DROP,DELETE操作后,该TABLESPACE上百兆的空间就被耗光了。2.having 子句的用法having 子句对 group by 子句所确定的行组进行控制,having 子...

weixin_35370032的博客 612

STM32读取BQ40Z50的数据

TI电池管理芯片BQ40Z50,通信协议是SMBUS,类似IIC,速率要求10-100KHz   用的STM32F103的硬件IIC读取电池的各种数值,源代码如下: ​ #include "iic.h" #include "stdio.h"  //***************************************************** // IIC2初始化函数:初始化ST...

百步登峰的博客 1万+

Oracle 之高级查询

1、常用的分组函数:AVG,SUM,MIN,MAX,COUNT,WM_CONCAT AVG:平均值,SUM:最大值,MIN:最大值,MAX:最小值,COUNT:计算,WM_CONCAT:行转列 select avg(sal),sum(sal) from emp; select max(sal),min(sal) from emp; select count(empno) from emp; select count(distinct depno) from emp; set linesize 200

SpringHASh的博客 345

OpenVox 8FXO板卡驱动安装记录

OpenVox A800P和A1200P的板卡驱动安装及问题解决方法

clliu的专栏 2463

SpringBoot4+Java21前后端分离架构项目脚手架

本文介绍了基于SpringBoot 4和Java 21的前后端分离项目架构方案。主要内容包括:1)采用Spring Security 7实现JWT无状态认证和RBAC权限控制;2)后端使用MyBatis-Plus简化数据库操作,前端采用Vue3+Pinia组合;3)详细的项目结构设计,推荐按业务模块分包;4)核心依赖配置和架构设计图,涵盖认证授权流程。该方案结合最新技术栈,提供了生产级的全链路实现,特别适合需要快速构建现代化Web应用的项目。

Hello, New World! 414

Oracle高级查询

1.分组查询 1.1分组函数 分组函数作用于一组数据,并对一组数据返回一个值 1.2常用的分组函数 AVG、SUM、MIN、MAX、COUNT、WM_CONCAT 1.2.1 AVG(平均值)和SUM(总和) 例:求员工的平均工资和工资总额 select  avg(sal)

rabbit_three的博客 393

Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(10) C++ 前置后置增减运算符重载形式与比较

C语言的++、–运算符在此不讨论。 文章目录1、前置后置增减运算符重载的形式2、前置和后置运算符的性能比较 1、前置后置增减运算符重载的形式 自增运算符“++”和自减运算符“–”分别包含两个版本。即运算符前置形式(如 ++x)和运算符后置形式(如 x++),这两者进行的操作是不一样的。因此,当我们在对这两个运算符进行重载时,就必须区分前置和后置形式。C++根据参数的个数来区分前置和后置形式。如果按照通常的方法来重载 ++ 运算符(即作为成员函数重载时不带参数,或者作为非成员函数重载时带有一个参数),那么重载

二进制君 5825

oracle高级查询总结

oracle与我们常用的sqlserver、mysql相比,有非常多的优势,它可以支持多个实例同时运行,功能非常强大,主要在传统行业的数据化业务中,比如:银行、金融这样的对可用性、健壮性、安全性、实时性要求极高的业务;零售、物流这样对海量数据存储分析要求很高的业务。此外,高新制造业如芯片厂也基本都离不开Oracle;电商也有很多使用者,如京东(正在投奔Oracle)、阿里巴巴(计划去Oracle化

变是永远不变的...... 4691

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

oracle高级查询功能,Oracle高级查询-更新中

概述高级查询在数据库的开发过程中应用广泛,本博文将从分组查询、多表查询和子查询三个方面介绍Oracle的高级查询,最后典型案例的应用。sql窗口修改已执行的sqled表示编辑上个sql/ 表示执行上个sql 分组查询分组函数的概念分组函数作用于一组数据,并对一组数据返回一个值。 分组函数的语法 常用分组函数avgsumminmaxcountwm_contact 行转列分组函数的使用avg()/su...

weixin_36393239的博客 241

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

oracle高级查询功能,Oracle高级查询

Oracle高级查询使用Oracle特有的查询语法, 可以达到事半功倍的效果1. 树查询createtabletree(idnumber(10)notnullprimarykey,namevarchar2(100)notnull,supernumber(10)notnull//0isroot);--从子到父select*fro...

weixin_30851655的博客 367

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Oracle高级查询语句

Oracle高级查询语句 一、分组查询 1.分组函数group by :分组函数作用于一组数据,并对一组数据返回一个值 2.常用的分组函数: ·AVG 取平均值 ·SUM 求和 ·MIN 取最小值 ·MAX 取最大值 ·COUNT 统计次数 ·WM_CONCAT 行转列 如...

fhy36897的博客 931

jdbc连接oracle、oracle函数、高级查询

文章目录一、课程目标二、Oarcle的连接三、Oracle函数3.1 字符串函数3.2 日期函数3.3 转换函数3.4 数字函数四、Oracle高级查询4.1 多表查询4.2 子查询4.3 分页查询 一、课程目标 【掌握】jdbc连接Oracle 【理解】Oracle函数 【理解】Oracle高级查询 二、Oarcle的连接 1、导入jar包 2、注册驱动 3、创建连接 4、准备sql进行预编译 5、执行处理结果集 6、关闭连接释放资源 import java.sql.Connection; import

温故。的博客 865

Oracle 第19章:高级查询技术

子查询(Subquery)是指嵌套在另一个SQL语句中的查询。子查询可以出现在SELECT、INSERT、UPDATE或DELETE语句中,也可以作为其他子查询的一部分。根据其返回的结果数量,子查询可以分为单行子查询和多行子查询。

hummhumm的专栏 2460

Oracle的高级查询

<br /><br />Oracle的高级查询<br />     前面介绍的查询还局限在数据库的一张表内。但在实际应用中,我们经常需要在多张表中查询数据或者需要对表中的数据进行分类、汇总等。这就需要较为复杂的高级查询<br />前提掌握部分{<br />多个表之间关系:一对多|(多对一)  多对多一对一 3种<br />关系的完整性约束:实体完整性、参照完整性、用于定义的完整性。必须满足实体完整性和参照完整性.<br />实体完整性:规定了字段|属性的约束<br />参照完整性:关系与关系之间的引用某个字

ing 4340

Oracle的高级查询-分组、连接、子查询、分页

Oracle的高级查询 概述:Oracle作为一个老牌数据库,风风雨雨经历了二三十年。我们平时工作的时候,或多或少也会接触到Oracle数据库的使用。在数据库开发中,简单的单表操作,对大部分刚入行的新人来说,不会有太大的问题。 但是随着我们所开发业务系统的功能多样化,为了实现复杂的需求,我们就会使用的高级查询。Oracle高级查询中,比较难理解的是分组查询,连接查询以及子查询,以及基于子查询的分页...

tsxiong123的博客 1313

oracle_高级子查询

 oracle_高级子查询 ①子查询 子查询是嵌套在 SQL 语句中的另一个SELECT 语句 子查询 (内查询) 在主查询执行之前执行 主查询(外查询)使用子查询的结果 ②多列子查询 主查询与子查询返回的多个列进行比较 where (column1,column2) in (子查询) 例:查询与141号或174号员工的manager_id和department_id相同的其

不积跬步无以至千里,不积小流无以成江海 2164
上一篇: 解决:mybatis-generator-maven-plugin:1.3.2:generateAccess denied for user 'root'@'localhost'
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值