返回顶部
首页 > 资讯 > 数据库 >Oracle专题4之Oracle基本查询
  • 594
分享到

Oracle专题4之Oracle基本查询

2024-04-02 19:04:59 594人浏览 八月长安
摘要

1、oracle的基本查询语句 查询概述:查询是使用最频繁的一个操作,可以从一个表中查询数据,也可以从多个表中查询数据,本节主要围绕单表查询的操作。 基本查询的语法格式:SELECT * | {

1、oracle的基本查询语句

  • 查询概述:查询是使用最频繁的一个操作,可以从一个表中查询数据,也可以从多个表中查询数据,本节主要围绕单表查询的操作。
  • 基本查询的语法格式:SELECT * | {[DISTINCT] column | expression [alias],...} FROM table [ WHERE condition](Table用于指定表名、column用于指定列名、expression用于指定表达式、alias用于指定列的别名、condition用于指定查询条件。)

    a、排除重复行distinct

  • 默认情况下,当执行查询操作时,会显示所有满足条件的行、包括重复行。
  • 例如:SELECT DISTINCT deptno, job FROM emp;

    sql> conn scott/02000059
    已连接。
    SQL> SELECT deptno, job FROM emp;
            DEPTNO JOB
                    20 CLERK
                    30 SALESMAN
                    30 SALESMAN
                    20 MANAGER
                    30 SALESMAN
                    30 MANAGER
                    10 MANAGER
                    20 ANALYST
                    10 PRESIDENT
                    30 SALESMAN
                    20 CLERK
                    30 CLERK
                    20 ANALYST
                    10 CLERK
            已选择14行。
    SQL> SELECT DISTINCT deptno, job FROM emp;
            DEPTNO JOB
                    20 CLERK
                    30 SALESMAN
                    20 MANAGER
                    30 CLERK
                    10 PRESIDENT
                    30 MANAGER
                    10 CLERK
                    10 MANAGER
                    20 ANALYST
    
    已选择9行。
    SQL>

    b、查询日期列

    • 日期列:是指数据类型为日期类型的列,如DATE类型。日期列的默认显示格式为DD-MON-RR。
    • RR:代表年,而且只取年份的后两位数字。
    • 日期格式中RR和YY的区别:
指定日期 当前年份 RR格式说明 RR结果年份 YY格式说明 YY结果年份
18-1月-12 2017 指定年份在0-49之间,当前年份在0-49之间 2012 当前年份的前两位 + 指定日期的后两位 2012
18-1月-81 2017 指定年份在50-99之间,当前年份在0-49之间 1981(上一世纪) 当前年份的前两位 + 指定日期的后两位 2081
18-1月-12 2060 指定年份在0-49之间,当前年份在50-99之间 2112(下一世纪) 当前年份的前两位 + 指定日期的后两位 2012
18-1月-81 2060 指定年份在50-99之间,当前年份在50-99之间 2081 当前年份的前两位 + 指定日期的后两位 2081

c、以简体中文来显示日期结果

  • 如果以简体中文显示日期结果,那么可以将会话的NLS_LANGUAGE参数设置为SIMPLEFIED CHINESE。
  • ALTER SESSION SET nls_language='SIMPLIFIED CHINESE';
    SQL> ALTER SESSION SET nls_language='SIMPLIFIED
    会话已更改。
    pno, hiredate from emp;
             EMPNO HIREDATE
                7369 17-12月-80
                7499 20-2月 -81
                7521 22-2月 -81
                7566 02-4月 -81
                7654 28-9月 -81
                7698 01-5月 -81
                7782 09-6月 -81
                7788 19-4月 -87
                7839 17-11月-81
                7844 08-9月 -81
                7876 23-5月 -87
                7900 03-12月-81
                7902 03-12月-81
                7934 23-1月 -82
    已选择14行。

    d、以美国英语显示日期结果

  • 如果以美国英语显示日期结果,那么可以将会话的NLS_LANGUAGE参数设置为AMERICAN。
  • 示例:ALTER SESSION SET nls_language = 'AMERICAN'
    SQL> ALTER SESSION SET nls_language = 'AMERICAN';
    Session altered.
    SQL> SELECT empno, hiredate from emp;
             EMPNO HIREDATE
                7369 17-DEC-80
                7499 20-FEB-81
                7521 22-FEB-81
                7566 02-APR-81
                7654 28-SEP-81
                7698 01-MAY-81
                7782 09-JUN-81
                7788 19-APR-87
                7839 17-NOV-81
                7844 08-SEP-81
                7876 23-MAY-87
                7900 03-DEC-81
                7902 03-DEC-81
                7934 23-JAN-82
    14 rows selected.

    e、以特定形式显示日期结果

  • 如果希望定制日期显示格式,并按照特定方式显示日期结果,那么可以设置会话的nls_date_fORMat参数。
  • 示例:ALTER SESSION SET nls_date_format = 'YYYY/MM/DD';
    SQL> ALTER SESSION SET nls_date_format = 'YYYY/MM/DD';
    Session altered.
    SQL> SELECT empno, hiredate from emp;
             EMPNO HIREDATE
                7369 1980/12/17
                7499 1981/02/20
                7521 1981/02/22
                7566 1981/04/02
                7654 1981/09/28
                7698 1981/05/01
                7782 1981/06/09
                7788 1987/04/19
                7839 1981/11/17
                7844 1981/09/08
                7876 1987/05/23
                7900 1981/12/03
                7902 1981/12/03
                7934 1982/01/23
    14 rows selected.

    2、Oracle查询语句中算术运算符的使用

    a、使用算术运算符

  • 算术运算符可以应用到日期类和数字列。
  • 需求:应用scott.emp表查询雇员编号、雇员名、雇员月工资、雇员的年收入。如:SELECT empno, ename, sal, sal *12 year_sal form emp;
    SQL> SELECT empno, ename, sal, sal *12  year_sal from emp;
             EMPNO ENAME             SAL   YEAR_SAL
                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
                7788 SCOTT            3000      36000
                7839 KING             5000      60000
                7844 TURNER           1500      18000
                7876 ADAMS            1100      13200
                7900 JAMES             950      11400
                7902 FORD             3000      36000
                7934 MILLER           1300      15600
    14 rows selected.

    b、算术运算符的优先级

  • 我们了解到,算术运算符有加减乘除,乘除具有相同的优先级、加减具有相同的优先级,相同的优先级的运算符从左向右执行,乘除的优先级高于加减,而括号中的运算先执行。
  • 优先级举例:应用scott.emp表查看雇员编号、雇员名,年收入(年薪加上半月工资),即:SELECT empno, ename, sal * 12 + sal/2 year_sal from emp;
    SQL> SELECT empno, ename, sal * 12 + sal/2 year_sal from emp;
             EMPNO ENAME        YEAR_SAL
                7369 SMITH           10000
                7499 ALLEN           20000
                7521 WARD            15625
                7566 JONES         37187.5
                7654 MARTIN          15625
                7698 BLAKE           35625
                7782 CLARK           30625
                7788 SCOTT           37500
                7839 KING            62500
                7844 TURNER          18750
                7876 ADAMS           13750
             EMPNO ENAME        YEAR_SAL
                7900 JAMES           11875
                7902 FORD            37500
                7934 MILLER          16250
    14 rows selected.

    c、在算术运算中的空值NULL

  • NULL表示未知值,它既不是空格也不是0。当算术表达式包含NULL时,其显示结果也为空值(NULL)。
  • 例如:应用scott.emp表查询雇员号、雇员名、工资、补助、实发工资的信息。即: SELECT empno, ename, sal, comm, sal+ comm FROM emp;
    SQL> SELECT empno, ename, sal, comm, sal+ comm FROM emp;
             EMPNO ENAME             SAL       COMM   SAL+COMM
                7369 SMITH             800
                7499 ALLEN            1600        300       1900
                7521 WARD             1250        500       1750
                7566 JONES            2975
                7654 MARTIN           1250       1400       2650
                7698 BLAKE            2850
                7782 CLARK            2450
                7788 SCOTT            3000
                7839 KING                5000
                7844 TURNER         1500          0       1500
                7876 ADAMS          1100
                7900 JAMES           950
                7902 FORD             3000
                7934 MILLER          1300
    14 rows selected.

- 附件说明:空值和默认值

  • 空值:当插入数据时,如果没有为特定列提供数据,并且该列没有默认值,那么其结果为NULL。
  • 默认值:在创建表时可以使用default关键字为列设置默认值,在向表中插入数据时,如果没有为该列提供数据,那么该列将使用默认值。
  • 默认值的示例:
    SQL> create table student(sid number(8,0) primary key, name varchar2(10), sex char(2) default '男', age number(2,0) default 20, address varchar2(50));
    Table created.
    SQL> Insert into student(sid, name) values(20012001, '张三');
    1 row created.
    SQL> Insert into student values(20011002, '王五', default, default, '广东广州');
    1 row created.

    3、查询语句中的别名,连接符、字符串

    a、列的别名

  • 用于改变列的显示标题,列的别名可以跟在列名的后面,也可以在二者之间加AS关键字。如果别名中包含空格或者特殊的字符或者需要区分大小写,那么需要给别名加上双引号。
  • 列的别名举例:
  • 不使用列的名称别名:SELECT empno, ename, sal * 12 from emp;

    SQL> conn scott/02000059
    已连接。
    SQL> select empno, ename, sal * 12 FROM emp;
    
             EMPNO ENAME          SAL*12
                7369 SMITH            9600
                7499 ALLEN           19200
                7521 WARD            15000
                7566 JONES           35700
                7654 MARTIN          15000
                7698 BLAKE           34200
                7782 CLARK           29400
                7788 SCOTT           36000
                7839 KING            60000
                7844 TURNER          18000
                7876 ADAMS           13200
    
             EMPNO ENAME          SAL*12
                7900 JAMES           11400
                7902 FORD            36000
                7934 MILLER          15600
    
    已选择14行。
  • 使用列的别名:SELECT empno "雇员编号" , ename "雇员名" , sal 12 "全年工资" FROM emp;、SELECT empno "雇员编号", ename "雇员名" , sal 12 AS "全年工资" FROM emp;、SELECT empno 雇员编号, ename 雇员名, sal * 12 全年工资 FROM emp;。

    SQL> SELECT empno "雇员编号" , ename "雇员名" , sal * 12 "全年工资" FROM emp;
    
        雇员编号 雇员名       全年工资
                7369 SMITH            9600
                7499 ALLEN           19200
                7521 WARD            15000
                7566 JONES           35700
                7654 MARTIN          15000
                7698 BLAKE           34200
                7782 CLARK           29400
                7788 SCOTT           36000
                7839 KING            60000
                7844 TURNER          18000
                7876 ADAMS           13200
    
        雇员编号 雇员名       全年工资
                7900 JAMES           11400
                7902 FORD            36000
                7934 MILLER          15600
    
    已选择14行。
    SQL> SELECT empno "雇员编号", ename "雇员名" , sal * 12  AS "全年工资" FROM emp;
    
        雇员编号 雇员名       全年工资
                7369 SMITH            9600
                7499 ALLEN           19200
                7521 WARD            15000
                7566 JONES           35700
                7654 MARTIN          15000
                7698 BLAKE           34200
                7782 CLARK           29400
                7788 SCOTT           36000
                7839 KING            60000
                7844 TURNER          18000
                7876 ADAMS           13200
    
        雇员编号 雇员名       全年工资
                7900 JAMES           11400
                7902 FORD            36000
                7934 MILLER          15600
    
    已选择14行。
    SQL> SELECT empno 雇员编号, ename 雇员名, sal * 12 全年工资 FROM emp;
    
        雇员编号 雇员名       全年工资
                7369 SMITH            9600
                7499 ALLEN           19200
                7521 WARD            15000
                7566 JONES           35700
                7654 MARTIN          15000
                7698 BLAKE           34200
                7782 CLARK           29400
                7788 SCOTT           36000
                7839 KING            60000
                7844 TURNER          18000
                7876 ADAMS           13200
    
        雇员编号 雇员名       全年工资
                7900 JAMES           11400
                7902 FORD            36000
                7934 MILLER          15600
    
    已选择14行。

    b、连接符 ||

  • 当执行查询操作时,为了显示更有意义的结果值,有时候需要将多个字符串连接起来,连接字符串可以使用 “||”操作符或者concat函数。(可以用来“合并”列)
  • 举例:select ename || '的岗位是:' || job as 员工的职位信息描述 from emp;

    SQL> select ename || '的岗位是:' || job as 员工的职位信息描述 from emp;
    
    员工的职位信息描述
    SMITH的岗位是:CLERK
    ALLEN的岗位是:SALESMAN
    WARD的岗位是:SALESMAN
    JONES的岗位是:MANAGER
    MARTIN的岗位是:SALESMAN
    BLAKE的岗位是:MANAGER
    CLARK的岗位是:MANAGER
    SCOTT的岗位是:ANALYST
    KING的岗位是:PRESIDENT
    TURNER的岗位是:SALESMAN
    ADAMS的岗位是:CLERK
    
    员工的职位信息描述
    JAMES的岗位是:CLERK
    FORD的岗位是:ANALYST
    MILLER的岗位是:CLERK
    已选择14行。

    c、字符串

  • 字符串可以是SELECT列表中的字符,数字,日期。日期和字符只能在单引号中出现。每当返回一行时,字符串被输出一次。
  • 示例:SELECT ename || '的月工资是: ' || SAL from emp;
    SQL> SELECT ename || '的月工资是: ' || SAL from emp;
    ENAME||'的月工资是:'||SAL-
    SMITH的月工资是: 800
    ALLEN的月工资是: 1600
    WARD的月工资是: 1250
    JONES的月工资是: 2975
    MARTIN的月工资是: 1250
    BLAKE的月工资是: 2850
    CLARK的月工资是: 2450
    SCOTT的月工资是: 3000
    KING的月工资是: 5000
    TURNER的月工资是: 1500
    ADAMS的月工资是: 1100
    ENAME||'的月工资是:'||SAL
    JAMES的月工资是: 950
    FORD的月工资是: 3000
    MILLER的月工资是: 1300
    已选择14行。

    4、Oracle过滤数据(比较运算)

    a、过滤数据

  • 使用WHERE子句,将不满足条件的行过滤掉。语法格式为:SELECT * | {[DISTINCT] column | expression [alias], ...} FROM table [WHERE condition(s)];

    b、where 子句中使用数字值

  • 当在where 子句中使用数字值时,即可用直接引用数字值,也可以单引号引住数字值。例:SELECT * from emp where deptno = 20;
    SQL> SELECT * from emp where deptno = 20;
             EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
              DEPTNO
                7369 SMITH      CLERK           7902 17-12月-80            800
                    20
                7566 JONES      MANAGER         7839 02-4月 -81           2975
                    20
                7788 SCOTT      ANALYST         7566 19-4月 -87           3000
                    20
                7876 ADAMS      CLERK           7788 23-5月 -87           1100
                    20
                7902 FORD       ANALYST         7566 03-12月-81           3000
                    20

    c、Where子句中使用字符值

  • 当where子句中使用字符值,必须给字符值加上单引号。字符值时区分大小写的。
  • 举例:SELECT * FROM emp WHERE job = 'MANAGER';
    SQL> SELECT * FROM emp WHERE job = 'MANAGER';
             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
                7782 CLARK      MANAGER         7839 09-6月 -81           2450

    d、Where子句中使用日期值

  • 当where子句中使用日期值时,必须给日期值加上单引号。另外,日期值必须符合日期语言和显示格式。
  • 举例:select * from emp where hiredate = '02-4月-81';
    SQL> select * from emp where hiredate = '02-4月-81';
     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
    DEPTNO
      7566 JONES      MANAGER         7839 02-4月 -81           2975
        20

    e、比较运算符

运算符 说明
= 等于(不是==)
> 大于
>= 大于等于
< 小于
<= 小于等于
<> 不等于!=
  • 示例:SELECT * FROM emp WHERE sal <> 3000;
    SQL> SELECT * FROM emp WHERE sal <> 3000;
             EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
            DEPTNO
                7369 SMITH      CLERK           7902 17-12月-80            800
                    20
                7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300
                    30
                7521 WARD       SALESMAN        7698 22-2月 -81           1250        500
                    30
             EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
            DEPTNO
                7566 JONES      MANAGER         7839 02-4月 -81           2975
                    20
                7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400
                    30
                7698 BLAKE      MANAGER         7839 01-5月 -81           2850
                    30
             EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
            DEPTNO
                7782 CLARK      MANAGER         7839 09-6月 -81           2450
                    10
                7839 KING       PRESIDENT            17-11月-81           5000
                    10
                7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0
                    30
             EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
            DEPTNO
                7876 ADAMS      CLERK           7788 23-5月 -87           1100
                    20
                7900 JAMES      CLERK           7698 03-12月-81            950
                    30
                7934 MILLER     CLERK           7782 23-1月 -82           1300
                    10
    已选择12行。

    5、Oracle过滤数据(范围模糊查询)

    a、范围查询 BEWEEN...AND

  • BETWEEN ...AND 用于指定特定范围的条件。(两值之间包含边界,BETWEEN 较小值 AND 较大值)
  • 示例:SELECT empno, ename, sal from emp where sal between 1500 and 3000; 等价于 select empno, ename, sal from emp where sal >= 1500 and sal <= 3000;
    SQL> SELECT empno, ename, sal from emp where sal between 1500 and 3000;
     EMPNO ENAME             SAL
      7499 ALLEN            1600
      7566 JONES            2975
      7698 BLAKE            2850
      7782 CLARK            2450
      7788 SCOTT            3000
      7844 TURNER           1500
      7902 FORD             3000
    已选择7行。

    b、范围查询 IN

  • IN 执行列表匹配的操作。列或者表达式匹配列表中的任意一个值。(IN (值1, [值2, ...值n])
  • 举例:select empno, ename, job from emp where job in ('SALESMAN', 'MANAGER' , 'CLERK');等价于select empno, ename, job from emp where job = 'SALESMAN' or job='MANAGER' or job = 'CLERK';
    SQL> select empno, ename, job from emp where job in ('SALESMAN', 'MANAGER' , 'CLERK');
      EMPNO ENAME      JOB
      7369 SMITH      CLERK
      7499 ALLEN      SALESMAN
      7521 WARD       SALESMAN
      7566 JONES      MANAGER
      7654 MARTIN     SALESMAN
      7698 BLAKE      MANAGER
      7782 CLARK      MANAGER
      7844 TURNER     SALESMAN
      7876 ADAMS      CLERK
      7900 JAMES      CLERK
      7934 MILLER     CLERK
    已选择11行。

    c、模糊查询LIKE

  • 用LIKE执行模糊查询。当执行模糊查询时,需要使用通配符%和_。
  • 通配符%:用于表示0个或者多个字符。通配符_:用于表示单个字符。
  • 示例:select from emp where ename like 'J%';,select from emp where ename like '_AR%';。
    SQL> select * from emp where ename like 'J%';
     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
    DEPTNO
      7566 JONES      MANAGER         7839 02-4月 -81           2975
        20
      7900 JAMES      CLERK           7698 03-12月-81            950
        30
    QL> select * from emp where ename like '_AR%';
    EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
    DEPTNO
     7521 WARD       SALESMAN        7698 22-2月 -81           1250        500
       30
     7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400
       30

    d、模糊查询中特殊符号的处理

  • 刚才我们用了通配符%和_执行模糊查询,如果字符值本身就包含_和%字符,并且开发人员希望使用这两个字符执行模糊查询,那么必须使用escape选项和转义符实现。
  • 回避特殊符号的方法:使用转义符。例如:将[%]转为[\%]、[]转为[\],然后再加上[ESCAPE'\']即可。
  • 示例:select * from emp where ename like 'G_%' escape '\';
    SQL> select * from emp where ename like 'G\_%' escape '\';
     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
    DEPTNO
      7369 G_EASON    CLERK           7902 17-12月-80            800
        20

    e、判断空值IS NULL

  • IS NULL操作符用于检测列或者表达式的结果是否为NULL,如果为NULL,则返回true,否则返回false。
  • 判断列或者表达式的结果是否为空,可以使用is null 或者 is not null,但是不能用 = NULL 或者 <> NULL来判断。
  • 示例:select empno, ename, sal, comm from emp where comm is null;,select empno, ename ,sal, comm from emp where comm is not null;。
    SQL> select empno, ename, sal, comm from emp where comm is null;
     EMPNO ENAME             SAL       COMM
      7369 G_EASON           800
      7566 JONES            2975
      7698 BLAKE            2850
      7782 CLARK            2450
      7788 SCOTT            3000
      7839 KING             5000
      7876 ADAMS            1100
      7900 JAMES             950
      7902 FORD             3000
      7934 MILLER           1300
    已选择10行。
    SQL> select empno, ename ,sal, comm from emp where comm is not null;
     EMPNO ENAME             SAL       COMM
      7499 ALLEN            1600        300
      7521 WARD             1250        500
      7654 MARTIN           1250       1400
      7844 TURNER           1500          0

    7、Oracle的基本查询(逻辑运算)

  • 逻辑预算操作符:AND(逻辑与)、OR(逻辑或)以及NOT(逻辑否)。

    a、逻辑操作符AND

  • 当执行SQL操作时,如果SQL语句结果必须同时满足多个条件,那么需要使用逻辑操作符AND。
  • 示例:SELECT empno, ename, job, deptno, from emp where job='MANAGER' and deptno = 10;
    SQL> SELECT empno, ename, job, deptno from emp where job='MANAGER' and deptno = 10;
     EMPNO ENAME      JOB           DEPTNO
      7782 CLARK      MANAGER           10

    b、逻辑操作符OR

  • 当执行SQL操作时,如果SQL语句结果只需要满足多个条件中的任意一个,那么需要使用逻辑操作符OR。
  • 示例:select empno, ename, job, sal from emp where job='MANAGER' or sal > 2000;
    SQL> select empno, ename, job, sal from emp where job='MANAGER' or sal > 2000;
     EMPNO ENAME      JOB              SAL
      7566 JONES      MANAGER         2975
      7698 BLAKE      MANAGER         2850
      7782 CLARK      MANAGER         2450
      7788 SCOTT      ANALYST         3000
      7839 KING       PRESIDENT       5000
      7902 FORD       ANALYST         3000
    已选择6行。

    c、逻辑操作符NOT

  • 当执行SQL操作时,如果SQL语句需要返回不满足特定条件的结果,那么需要使用逻辑操作符NOT。
  • 示例:select empno, ename, job from emp where job not in('CLERK', 'SALESMAN', 'MANAGER');
    SQL> select empno, ename, job from emp where job not in('CLERK', 'SALESMAN', 'MANAGER');
     EMPNO ENAME      JOB
      7788 SCOTT      ANALYST
      7839 KING       PRESIDENT
      7902 FORD       ANALYST

    d、在where子句中混合使用逻辑操作符

  • 在这三个逻辑操作符中,NOT优先级最高,AND其次,OR优先级最低。如果需要改变优先级需要使用括号。
  • 例如:SELECT empno, ename, job, sal from emp where (sal > 2000 or deptno = 30) and job not in ('PRESIDENT', 'MANAGER');
    SQL> SELECT empno, ename, job, sal from emp where (sal > 2000 or deptno = 30) and job not in ('PRESIDENT', 'MANAGER');
             EMPNO ENAME      JOB              SAL
                7499 ALLEN      SALESMAN        1600
                7521 WARD       SALESMAN        1250
                7654 MARTIN     SALESMAN        1250
                7788 SCOTT      ANALYST         3000
                7844 TURNER     SALESMAN        1500
                7900 JAMES      CLERK            950
                7902 FORD       ANALYST         3000
    已选择7行。

    8、Oracle基本查询(排序数据)

    a、排序数据ORDER BY子句

  • 语法格式:SELECT * | column [,column...] FROM table [WHERE condition] [ORDER BY column [ASC | DESC]];(ASC升序,DESC降序)
  • 注意:当select语句包含多个子句(where, group by, having, order by)时,order by必须是最后一条语句。

    b、单列升序或者降序排序

  • 升序:
  • 说明:如果排序列存在NULL行,那么NULL行会显示在最后面。
  • SELECT ename, sal FROM emp ORDER BY sal ASC;
  • SELECT ename, sal FROM emp ORDER BY sal;(默认升序)

    SQL> SELECT ename, sal FROM emp ORDER BY sal ASC;
    ENAME             SAL
    G_EASON           800
    JAMES             950
    ADAMS            1100
    WARD             1250
    MARTIN           1250
    MILLER           1300
    TURNER           1500
    ALLEN            1600
    CLARK            2450
    BLAKE            2850
    JONES            2975
    ENAME             SAL
    SCOTT            3000
    FORD             3000
    KING             5000
    
    已选择14行。
  • 降序:
  • 说明;如果排序存在NULL行,那么NULL行会显示在最前面。
  • SELECT ename, sal FROM emp ORDER BY sal DESC;
    SQL>  SELECT ename, sal FROM emp ORDER BY sal DESC;
    ENAME             SAL
    KING             5000
    FORD             3000
    SCOTT            3000
    JONES            2975
    BLAKE            2850
    CLARK            2450
    ALLEN            1600
    TURNER           1500
    MILLER           1300
    WARD             1250
    MARTIN           1250
    ENAME             SAL
    ADAMS            1100
    JAMES             950
    G_EASON           800
    已选择14行。

    c、使用列别名排序

  • select empno, ename, sal * 12 年收入 from emp order by 年收入 ASC;

    SQL>  select empno, ename, sal * 12 年收入 from emp order by 年收入 ASC;
    
     EMPNO ENAME          年收入
      7369 G_EASON          9600
      7900 JAMES           11400
      7876 ADAMS           13200
      7521 WARD            15000
      7654 MARTIN          15000
      7934 MILLER          15600
      7844 TURNER          18000
      7499 ALLEN           19200
      7782 CLARK           29400
      7698 BLAKE           34200
      7566 JONES           35700
      7788 SCOTT           36000
      7902 FORD            36000
      7839 KING            60000
    已选择14行。

    d、多列排序

  • 当执行排序操作时,不仅可以基于单列进行排序,也可以基于多列进行排序,当以多列进行排序时,首先按照第一列进行排序,当第一列存在相同的数据时,以第二列进行排序,以此类推。
  • 示例:SELECT empno, ename, deptno, sal from emp order by deptno asc, sal desc;
    SQL> SELECT empno, ename, deptno, sal from emp order by deptno asc, sal desc;
             EMPNO ENAME          DEPTNO        SAL
                7839 KING               10       5000
                7782 CLARK              10       2450
                7934 MILLER             10       1300
                7788 SCOTT              20       3000
                7902 FORD               20       3000
                7566 JONES              20       2975
                7876 ADAMS              20       1100
                7369 G_EASON            20        800
                7698 BLAKE              30       2850
                7499 ALLEN              30       1600
                7844 TURNER             30       1500
                7654 MARTIN             30       1250
                7521 WARD               30       1250
                7900 JAMES              30        950
    已选择14行。

    9、理解SQL语句与SQLPLUS命令的区别

    • SQL:一种语言。是关系数据库的基本操作语言,它是应用程序和数据库进行交互操作的接口,从而使得应用开发人员、数据库管理员、最终用户都可以通过SQL语言对数据库进行操作。(SQL语句不区分大小写,关键字不能够缩写,例如:SELECT。sql语句需要以“;”号结束)
    • SQLPLUS:一种环境:是Oracle公司所提供的工具程序,是与Oracle数据库进行交互的客户端工具,借助于sqlplus工具可以查看、修改数据库记录。在sqlplus中,可以运行sql*plus命令与sql语句。(SQLPLUS命令也不区分大小写,关键字可以缩写,例如:connect -> conn。SQL命令可以不用加“;”)
    • SQLPlus命令:
    • PASSWord:命令用于修改用户的口令。PASSW[ORD] [username], username命令用于指定用户名,注意,任何用户都可以使用该命令修改其自身口令,但是如果要修改其他用户口令,则必须要以DBA的身份登录(sys和system)。
您可能感兴趣的文档:

--结束END--

本文标题: Oracle专题4之Oracle基本查询

本文链接: https://lsjlt.com/news/41091.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Oracle专题4之Oracle基本查询
    1、Oracle的基本查询语句 查询概述:查询是使用最频繁的一个操作,可以从一个表中查询数据,也可以从多个表中查询数据,本节主要围绕单表查询的操作。 基本查询的语法格式:SELECT * | {...
    99+
    2024-04-02
  • Oracle专题8之Oracle的子查询
    1、Oracle的子查询的概述 什么是子查询? 子查询是指嵌入在其他SQL语句中的SELECT语句,也称之为嵌套查询。 可以使用子查询的位置:where、select列表、havin&#...
    99+
    2024-04-02
  • Oracle专题7之多表查询
    什么是多表查询? 多表查询就是从多个表中获取数据。 1、笛卡尔集 笛卡尔集是集合中的一种。假设A和B都是集合,A和B的笛卡尔集用 A B来表示。即A B所形成的集合叫做笛卡尔集。 下表中,部门表员工表...
    99+
    2024-04-02
  • Oracle专题15之包
    1、包的概述 a、什么是包? 包是一组相关过程、函数、变量、常量和游标等PL/SQL程序设计元素的组合。 b、包的特点? 它具有面向对象程序设计语言的特点,是对PL/SQL程序设计元素(过程、函数、变量等...
    99+
    2024-04-02
  • oracle之sql查询
    oracle表管理表名和列的命名规则:必须以字母开头长度不能超过30字符不能使用oracle的保留字只能使用如下字符:A-Z,a-z,0-9,$,#等字符型:char:定长 最大2000字符例子:cha&#...
    99+
    2024-04-02
  • Oracle专题12之游标
    - 什么是游标? 游标是SQL的一个内存工作区,由系统或者用户以变量的形式定义。 游标的作用就是用于临时存储从数据库中提取的数据块。 通俗的来讲,游标就是一个结果集。 游标的类型分为显式游标和隐式游标。...
    99+
    2024-04-02
  • Oracle专题3之Oracle数据表的
    Oracle SQL Developer是Oracle官方出品的免费图形化开发工具,相对于SQL * Plus来说,图形化的界面便于操作,不必记忆大量的命令,输出结果美观。它的基本功能有结果的格式化输出、编辑器自动提示、代码优化、显示...
    99+
    2023-01-31
    数据表 专题 Oracle
  • oracle基本查询用法入门示例
    本文实例讲述了oracle基本查询用法。分享给大家供大家参考,具体如下: 一、基本select语句 SELECT *|{[DISTINCT] column|expression [alias]...
    99+
    2024-04-02
  • Oracle专题5之Oracle的单行函数
    SQL函数是什么?SQL函数是Oracle数据库的内置函数,并且可用于各种SQL语句。SQL函数包含单行函数和多行函数。 1、字符函数 字符函数的输入为字符类型,其返回值是字符类型或者是数字类型。 字符函...
    99+
    2024-04-02
  • Oracle专题11之PLSQL入门
    1、PLSQL工具 PL/SQL Developer的简介:PL/SQL Developer是一种专门用于开发、测试、调试和优化Oracle PL/SQL的一种工具,更是一个非常好用的Oracle的管理工...
    99+
    2024-04-02
  • Oracle专题16之触发器
    1、触发器的概述 a、触发器是什么? 触发器是指存放在数据库中,并且被隐含执行的存储过程。 当发生特定事件时,Oracle会自动执行触发器的相应代码。 b、触发器的类型 DML触发器;DDL触发器;替代(...
    99+
    2024-04-02
  • oracle之sql查询二
    此文章为http://huangsir007.blog.51cto.com/6159353/1854818该片的后续 关于数据库语言查询:SQL> show parameter nls_languag...
    99+
    2024-04-02
  • MySQL与PHP的基础与应用专题之数据查询
    目录概述条件查询例1例2运算符IN例1例2运算符Like例1例2概述 从今天开始, 小白我将带领大家一起来补充一下 数据库的知识. 条件查询 我们可以使用关键词Where...
    99+
    2024-04-02
  • Oracle 笔记之子查询
    子查询当我们的一个操作需要基于另一个查询记过,那么就先行执行的这个查询就是子查询子查询分为:单行单列子查询:查的结果只有一行,且只有一个字段多行单列子查询:查询出来的结果有多行,但只有一列 多行多列子查询查...
    99+
    2024-04-02
  • Oracle 查询转换之子查询展开
    概念:子查询展开(Subquery Unnesting)是优化器处理带子查询的目标sql的一种优化手段,它是指优化器不再将目标sql中子查询当作一个独立的处理单元来单独执行,而是将该子查询转换为它自身和外部...
    99+
    2024-04-02
  • 查询oracle版本命令
    select banner from sys.v_$version;...
    99+
    2021-08-31
    查询oracle版本命令
  • Oracle版本如何查询
    Oracle版本如何查询,需要具体代码示例 Oracle数据库是一款常用的关系型数据库管理系统,不同版本的Oracle数据库可能会有不同的特性和功能。因此,在进行数据库开发或者维护时,...
    99+
    2024-03-08
    版本 查询 oracle sql语句
  • MySQL与PHP的基础与应用专题之数据查询语句
    目录概述ORDER BY例 1例 2LIMIT例 1例 2GROUP BY例 1例 2HAVING例 1例 2GROUP_CONCAT例 1例 2DISTINCT例 1例 2...
    99+
    2024-04-02
  • Oracle 笔记之高级查询
    为列起别名目的 我们进行查询时 经常查询某一列时使用的是表达式 SELECT enamme,sal*12 FROM emp这样不好的地方是第二列在查询后列用使用的就是sal*12.这样的可读性比较差...
    99+
    2024-04-02
  • 怎么查询oracle的版本
    oracle数据库版本查询方法有五种:sql查询、vrfy命令、检查windows注册表(仅适用于windows系统)、查看oracle安装程序以及从oracle shell查看。 如...
    99+
    2024-05-21
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作