資料庫:SQL中的函式
阿新 • • 發佈:2018-12-14
目錄
一、單行函式
1.特點:返回結果是1條記錄
2.分類:數學函式、字串函式、日期函式
2.1 數學函式
select PI();#圓周率 select CEIL(12.3);#向上取整,結果13 select CEIL(-12.3);#結果-12 select FLOOR(12.3);#向下取整,結果12 select ROUND(12.3);#按四捨五入取整數,結果是12 select ROUND(12.54,1);#1表示從小數點開始向右第一位開始四捨五入,結果是12.5 select ROUND(12.54,-1);#-1表示從小數點開始向左第一位開始四捨五入,結果是10 select abs(-10);#去絕對值 select RAND();#隨機數 select POW(2,3);#冪運算 select SQRT(25);#開方
2.2 字串函式
select lower(str) from emp;#表示式作為引數 select LOWER(ename) from emp;#欄位作為引數 select lower('THIS IS');#值作為引數 select upper('this is');#值作為引數 select CONCAT(str1,str2,...);#連線字串 select CONCAT('e-',ename) from emp;#連線字串 select substr('abcdef',1,3);#取字串,從第1個位置開始,取3個,結果abc select replace('abcdef','cd','aa');#替換把第2個引數值替換成第3個引數值 select trim(' aa ');#去除前後空格 select length('abc');#取字串的長度 select length(ename) from emp; select LPAD(‘abc’,10,'*');#左填充:第2個引數表示指定長度,第3個引數表示填充內容 select RPAD(‘abc’,10,'*');#右填充
2.3 日期函式
select NOW();#當前時間 select SYSDATE();#系統日期 select current_timestamp();#當前時間戳 select current_time();#當前時間 select current_date();#當前日期 select year('1998-09-10');#取年份 select year(new());#取當前年份 #日期計算 select date_add(new(),interval 2 day);#兩天以後的日期時間 select date_add(new(),interval 2 month);#兩個月以後的日期時間 select last_day('2018-02-04');#計算引數日期的月份的最後一天的日期
二、聚合函式(重點)
1.常用的聚合函式
count():統計數目
sum():求和
max():求最大值
min():求最小值
avg():求平均值
2.示例程式碼
select count(*) from emp;#統計記錄數
select count(1) from emp;#統計記錄數
select count(comm) from emp;#統計非空欄位的數目
select sum(sal) from emp;#求和
select max(sal) from emp;#求最大值
select min(sal) from emp;#求最小值
select avg(sal) from emp;#求平均值
三、分組函式(重點)
1.語法格式
group by 分組條件 [having 檢索條件];
說明:
- 經常和聚合函式一起使用
- having 表示在分組之後實現檢索
-
在使用分組時,select 後面可以跟聚合函式,分組欄位,但其他欄位不能寫。
-
注意:有多少個分組就返回多少條記錄。
2.示例程式碼
#每個部門平均工資,每個部門返回一個平局值
#select deptno,avg(sal),ename from emp group by deptno;#select後面不能跟ename欄位
select deptno,avg(sal) from emp group by deptno;
#注意:條件的執行順序是從左往後執行
#where必須放在group by之前使用
#where中不能使用聚合函式
#求平均工資大於2000的部門編號和平均工資
select deptno, avg(sal) nsal from emp group by deptno having nsal > 2000;
四、加密函式
#java中的加密可逆的有:base64.encode() Base64.decode();不可逆的有:MD5
select MD5('root');
select SHA('root');
#資料庫使用者密碼就是用這個加密的
select PASSWORD('root');
#用處:
#1.在以後開發系統中,涉及到使用者密碼均需加密
#2.登入驗證時,使用相同的加密函式計算後即可進行對比驗證