天天看點

函數

函數就是封裝了特定的一些功能,直接拿過來使用,如字元串的處理,日期的運算,數值的運算等等。

函數隻是對查詢結果中的資料進行處理,不會改變資料庫中資料表的值。

函數分為單行函數和多行函數:

單行函數:單行函數是指對每一條記錄進行計算,并得到相應的結果,傳回給使用者,也就是說,每條記錄作為一個輸入參數,經過函數計算得到每條記錄的計算結果。

多行函數:多行函數是指對一組資料進行計算,針對這一組資料(多行記錄)隻傳回一個結果,也稱為分組函數。

單:改變每一條結果,每一條資料對應一條結果

多:多條資料,最終展示一個結果。

注:除了多行函數(max,min,count,sum,avg),都是單行函數

select empno,ename,lower(ename),upper(ename),sal from emp;  -- 單(多個結果)

運作結果:

函數

  select max(sal),min(sal),count(sal),sum(sal),avg(sal) from emp; -- 多 (一個結果)

函數

 單行函數:

1.字元串函數:

select ename,length(ename),substring(ename,2,3) from emp;  -- length長度  substring(2,3)字元串截取從2開始,截取長度為3

函數

  2.數值函數:

select abs(-5),ceil(5.2),floor(5.4),round(3.14) from emp; -- abs取絕對值 ceil向上取整 floor向下取整  round四舍五入  這裡顯示14行,沒有必要

函數

  select abs(-5),ceil(5.2),floor(5.4),round(3.14) from dual;   -- dual實際是一個僞表  在控制台列印一行

函數

 注:如果沒有where條件的話,from dual 可以省略不寫,運作結果還是一樣的。

select abs(-5),ceil(5.2),floor(5.4),round(3.14) ;

函數

 3.日期與時間函數:

select curdate(),curtime();  -- 擷取目前年月日,時分秒

函數

 select now(),sysdate(),sleep(2),now(),sysdate() from dual;  -- 都是傳回年月日時分秒 但是sysdate是傳回函數執行的日期和時間

函數

insert into emp values (5200,'bobo','salasman',7698,now(),1000,null,30);   -- now()可以表示年月日時分秒,但是插入資料的時候還是要參照表的結構的

添加成功後,檢視表,select * from emp;

函數

 desc emp;  -- date 對應年月日  datetime對應 年月日時分秒

函數

 4.流程函數:

if相關:

select empno,ename,sal,if(sal>=2500,'高薪','底薪') as '薪資等級' from emp;  -- if - else 雙分支結構

函數

 select empno,ename,sal,comm,sal+ifnull(comm,0) from emp; -- 如果comm是null,那麼取值為0  單分支

函數

 select nullif(1,1),nullif(1,2) from dual;  -- 如果value1等于value2,則傳回null,否者傳回value1

函數

 case相關:

case等值判斷:

select empno,ename,job,

case job

when 'clerk' then '店員'

when 'salesman' then '銷售'

when 'manager' then '經理'

else '其他'

end as '崗位',

sal from emp;

函數

 case區間判斷:

select empno,ename,sal,

case

when sal<=1000 then 'A'

when sal<=2000 then 'B'

when sal<=3000 then 'C'

else 'D'

end as '公資等級',

deptno from emp;

函數

 5.JSON函數:先略

6.其他函數:

select database(),user(),version()from dual;   -- database資料庫  user使用者 version版本

函數

多行函數:

select max(sal),min(sal),count(sal),sum(sal),avg(sal) from emp;   -- max最大 min最小 count計數 sum總共 avg平均

函數

  select max(comm),min(comm),count(comm),sum(comm),avg(comm) from emp;    -- max(),min(),count()針對所有類型   sum(),avg()隻針對數值類型有效

函數

 count一般用來計算:

select * from emp;

函數

 select count(ename) from emp;

函數

select count(*) from emp;

函數

  都是14條記錄。