1. 程式人生 > >2.Oracle基本查詢

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;