Oracle資料庫之單表查詢

來源:互聯網
上載者:User

標籤:name   ike   div   開頭   比較   狀態   之間   blog   使用   

  接著上一篇的分享,今天主要給大家分享的是關於資料中的單表查詢,單表查詢很基礎,也很重要,但是任何一個初學者必須要掌握的姿勢,單表查詢就是對單個表進行操作,查詢我們想要的資料。單表查詢裡面的內容也是比較多的,比如單表查詢結合比較子、邏輯運算子、以及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

查詢結果:

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

Oracle資料庫之單表查詢

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.