(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 “年薪”;
中文的別名 前後要加雙引號",英文不用加。