2.Oracle基本查詢
--1.簡單查詢
--1.語法
select [distinct]*|列名稱[別名],列名稱[別名]... from 表名 [別名]
--執行順序:
1.from子句,然後select子句;
distinct 如果查詢的是多個列,只有在多個列都完全重複的時候才可以消除重複;
--1.查詢emp中的所有資料
select * from emp;
--2.查詢emp表中的僱員的編號,姓名,職位,工資;
select e.empno,e.ename,e.job,e.sal from emp e;
--3.消除名字相同的資料
select distinct(ename) from emp;
select distinct from emp;--查詢所以列都不相同的資料
select distinct ename from emp;--查詢名字不同的員工的名字
select distinct(ename),sal from emp;---查詢不同名字的員工的姓名和工資;
select e.empno,e.ename from emp e;
--4查詢每個僱員的編號、姓名、基本年薪(13薪,每年領5個月的高溫補貼1000,每個月領500交通補貼)
select e.empno,e.ename,sal*13+1000+500*12 sal from emp e;
--5.常量
1.字串 用","宣告
2.數字 直接編寫
3.日期 使用日期格式
--5.1直接查詢常量
select '僱員',empno,ename from emp;
--5.2"||" 連線
select '姓名 : '||ename ||',工資:' ||sal say from emp;select * from emp;
--6.四則運算
---查詢員工的姓名,年薪(15薪+每個月500交通補貼+每個月300的飯補)
select e.ename,sal*12+500*12+300*12 sal
from emp e;
--限定查詢
select [distinct]*|列名稱[別名],列名稱[別名]... from 表名 [別名] [where] 條件
1.確定資料來源 from
2.確定滿足資料的資料行 where
3.控制要顯示的資料列 select
限定查詢的符合
1.關係運算符:>,<,<=,>=,<>(!=);
2.邏輯運算子:AND,OR,NOT
3.範圍運算子:BETWEEN...AND,IN,NOT IN;
4.空判斷:IS NULL,IS NOT NULL
5.模糊查詢:LIKE
"="可以在數字上使用,也可以在字串中使用
--1.查詢工資高於1500的員工資訊
select * from emp c where c.sal>1500
--2. 查詢工資高於1500低於3000的員工資訊
select * from emp c where c.sal>1500 and c.sal<3000
--3.查詢工作高於1500的員工的資訊
select * from emp c where not c.sal<1500
--4.範圍查詢(數字,日期)
between... and...
1.包含最大值和最小值
--5.查詢所以在1981年僱傭的員工
select * from emp e where e.hiredate between '01-1月1981' and '31-12月1981'
--空判斷:is null ;is not null
select * from emp e where comm is not null;---查詢由佣金的員工資訊
select * from emp e where comm is null;--查詢沒有佣金的員工的資訊
NOT IN和NULL的問題
1.在使用NOT IN 進行範圍判斷的時候,如果範圍裡面包含了NULL,不會有任何的結果返回;
--6.模糊查詢:LIKE
'-':匹配任意的一個字元;
'%':匹配任意的零位、一位或多位字元;
like 可以應用在各種型別上;
like 如果不設定查詢關鍵字,那麼表示查詢所以
select * from emp WHERE ename like '%%';
select * from emp c where c.ename like '%wang%';
--7.order by 分組查詢
select [distinct]*|列名稱[別名],列名稱[別名]... from 表名 [別名] [where] 條件 order by 欄位[ASC(預設)/DESC,欄位[ASC/DESC],....]
1.確定資料來源 from
2.確定滿足資料的資料行 where
3.控制要顯示的資料列 select
4.針對查詢結果排序 可以使用Select語句中的別名;order by
---查詢僱員的年薪按年薪做升序
select ename,job,sal*12 sal from emp order by sal;
--連線字元
select '姓名:'||ename||'職位:'||job say from emp;