標籤: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資料庫之單表查詢