Oracle數據庫之單表查詢


  接着上一篇的分享,今天主要給大家分享的是關於數據中的單表查詢,單表查詢很基礎,也很重要,但是任何一個初學者必須要掌握的姿勢,單表查詢就是對單個表進行操作,查詢我們想要的數據。單表查詢里面的內容也是比較多的,比如單表查詢結合比較運算符、邏輯運算符、以及in not in 、between...and、模糊查找、排序查找、去重查找、空值的處理、any以及all的使用。接下來就看一下關於單表查詢的使用吧!

我們這里使用oracle自帶的一個用戶scrott用戶,這個用戶在數據庫處於鎖定狀態,我們需要把它給解鎖。解鎖的sql語句是:

alter user scott account unlock identified by test1; --scott 被鎖住 解鎖並為scott用戶設置登錄密碼 test1 密碼可以隨意設置

解鎖以后,就可以使用scott下面的表了。我們看一下scott用戶下面有哪些表?

我們先使用sql語句查詢一下這個emp張表。

select * from emp;

 查詢結果如下:

1.結合比較運算符使用

   敲筆記: >  大於    < 小於   >= 大於等於   <= 小於等於   != 不等於   <>不等於 

--查詢工資超過3000的員工 select * from emp where sal>3000; --查詢工資大於3000且職位是clark的員工 select * from emp where sal>1500 or job='ClERK'; --查詢工資大於1500 或者工資不等於7566的員工 select * from emp where sal>1500 or sal != 7566; --查詢工資小於1600的員工 select * from emp where sal<=1600;

例子:查詢工資小於等於1600的員工

select * from emp where sal<=1600;

查詢結果:

2.結合邏輯運算符使用 and or 

敲筆記了:and 優先級大於or and(鏈接的兩個條件都要滿足) or(鏈接的兩個條件有一個滿足)

先看下使用or進行查詢sql

select * from emp; --查詢emp表工資大於3000或者編號大於6000的員工 select * from emp  where sal>2000 or  empno>2000 and empno<6000;

查詢結果:

在看使用and查詢sql

--查詢emp表工資大於3000並且編號大於6000的員工 select * from emp  where sal>3000 and empno>6000;  

查詢結果如下:

 

3.結合in  not in使用

in  在什么什么里面  not in 不在什么什么里面

--查詢工資屬於1500 3000  1400 員工信息 select * from emp where sal in (1500,3000,1400);

查詢結果:

not  in 的實例:

--查詢工資不屬於3000 5000 800 的員工信息 select * from emp where sal not in (300,5000,800);

查詢結果:

4.結合between...and...使用

between ... and 在什么什么之間

--查詢工資在1500-3000的員工信息 select * from emp where sal between 1500 and 3000;

查詢結果:

在來一個例子:

--查詢工資在1500-3000的員工信息且職位是SALESAMAN的員工 select * from emp where sal between 1500 and 3000 and job='SALESMAN';

查詢結果:

5.模糊查找

%代表通配符。就是可以和任意字符匹配的意思,_ 表示的是匹配一個字符

--查詢emp表中的名字包含A的員工信息 select * from emp where ename like '%A%';

查詢結果:

繼續來一個例子:

--查詢mgr編號中中以7開頭以8結尾的字符的員工信息 select * from emp where mgr like '7__8';

查詢結果:

6.排序查找

order by 是通過什么來排序, 默認是升序排列,也可以使用asc  降序是desc 。

--通過sal排序 默認升序 select * from emp order by sal;

查看結果:

通過sal排序,默認升序

--通過sal排序 降序排序 select * from emp order by sal desc;

查看結果:

7.去重查找

使用distinct  去除重復值

--將job中的salesman進行除去重復 select distinct job from emp;

查看結果:

把salesman重復的去掉,只保留一個。在按照ename進行去除重復值:

--將ename去除重復值 select distinct ename from emp;

查看結果:

去除重復ename值成功,去除就是不顯示重復的名字的意思。別把去重理解的太高大上哦~

在演示一個去重失敗的例子:

--將job和ename去重,失敗,只能去除一個列名 select distinct job,ename from emp;

查看結果:

8.空值處理

is null  空值      

--查詢mgr的值為null的員工信息 select * from emp where mgr is null;

查詢結果:

 is not null不是空值

--查詢sal不是null的員工信息 select * from emp where sal is not null;

查看結果:

注意:查詢空值是is null  而不是 = null

9.結合any和all的使用

--all 表示所有條件都要滿足     套路:大於最大值,就滿足所有

--all 表示所有條件都要滿足 --any 表示滿足任意一個 select * from emp where sal>=all(1500,3000,1000); --大於最大值就滿足所有值 select * from emp where sal>=3000;  --等於於>=all(1500,3000,1000)

查詢結果:

 --any 表示滿足任意一個   套路:大於最小值,就滿足所有

select * from emp where sal>=any(1500,3000,1000); --大於最小值,就滿足所有

等價於:

select * from emp where sal>=any(1500,3000,1000); --大於最小值,就滿足所有 select * from emp where sal>=1000;  --等價於 >=1000

查詢結果:

關於單表查詢,到這里我們就說完了,下一篇給大家分享 關於日期的操作;


免責聲明!

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



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