Oracle數據庫(二)

Oracle操做符和SQL函數

1、操做符

一、算術操做符函數

  • 算術操做符用於執行數值計算
  • 能夠在SQL語句中使用算術表達式,算術表達式由數值數據類型的列名、數值常量和鏈接它們的算術操做符組成
  • 算術操做符包括加(+)、減(-)、乘(*)、除(/)

實例:學習

檢索出課程號是’02’的成績+10分後的結果 spa

SELECT sid,cid, score+10 as lastscore
Where cid =02’;

二、比較操做符code

  • 比較操做符用於比較兩個表達式的值
  • 比較操做符包括 =、!=、<、>、<=、>=、BETWEEN…AND、IN、LIKE 和 IS NULL等

實例:blog

檢索1991年前出生的學生信息ci

SELECT *  FROM  t_student
WHERE  sbirthday  <  '01-1月-91';

②檢索1990年出生的學生信息字符串

SELECT *  FROM  t_student
WHERE sbirthday between01-1月-90and31-12月-90’;

③檢索班級是1班或2班的學生信息ast

SELECT *   FROM t_student
WHERE  sclass  in (1,2);

3、邏輯操做符class

  • 邏輯操做符用於組合多個比較運算的結果以生成一個或真或假的結果。
  • 邏輯操做符包括與(AND)、或(OR)和非(NOT),NOT一般和AND,OR聯合使用。

實例:date

查詢 二班的 90後的學生信息

select * from student 
where sbirthday >='01-1月-90' and sclass = 2;

4、集合操做符

集合操做符:

將兩個查詢的結果組合成一個結果

一、UNION 操做符:返回兩個查詢的不重複的全部行。(相似or 聯集)

注意:UNION的前提是兩個表的查詢結果條數要一致

二、INTERSECT 操做符:只返回兩個查詢的公共行。(相似於and 交集)

三、MINUS 操做符返回從第一個查詢結果中排除第二個查詢中出現的行。(相似於差集)

實例:

統計Oracle(01) 和 Jsp(07)都爲良好(70分以上)的同窗學號

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

②統計學習Oracle(01) 或 Jsp(07)的同窗學號

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

③統計Oracle(01)良好但Jsp(07)未達到良好的同窗學號

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

5、鏈接操做符

  • 鏈接操做符用於將多個字符串或數據值合併成一個字符串
  • 經過使用鏈接操做符能夠將表中的多個列合併成邏輯上的一行列
SELECT ('學號爲' || SID|| '的同窗姓名是' || SNAME) as  SINFO
FROM   t_student;

操做符的優先級

SQL 操做符的優先級從高到低的順序是:

  • 算術操做符 --------最高優先級
  • 鏈接操做符
  • 比較操做符 NOT
  • 邏輯操做符 AND
  • 邏輯操做符 OR
  • 邏輯操做符 --------最低優先級

2、SQL函數

Oracle 提供一系列用於執行特定操做的函數

SQL 函數帶有一個或多個參數並返回一個值

如下是SQL函數的分類:

①單行函數②分組函數③分析函數

單行函數對於從表中查詢的每一行只返回一個值

能夠出如今 SELECT子句中和 WHERE 子句中

單行函數能夠大體劃分爲:

  • 字符函數
  • 數字函數
  • 日期函數
  • 轉換函數
  • 其餘函數

一、字符函數:

字符函數接受字符輸入並返回字符或數值

 

如下是一些其它的字符函數

  • CHR :根據ASCII碼返回對應的字符
  • LPAD和RPAD :填充
  • TRIM :去除左右兩邊的空格符
  • LENGTH :字符串長度
  • DECODE :逐個值替換
SELECT LENGTH(‘student') FROM dual;
SELECT sname , 
DECODE(ssex,’m’,‘男’,‘f‘,’女’)  as  ssex
FROM t_student;

二、數字函數:

數字函數接受數字輸入並返回數值結果

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

日期函數包括:

  • ADD_MONTHS
  • MONTHS_BETWEEN
  • LAST_DAY
  • ROUND
  • TRUNC
  • NEXT_DAY
  • EXTRACT 計算年份差

三、轉換函數:

轉換函數將值從一種數據類型轉換爲另外一種數據類型

經常使用的轉換函數有:

  • TO_CHAR :按照指定的格式轉化字符串
  • TO_DATE :將字符串轉化成日期
  • TO_NUMBER :將數字字符串轉化成數字

實例:

Select TO_CHAR(0.123,‘$0.9999') FROM DUAL;
SELECT TO_CHAR(sysdate,'YYYY"年"fmMM"月"fmDD"日" HH24:MI:SS')FROM dual; 
SELECT TO_DATE(‘2005-12-06’ , ‘yyyy-mm-dd’)FROM dual;
SELECT TO_NUMBER('100') FROM dual;

四、其它函數

如下是幾個用來轉換空值的函數 (scott.emp)

  • NVL
  • NVL2
  • NULLIF

查詢員工工資和(工資sal+獎金comm)

Select empno ,sal +comm  from emp;
Select empno ,sal + nvl(comm,0)  from emp;
SELECT empno,sal + nvl2(comm,comm,0) from emp;
SELECT NULLIF(100,200)  FROM DUAL;

五、分組函數

分組函數基於一組行來返回結果

爲每一組行返回一個值

  • AVG
  • MIN
  • MAX
  • SUM
  • COUNT

六、分析函數

分析函數根據一組行來計算聚合值

用於計算完成彙集的累計排名、移動平均數等

分析函數爲每組記錄返回多個行

  • ROW_NUMBER
  • RANK
  • DENSE_RANK

ROW_NUMBER 返回連續的排位,不論值是否相等

select ename,job,deptno,sal,row_number() over(order by sal desc) as sal_rank from scott.emp;

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

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

相關文章
相關標籤/搜索