1. 程式人生 > >資料庫:SQL中的函式

資料庫:SQL中的函式

目錄

一、單行函式

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.登入驗證時,使用相同的加密函式計算後即可進行對比驗證