中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle專題4之Oracle基本查詢

發布時間:2020-07-12 03:49:32 來源:網絡 閱讀:752 作者:糖醋白糖 欄目:關系型數據庫

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)。
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鹰潭市| 镇巴县| 社旗县| 峨边| 天门市| 克山县| 元氏县| 镇雄县| 阳新县| 东乡族自治县| 鄂温| 江陵县| 科技| 惠安县| 平江县| 达拉特旗| 江津市| 新源县| 阿鲁科尔沁旗| 类乌齐县| 成安县| 内丘县| 西盟| 陇西县| 华坪县| 乐安县| 南昌市| 四子王旗| 深州市| 平昌县| 莲花县| 临江市| 大兴区| 拉萨市| 明光市| 交城县| 太康县| 普格县| 丰宁| 阿拉善右旗| 顺义区|