-- 函數使用
-- 1.單行函數 執行QSL語句時候 分別產生了一條記錄影響的是多行。
-- 2.多行函數 執行QSL語句時候 只產生一條結果
-- 自己理解:多行函數,就是需要多條數據才能執行的結果。
-- max() min() sum() avg() count()
SELECT ENAME,LOWER(ENAME),UPPER(ENAME) FROM emp;
SELECT MAX(sal) from emp;
SELECT * from emp;
-- 字符類型函數
SELECT ENAME,LOWER(ENAME),UPPER(ENAME),JOB,REPLACE(JOB,"CLERK","A") FROM emp;
SELECT ENAME,LOWER(ENAME),UPPER(ENAME),JOB,REPLACE(JOB,"CLERK","員工") FROM emp;
-- SUBSTRING(ENAME,2,3) 從第二個字符開始,截取三個字符。
SELECT ENAME,SUBSTRING(ENAME,2,3) FROM emp;
-- 數值函數
-- 絕對值,向上取余,向下取余,四舍五入,取余數,pi 2的n次方,開方
SELECT ABS(-1),CEIL(3.2),FLOOR(3.9),ROUND(3.6),MOD(10,4),PI(),POW(2,5),SQRT(36) FROM emp;
-- 虛擬表
SELECT ABS(-1),CEIL(3.2),FLOOR(3.9),ROUND(3.6),MOD(10,4),PI(),POW(2,5),SQRT(36) FROM DUAL;
SELECT ABS(-1),CEIL(3.2),FLOOR(3.9),ROUND(3.6),MOD(10,4),PI(),POW(2,5),SQRT(36)
-- 日期函數
-- CURDATE()只含有年月日 CURTIME()只含有時分秒
-- NOW(),NOW(),SYSDATE(),CURRENT_DATE() 即含有年月日,又含有時分秒。
-- SLEEP(3)失眠3秒。
SELECT CURDATE(),CURTIME(),NOW(),SLEEP(3),NOW() FROM DUAL;
-- 提示:NOW(),SYSDATE()只有和sleep配合的使用,才會有區別,單純獲得年月日時分秒沒有區別
SELECT NOW(),SYSDATE(),SLEEP(3),NOW(),SYSDATE();
-- 流程函數
select * FROM emp;
-- 需求1 SAL>1500 A sal>1200 B sal >500 C else D
-- SAL>1500 A sal>1200 B sal >500 C else D
SELECT ENAME,SAL,
?????? case
????????????? WHEN SAL>=1500 THEN "A"
????????????? WHEN SAL>=1200 THEN "B"
????????????? WHEN SAL>=500 THEN "C"
????????????? ELSE "D"
?????? END as "薪資等級"
FROM emp;
-- 需求2 這個月收入=SAL+COMM? COMM=NULL +=NULL
SELECT ENAME,SAL,if(SAL>=1500,"高收入","低收入") AS "薪資等級" from emp;
-- 判斷當前數是否為null,如果不是null,返回comm,否則返回0;
SELECT ENAME,SAL,COMM,SAL+IFNULL(COMM,0) FROM emp;
-- 其他函數
SELECT DATABASE(),USER(),VERSION(),INET_ATON('192.168.10.1'),INET_NTOA(23322248815)
-- 多行函數,常用5個,MAX(),MIN(),SUM(),AVG(),COUNT()
-- 最大值,最小值,求和,平均數,總記錄數
-- sum avg 僅限于數值類型(整數,浮點數)
SELECT MAX(SAL),MIN(SAL),SUM(SAL),AVG(SAL),COUNT(SAL) FROM emp;
SELECT COUNT(*) FROM emp;
-- ()中內容可以數據庫中任意一列,也可以是*,也可以使用1或者別的表示。
-- count(1) 這種執行效率是最高的
SELECT COUNT(1) FROM emp;
-- 統計emp中有幾個崗位job
SELECT * FROM emp;
-- 可以先去重復,然后在進行統計
SELECT COUNT(DISTINCT JOB) FROM emp;
-- 多行函數進行操作的時候,會自動忽視null字段
SELECT SUM(COMM) FROM emp;
?