Oracle數據庫之操做符及函數

1、操做符:java

一、分類:mysql

算術、比較、邏輯、集合、鏈接;sql

二、算術操做符:函數

    執行數值計算;spa

-- 工資加1000
select empno,ename,job,sal+1000 from emp;

三、比較操做符:code

-- 比較運算符(between and包頭不包尾)
select * from emp where sal between 1000 and 2000;

(不等因而!=  ,   在mysql中是<>  )blog

四、邏輯操做符:and  or  not ci

 

--查詢獎金不爲空的員工信息
select * from emp where comm is  not null;

 

五、集合操做符:開發

  將兩個查詢的結果組合成一個結果:字符串

select sid  from t_score where score>=70 and cid = '01'
INTERSECT
select sid from t_score where score>=70 and cid = '07';

①、intersect 返回兩個查詢的公共行;

②、union:返回兩個查詢的不重複的全部行;這裏面能夠是一個表中的數據(在mysql中是另外的聯合查詢--不是一個表)

③、minus:返回從第一個查詢的結果中排除第二個查詢中出現的行;(在第一個的結果中查找不知足第二個的)

六、鏈接操做符:

    將多個字符串或數據值合併成一個字符串;

--鏈接操做符
select ('員工號爲'||empno||',姓名爲'||ename||'的工資爲'||sal) from emp

七、優先級:

算術>鏈接>比較>not邏輯>and邏輯>or邏輯操做符

2、SQL函數:

    用於執行特殊的操做的函數;

一、分類:

  單行、 分組、分析;

二、單行函數分類:

  從表中查詢的每一行只返回一個值;

  字符、數字、日期、轉換、其餘;

三、字符函數:

-- 字符串函數
select lower(ename),job from emp; --小寫

select ltrim('xysdezadmas','xyz') from dual;--截取:從左邊開始按後面字段開始截取,有幾個截取幾個,沒有就不截取

 ①、其餘字符函數:

chr:根據ASCII碼返回對應的字符(0:48    a:97    A:65)

lpad和rpad: 填充;

trim:去除左右兩邊的空格符;

lenth:字符串長度;

decode:逐個值置換;

select sname,decode(cid,1,'開發部')as 部門 from java0322;

select ename,decode(job,'CLERK','職員','SALESMAN','導購') as 工做 from emp

四、數字函數;

五、日期函數:

  對日期值進行計算,並生成日期數據類型或數值類型的結果;

add_months 偏移;

months_between:月數差;

last_day 最後一天;

round:四捨五入;

trunc:只舍不入,返回指定日期模式截斷後的第一天;

next_day(d,day):下週周幾的日期

extract:計算年份差:

--日期函數
select add_months(sbirth,-3)  from java0322;--月份偏移3月,能夠是負數,也就是向前偏移

select extract(year from sysdate) from dual;--截取當前時間的年份

select sname,extract(year from sysdate) - extract(year from sbirth) from java0322;--計算年紀

六、轉換函數:

to_char:按照指定的格式轉化字符串;

to_date:將字符串轉化爲日期;

to_number:將數字字符串轉化爲數字;----能夠實現直接在sql語句中進行格式的轉換

--轉換函數(字符串,格式)
Select TO_CHAR(0.123,'$0.9999') FROM DUAL;
--字符串轉日期
select to_date ('2005-02-28','yyyy-mm-dd') from dual;
--字符串轉數字
select to_number('20') from dual;

其餘函數:

nvl:isnull,不爲空時爲自己,爲空時指定0;

nvl2:不爲空時指定值2,爲空時指定值3;

NullIF:相等時爲空,不然爲前者

--查詢員工表的全部人的姓名,工資+獎金(獎金沒有的時候,由null轉爲0)---nvl轉換空值的函數
select ename,sal+nvl(comm,0)as sal from emp;--當空爲0,不爲空爲comm

select ename,sal+nvl2(comm,10000,0)  from emp;---不爲空時10000,爲空時0;

select nullif(100,200) from dual;--相等爲空,不等爲前者

七、分組函數:

  基於一組行來返回結果;

avg、min、max、sum、count

八、分析函數:

     根據一組行來計算聚合值;用於計算完成彙集的累計排名、移動平均數等;

row_number:返回連續的排位,不論值是否相等;

rank:具備相等值的行排位相同,序數隨後跳躍;

dense_rank:具備相等值的行排位相同,序號是連續的

-- 排位
select empno,ename,job,sal,row_number()over (order by sal desc) as  numm from emp; --返回連續的排位,不論值是否相等12345

select empno,ename,job,sal,rank()over (order by sal desc) as  numm from emp; --相等值的行排位相同,序號隨後跳躍;12245

select empno,ename,job,sal,dense_rank()over (order by sal desc) as  numm from emp; --相等值的行排位相同,序號是連續的;12234
相關文章
相關標籤/搜索