1. 程式人生 > >(ORACLE)PL/SQL 表的基本查詢

(ORACLE)PL/SQL 表的基本查詢

表的基本查詢

使用scott使用者下存在的emp表和dept表,演示如何使用select語句

emp表

在這裡插入圖片描述

dept表

在這裡插入圖片描述

查詢select語法是Oracle和其他資料庫中最重要的語法,查詢的效率關係程式執行的效率,為了更好的看出區別,這是先介紹一個命令 set timing on 輸入此命令後,可以顯示每次操作所花費的時間。

查看錶的結構

顯示錶的相關欄位名 和欄位的資料型別 顯示效果如下圖

sql>desc emp;

在這裡插入圖片描述

查詢表的所有資訊 (* 代表 表的所有欄位 )

select * from emp

;

查詢指定的欄位

select ename,sal,job from emp;

去除查詢內容的重複資訊

我們先將emp表中的 deptno欄位和job欄位的內容資訊查出來

select deptno,job from emp;

在這裡插入圖片描述

我們發現表中有很多重複的內容
接下來我們使用 distinct 去除表中的重複內容 語法如下

select distinct deptno, job from emp;

表中重複的內容就被去除了

在這裡插入圖片描述

在查詢中使用算數表示式

顯示僱員的年工資(sal為月工資 年工資為sal*12)

這裡我們使用了一個 as 關鍵字 給欄位重新命名為年薪如果不使用 as 關鍵字 效果如下

在這裡插入圖片描述

select ename,sal*12 as “年薪” from emp;

在這裡插入圖片描述

在查詢中使用算數表示式時,如何處理欄位中的null值

在這裡插入圖片描述

在EMP表中 有一個獎金(COMM)欄位,我們可以看到有些員工是沒有沒有獎金的 那如果把年薪和獎金相加會出現什麼效果喃?

在這裡插入圖片描述

可以看出 獎金為null的員工 沒有顯示出年薪,這是可以使用nvl(,)函式來處理,語法如下

select ename,(sal+nvl(欄位名替換型別))*12 from emp;

select ename,(sal + nvl(comm,0))*12 from emp;

在這裡插入圖片描述

使用where新增查詢條件

如何顯示工資高於2000的員工

select ename,sal from emp where sal > 2000;

在這裡插入圖片描述

如何查詢 1981年1月1日之後入職的員工

select ename,hiredate from emp where hiredate > ‘1-1月-1981’;

這裡的日期格式是oracle的預設日期格式

在這裡插入圖片描述

如何顯示工資在2000至2500之間的員工

select ename,sal from emp where sal>2000 and sal<2500;

當這裡同時需要成立兩個判斷條件的時候條件與條件之間用 and 操作符連線

在這裡插入圖片描述

使用like操作符

%:表示0到多個字元 _:表示單個字元

如何顯示首字母為S的員工姓名和工資

select ename,sal from emp where ename like ‘S%’;

在這裡插入圖片描述

如何顯示第三個字母為O的員工和工資

select ename,sal from where ename like ‘__O%’

這裡第三個字母是O 那前兩位就要兩個下滑線替代‘_’

在這裡插入圖片描述

在where條件中使用in

使用in操作符 查詢員工編號(empno)欄位中 編號為7782,7900,7876的員工姓名和編號

select ename,empno from emp where empno in (7782,7900,7876);

在這裡插入圖片描述

使用 is null 操作符

如何查詢沒有上級的員工(上級編號欄位為MGR)名字和編號,如果MGR欄位為null則為沒有上級

select ename,empno,mgr from emp where mgr is null;
在這裡插入圖片描述

使用 is null 查詢為空的欄位,使用is not null 查詢不為空的欄位
使用 is not null查詢有上級的員工

select ename,empno,mgr from emp where mgr is not null;

在這裡插入圖片描述

使用多個邏輯判斷符

查詢工資大於500 或是崗位為MANAGER的僱員,同時還要滿足他們姓名的首字母為大寫J

select ename,job,sal from emp where (sal>500 and job = ‘MANAGER’) or ename like ‘J%’;

在這裡插入圖片描述

使用order by 對欄位內容進行排序

使用order by 欄位名 asc 是降序(不寫asc 預設是降序),如果想要升序排列 使用 order by 欄位名 desc

按照工資降序排序員工資訊

select * from emp order by sal;

在這裡插入圖片描述

按照部門號升序,員工工資降序排列,顯示資訊

select * from emp order by deptno,sal desc;

在這裡插入圖片描述

使用別名進行排序

select ename “員工姓名”,(sal + nvl(comm,0))*12 “年薪” from emp order by “年薪”;

中文的別名 前後要加雙引號",英文不用加。

在這裡插入圖片描述