Oracle中select語法的使用及注意事項


在Oracle數據庫中,select語句是用來進行數據庫數據查詢

1.直接查詢

   語句:select 列名(可以有多個) from 表名;

   舉例:1)查詢emp表中員工名和職位的信息 :select ename ,job from emp;

              2)查詢emp表中的所有信息 : select empno , ename , job ,  sal , comm, deptno... from emp; 或者 select * from emp;

   注意 :* :表示所有列名的信息

 

2.查詢時as為列名重新起名

   語句 : select 列名 as 別名 from 表名;

   舉例 : 1)查詢emp表中員工名和職位信息,同時將ename名改為“姓名” , job名改為“職位” : select ename as "姓名", job as "職位" from emp;

     2)舉例1中也可以這樣表示:(a) select ename as 姓名, job as 職位 from emp;   (省略雙引號)

                   (b) select ename 姓名, job 職位 from emp;  (省略as也可以)

   注意:    1.省略雙引號是,語句中的別名稱之間不能有空格,否則會出錯

               2.若別名為sql特有的詞語時,別名需要寫在雙引號之中 , select ename as "姓名", job as "from" from emp;

 

3.特殊語句where語句的使用,可以指定搜索特定的信息

 語句 : select 列名(可以有多個) from 表名 where 列名 = '表格中指定信息';(注意是英文單引號)

    舉例 : 1)查詢emp表中job為CLERK的員工名和編號 : select ename , empno from emp where job = 'CLERK'  ;

                 2)查詢emp表中部門編號為20的員工名和職位:select ename , job from emp where deptno = 20;

    注意:1.指定信息若是字符或者字符串,要寫到英文單引號之中,數值則不用

    2.sql語句不區分大小寫,但是表格中的指定信息是嚴格區分大小寫的

   

 

 

 

4.where語法中運算符的使用

   操作運算符: +   -   /   *   %

    例子:1)查詢員工姓名和一年的工資(加上年終獎) : select ename, sal*12+comm from emp;

 

 

     注意:查詢結果有很多是沒有數據的,原因是員工的年終獎是null值,任何數值與null結算都是得到null值

  解決方法:需要對null進行處理:null-->0   

          1).方式一:nvl :相當於if ,格式:nvl(comm,0)   

          if(comm == null){

            return 0;

          }

 

       2). 方式二:nvl2(comm,comm,0)

          if(comm == null){

            return 0;

          }else{

            return comm;

          }

 

 

 

   關系運算符:>  >=  <  <=  =  !=或<>

   例子:1.查詢工資高於3000的員工與職位 : select ename, job from emp where sal >=3000;

      2.查詢部門編號不為7566的員工與職位 : select ename, job from emp where deptno !=7566;

   注意:當查詢的語句有null值時,不能使用 =  和!=或<>,應該使用is 和 is not

        如:select * from emp where comm is not null;

 

   邏輯運算符:or  and  not

  例子:1.查詢職位為CLERK並且工資高於1000的員工名,職位和工資信息:select ename, job , sal from emp where job = 'CLERK' and sal > 1000;

     2.查詢職位為CLERK或者工資高於1000的員工名,職位和工資信息:select ename, job , sal from emp where job = 'CLERK' or sal > 1000; 

     3.查詢工資低於3000的員工和工資信息(用not) : select ename, job, sal from emp where not (sal >=3000);

 

5.范圍查詢:beween ... and ...

   語法: select 列名 from 表名 where 列名 between 小 and 大;

   舉例: 查詢工資在2000~5000的員工信息, select * from emp where sal between 2000 and 5000; 

 

   語法:select 列名 from 表名 where 列名 in (數據, 數據,......)

   舉例:查詢工資3000和5000的員工信息, select * from emp where sal in(3000,5000);

              查詢工資不是3000和5000的員工信息, select * from emp where sal not  in(3000,5000);

   注意:not in 里面不能出現null,否則查詢的數據為空,語法不允許

 

 

6.模糊查詢:like...

   配合通配符使用: 1)  _ :一個字符

            2)%:任意個字符

   例子:1.查詢名字帶字母S的員工信息 : select * from emp where ename like '%S%';

      2.查詢名字第二個為字母C的員工信息 : select * from emp where ename like '_C%';

      3.查詢名字長度大於4的員工信息: select * from emp where ename like '_____%'; (5個_)

   特殊:若查詢的信息中包含下划線 ,如:zhang_san , 則select * from emp where ename like '%\_%';(錯誤)

              對於上面的問題,解決方法:select * from emp where ename like '%\_%' escape '\';

 

7.排序( order by )

   語法:select 列名.. from emp order by  列名 desc(降序);

              select 列名.. from emp order by  列名 asc(升序);  -----若不寫則升序降序的標識,語句默認是升序

   例子:查詢emp表並按工資降序 : select * from emp order by sal desc;

   注意:null默認是最大值

   特殊:多列查詢

    例子:查詢emp表並按工資升序,若部門編號相同則按部門降序:

     select * from emp order by sal asc , deptno desc;

 

8.distinct:對查詢出的結果集去重

   例子:select distinct deptno from emp; 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM