oracle的基本查詢

SQL> --清屏

SQL> host cls


SQL> --查看當前用戶

SQL> show user

USER 爲 "SCOTT"

SQL>

SQL>

SQL> --當前用戶下的表

SQL> select * from tab;


TNAME                          TABTYPE  CLUSTERID                              

------------------------------ ------- ----------                              

DEPT                           TABLE                                            

EMP                            TABLE                                            

BONUS                          TABLE                                            

SALGRADE                       TABLE                                            


SQL> -- tab數據字典(管理員提供的表)

SQL> desc emp

名稱                                      是否爲空? 類型

----------------------------------------- -------- ----------------------------

EMPNO                                     NOT NULL NUMBER(4)

ENAME                                              VARCHAR2(10)

JOB                                                VARCHAR2(9)

MGR                                                NUMBER(4)

HIREDATE                                           DATE

SAL                                                NUMBER(7,2)

COMM                                               NUMBER(7,2)

DEPTNO                                             NUMBER(2)


SQL> --查詢所有員工的所有信息

SQL> select * from emp;


    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                                                                      


     7788 SCOTT      ANALYST         7566 13-7月 -87           3000            

       20                                                                      


     7839 KING       PRESIDENT            17-11月-81           5000            

       10                                                                      



    EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM

---------- ---------- --------- ---------- -------------- ---------- ----------

   DEPTNO                                                                      

----------                                                                      

     7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0

       30                                                                      


     7876 ADAMS      CLERK           7788 13-7月 -87           1100            

       20                                                                      


     7900 JAMES      CLERK           7698 03-12月-81            950            

       30                                                                      



    EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM

---------- ---------- --------- ---------- -------------- ---------- ----------

   DEPTNO                                                                      

----------                                                                      

     7902 FORD       ANALYST         7566 03-12月-81           3000            

       20                                                                      


     7934 MILLER     CLERK           7782 23-1月 -82           1300            

       10                                                                      



已選擇14行。


SQL> --設置行寬

SQL> set linesize 120

SQL> --設置列寬

SQL> col ename for a8

SQL> col sal for 9999

SQL> /


    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                                    

     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                                    

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

     7788 SCOTT    ANALYST         7566 13-7月 -87      3000                    20                                    

     7839 KING     PRESIDENT            17-11月-81      5000                    10                                    

     7844 TURNER   SALESMAN        7698 08-9月 -81      1500          0         30                                    

     7876 ADAMS    CLERK           7788 13-7月 -87      1100                    20                                    


    EMPNO ENAME    JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                    

---------- -------- --------- ---------- -------------- ----- ---------- ----------                                    

     7900 JAMES    CLERK           7698 03-12月-81       950                    30                                    

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

     7934 MILLER   CLERK           7782 23-1月 -82      1300                    10                                    


已選擇14行。


SQL> --通過列名查詢

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno

 2  from emp;


    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                                    

     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                                    

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

     7788 SCOTT    ANALYST         7566 13-7月 -87      3000                    20                                    

     7839 KING     PRESIDENT            17-11月-81      5000                    10                                    

     7844 TURNER   SALESMAN        7698 08-9月 -81      1500          0         30                                    

     7876 ADAMS    CLERK           7788 13-7月 -87      1100                    20                                    


    EMPNO ENAME    JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                    

---------- -------- --------- ---------- -------------- ----- ---------- ----------                                    

     7900 JAMES    CLERK           7698 03-12月-81       950                    30                                    

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

     7934 MILLER   CLERK           7782 23-1月 -82      1300                    10                                    


已選擇14行。


SQL> /*

SQL> SQL優化:

SQL> 1. 儘量使用列名代替*

SQL>       Oracle 9i之後,可以認爲是一樣

SQL> */

SQL> host cls


SQL> --查詢員工號 姓名 月薪

SQL> select empno,ename,sal

 2  fomr emp;

fomr emp

    *

第 2 行出現錯誤:

ORA-00923: 未找到要求的 FROM 關鍵字



SQL> --c命令  change

SQL> 2

 2* fomr emp

SQL> c /fomr/from

 2* from emp

SQL> /


    EMPNO ENAME      SAL                                                                                              

---------- -------- -----                                                                                              

     7369 SMITH      800                                                                                              

     7499 ALLEN     1600                                                                                              

     7521 WARD      1250                                                                                              

     7566 JONES     2975                                                                                              

     7654 MARTIN    1250                                                                                              

     7698 BLAKE     2850                                                                                              

     7782 CLARK     2450                                                                                              

     7788 SCOTT     3000                                                                                              

     7839 KING      5000                                                                                              

     7844 TURNER    1500                                                                                              

     7876 ADAMS     1100                                                                                              


    EMPNO ENAME      SAL                                                                                              

---------- -------- -----                                                                                              

     7900 JAMES      950                                                                                              

     7902 FORD      3000                                                                                              

     7934 MILLER    1300                                                                                              


已選擇14行。


SQL>  --查詢員工號 姓名 月薪 年薪

SQL> select empno,ename,sal,sal*12

 2  from emp;


    EMPNO ENAME      SAL     SAL*12                                                                                    

---------- -------- ----- ----------                                                                                    

     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                                                                                    


    EMPNO ENAME      SAL     SAL*12                                                                                    

---------- -------- ----- ----------                                                                                    

     7900 JAMES      950      11400                                                                                    

     7902 FORD      3000      36000                                                                                    

     7934 MILLER    1300      15600                                                                                    


已選擇14行。


SQL> ed

已寫入 file afiedt.buf


 1  select empno as "員工號",ename "姓名",sal 月薪,sal*12 年   薪

 2* from emp

SQL> /

select empno as "員工號",ename "姓名",sal 月薪,sal*12 年   薪

                                                          *

第 1 行出現錯誤:

ORA-00923: 未找到要求的 FROM 關鍵字



SQL> ed

已寫入 file afiedt.buf


 1  select empno as "員工號",ename "姓名",sal 月薪,sal*12 "年   薪"

 2* from emp

SQL> /


   員工號 姓名             月薪    年   薪                                                                            

---------- ---------- ---------- ----------                                                                            

     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行。


SQL> host cls


SQL>  --查詢員工號 姓名 月薪 年薪 年收入

SQL> select empno,ename,sal,sal*12 年薪,comm 獎金,sal*12+comm 年收入

 2  from emp;


    EMPNO ENAME      SAL       年薪       獎金     年收入                                                              

---------- -------- ----- ---------- ---------- ----------                                                              

     7369 SMITH      800       9600                                                                                    

     7499 ALLEN     1600      19200        300      19500                                                              

     7521 WARD      1250      15000        500      15500                                                              

     7566 JONES     2975      35700                                                                                    

     7654 MARTIN    1250      15000       1400      16400                                                              

     7698 BLAKE     2850      34200                                                                                    

     7782 CLARK     2450      29400                                                                                    

     7788 SCOTT     3000      36000                                                                                    

     7839 KING      5000      60000                                                                                    

     7844 TURNER    1500      18000          0      18000                                                              

     7876 ADAMS     1100      13200                                                                                    


    EMPNO ENAME      SAL       年薪       獎金     年收入                                                              

---------- -------- ----- ---------- ---------- ----------                                                              

     7900 JAMES      950      11400                                                                                    

     7902 FORD      3000      36000                                                                                    

     7934 MILLER    1300      15600                                                                                    


已選擇14行。


SQL> /*

SQL> SQL中null值:

SQL> 1. 包含null的表達式都爲null

SQL> 2. SQL中,null != null

SQL> */

SQL> ed

已寫入 file afiedt.buf


 1  select empno,ename,sal,sal*12 年薪,comm 獎金,sal*12+nvl(comm,0) 年收入

 2* from emp

SQL> /


    EMPNO ENAME      SAL       年薪       獎金     年收入                                                              

---------- -------- ----- ---------- ---------- ----------                                                              

     7369 SMITH      800       9600                  9600                                                              

     7499 ALLEN     1600      19200        300      19500                                                              

     7521 WARD      1250      15000        500      15500                                                              

     7566 JONES     2975      35700                 35700                                                              

     7654 MARTIN    1250      15000       1400      16400                                                              

     7698 BLAKE     2850      34200                 34200                                                              

     7782 CLARK     2450      29400                 29400                                                              

     7788 SCOTT     3000      36000                 36000                                                              

     7839 KING      5000      60000                 60000                                                              

     7844 TURNER    1500      18000          0      18000                                                              

     7876 ADAMS     1100      13200                 13200                                                              


    EMPNO ENAME      SAL       年薪       獎金     年收入                                                              

---------- -------- ----- ---------- ---------- ----------                                                              

     7900 JAMES      950      11400                 11400                                                              

     7902 FORD      3000      36000                 36000                                                              

     7934 MILLER    1300      15600                 15600                                                              


已選擇14行。


SQL> --2. SQL中,null != null

SQL> --查詢獎金爲null的員工

SQL> select *

 2  from emp

 3  where comm=null;


未選定行


SQL> ed

已寫入 file afiedt.buf


 1  select *

 2  from emp

 3* where comm is null

SQL> /


    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                                    

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

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

     7788 SCOTT    ANALYST         7566 13-7月 -87      3000                    20                                    

     7839 KING     PRESIDENT            17-11月-81      5000                    10                                    

     7876 ADAMS    CLERK           7788 13-7月 -87      1100                    20                                    

     7900 JAMES    CLERK           7698 03-12月-81       950                    30                                    

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

     7934 MILLER   CLERK           7782 23-1月 -82      1300                    10                                    


已選擇10行。


SQL> host cls


SQL> --DISTINCT 去掉重複的記錄

SQL> select deptno from emp;


   DEPTNO                                                                                                              

----------                                                                                                              

       20                                                                                                              

       30                                                                                                              

       30                                                                                                              

       20                                                                                                              

       30                                                                                                              

       30                                                                                                              

       10                                                                                                              

       20                                                                                                              

       10                                                                                                              

       30                                                                                                              

       20                                                                                                              


   DEPTNO                                                                                                              

----------                                                                                                              

       30                                                                                                              

       20                                                                                                              

       10                                                                                                              


已選擇14行。


SQL> select DISTINCT deptno from emp;


   DEPTNO                                                                                                              

----------                                                                                                              

       30                                                                                                              

       20                                                                                                              

       10                                                                                                              


SQL> select job from emp;


JOB                                                                                                                    

---------                                                                                                              

CLERK                                                                                                                  

SALESMAN                                                                                                                

SALESMAN                                                                                                                

MANAGER                                                                                                                

SALESMAN                                                                                                                

MANAGER                                                                                                                

MANAGER                                                                                                                

ANALYST                                                                                                                

PRESIDENT                                                                                                              

SALESMAN                                                                                                                

CLERK                                                                                                                  


JOB                                                                                                                    

---------                                                                                                              

CLERK                                                                                                                  

ANALYST                                                                                                                

CLERK                                                                                                                  


已選擇14行。


SQL> select DISTINCT job from emp;


JOB                                                                                                                    

---------                                                                                                              

CLERK                                                                                                                  

SALESMAN                                                                                                                

PRESIDENT                                                                                                              

MANAGER                                                                                                                

ANALYST                                                                                                                


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> --DISTINCT作用於後面所有的列

SQL> host cls


SQL> --concat 連接字符串

SQL> select concat('Hello',' World') from emp;


CONCAT('HEL                                                                                                            

-----------                                                                                                            

Hello World                                                                                                            

Hello World                                                                                                            

Hello World                                                                                                            

Hello World                                                                                                            

Hello World                                                                                                            

Hello World                                                                                                            

Hello World                                                                                                            

Hello World                                                                                                            

Hello World                                                                                                            

Hello World                                                                                                            

Hello World                                                                                                            


CONCAT('HEL                                                                                                            

-----------                                                                                                            

Hello World                                                                                                            

Hello World                                                                                                            

Hello World                                                                                                            


已選擇14行。


SQL> select concat('Hello',' World') from dual;


CONCAT('HEL                                                                                                            

-----------                                                                                                            

Hello World                                                                                                            


SQL> select 3+2 from dual;


      3+2                                                                                                              

----------                                                                                                              

        5                                                                                                              


SQL> --dual表: 僞表

SQL> select * from tab;


TNAME                          TABTYPE  CLUSTERID                                                                      

------------------------------ ------- ----------                                                                      

DEPT                           TABLE                                                                                    

EMP                            TABLE                                                                                    

BONUS                          TABLE                                                                                    

SALGRADE                       TABLE                                                                                    


SQL> host cls


SQL> --連接符

SQL> select 'Hello'||'  World' from dual;


'HELLO'||'WO                                                                                                            

------------                                                                                                            

Hello  World                                                                                                            


SQL> --查詢員工信息:  ****的薪水是****

SQL> select ename||'的薪水是'||sal  一列

 2  from emp;


一列                                                                                                                    

----------------------------------------------------------                                                              

SMITH的薪水是800                                                                                                        

ALLEN的薪水是1600                                                                                                      

WARD的薪水是1250                                                                                                        

JONES的薪水是2975                                                                                                      

MARTIN的薪水是1250                                                                                                      

BLAKE的薪水是2850                                                                                                      

CLARK的薪水是2450                                                                                                      

SCOTT的薪水是3000                                                                                                      

KING的薪水是5000                                                                                                        

TURNER的薪水是1500                                                                                                      

ADAMS的薪水是1100                                                                                                      


一列                                                                                                                    

----------------------------------------------------------                                                              

JAMES的薪水是950                                                                                                        

FORD的薪水是3000                                                                                                        

MILLER的薪水是1300                                                                                                      


已選擇14行。


SQL> host cls


SQL> select * from emp;


    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                                    

     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                                    

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

     7788 SCOTT    ANALYST         7566 13-7月 -87      3000                    20                                    

     7839 KING     PRESIDENT            17-11月-81      5000                    10                                    

     7844 TURNER   SALESMAN        7698 08-9月 -81      1500          0         30                                    

     7876 ADAMS    CLERK           7788 13-7月 -87      1100                    20                                    


    EMPNO ENAME    JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                    

---------- -------- --------- ---------- -------------- ----- ---------- ----------                                    

     7900 JAMES    CLERK           7698 03-12月-81       950                    30                                    

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

     7934 MILLER   CLERK           7782 23-1月 -82      1300                    10                                    


已選擇14行。


SQL> save c:\a.sql

已創建 file c:\a.sql

SQL> @c:\a.sql


    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                                    

     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                                    

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

     7788 SCOTT    ANALYST         7566 13-7月 -87      3000                    20                                    

     7839 KING     PRESIDENT            17-11月-81      5000                    10                                    

     7844 TURNER   SALESMAN        7698 08-9月 -81      1500          0         30                                    

     7876 ADAMS    CLERK           7788 13-7月 -87      1100                    20                                    


    EMPNO ENAME    JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                    

---------- -------- --------- ---------- -------------- ----- ---------- ----------                                    

     7900 JAMES    CLERK           7698 03-12月-81       950                    30                                    

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

     7934 MILLER   CLERK           7782 23-1月 -82      1300                    10                                    


已選擇14行。


SQL> spool off


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章