MySQL函數
常用函數
#函數 | 作用 | |
---|---|---|
##ABS(x) | 傳回x的絕對值 | SELECT ABS(-1) – 傳回1 |
CEIL(x),CEILING(x) | 傳回大於或等於x的最小整數 | SELECT CEIL(1.5) – 傳回2 |
#FLOOR(x) | 傳回小於或等於x的最大整數 | SELECT FLOOR(1.5) – 傳回1 |
RAND() | 傳回0->1的隨機數 | SELECT RAND() --0.6264973735683573 |
#RAND(x) | 傳回0->1的隨機數,x值相同時傳回的隨機數相同 | SELECT RAND(2) – 1.5865798029924 |
#SIGN(x ) | 傳回x的符號,x是負數、0、正數分別回傳-1、0、1 | SELECT SIGN(-10) – (-1) |
#PI() | 傳回圓周率(3.141593) | SELECT PI()– 3.141593 |
#TRUNCATE(x,y ) | 傳回數值x保留到小數點後y位的值(與ROUND最大的差異是不會進行四捨五入) | SELECT TRUNCATE(1.23456,3) – 1.234 |
ROUND(x) | 傳回離x最近的整數 | SELECT ROUND(1.23456) – 1 |
#ROUND( x,y) | 保留x小數點後y位的值,但截斷時要進行四捨五入 | SELECT ROUND(1.23456,3) – 1.235 |
#POW(x,y).POWER(x,y) | 返回x的y次方 | SELECT POW(2,3) – 8 |
SQRT(x) | 傳回x的平方根 | SELECT SQRT(25) – 5 |
EXP(x) | 返回e的x次方 | SELECT EXP(3) – 20.085536923188 |
MOD(x,y) | 返回x除以y以後的餘數 | SELECT MOD(5,2) – 1 |
#LOG(x) | 傳回自然對數(以e為底的對數) | SELECT LOG(20.085536923188) – 3 |
傳回以10為底的對數 | SELECT LOG10(100) – 2 | |
將角度轉換為弧度 | SELECT RADIANS(180) – 3.1415926535898 | |
將弧度轉換為角度 | SELECT DEGREES(3.1415926535898) – 180 | |
求正弦值(參數是弧度) | SELECT SIN(RADIANS(30)) – 0.5 | |
求反正弦值(參數是弧度) | ||
#求餘弦值(參數是弧度) | SELECT COS(RADIANS(30)) --0.5 | |
求反餘弦值(參數為弧度) | ||
求正切值(參數是弧度) | SELECT TAN(RADIANS(45)) --1 | |
#求反正切值(參數為弧度) | ||
求餘切值(參數是弧度) |
作用 | 範例 | |
---|---|---|
傳回字串s的字符數字 | SELECT CHAR_LENGTH('你好123') – 5 | |
傳回字串s的長度 | SELECT LENGTH('你好123') – 9 | |
將字串s1,s2等多個字串合併為一個字串 | SELECT CONCAT('12','34') – 1234 | |
將字串s2取代s1的x位置開始長度為len的字串 | SELECT INSERT('12345',1,3,'abc') – abc45 | |
將字串s的所有字母變成大寫字母 | SELECT UPPER('abc') – ABC | |
將字串s的所有字母變成小寫字母 | SELECT LOWER('ABC') – abc | |
傳回字串s的前n個字元 | SELECT LEFT('abcde',2) – ab | |
傳回字串s的後n個字元 | SELECT RIGHT('abcde',2) – de | |
字串s2來填滿s1的開始處,使字串長度達到len | SELECT LPAD('abc ',5,'xx') – xxabc | |
字串s2來填滿s1的結尾處,使字串的長度達到len | SELECT RPAD('abc',5,'xx') – abcxx | |
去掉字串s開始處的空格 | ||
去掉字串s結尾處的空格 | ||
去掉字串s開始和結尾處的空格 | ||
去掉字串s中開始處和結尾處的字串s1 | SELECT TRIM('@' FROM '@@abc@@ ') – abc | |
#將字串s重複n次 | SELECT REPEAT('ab',3) – ababab | |
返回n個空格 | ||
將字串s2取代字串s中的字串s1 | SELECT REPLACE('abc','a','x') --xbc | |
比較字串s1和s2 | ||
取得從字串s中的第n個位置開始長度為len的字串 | ||
同SUBSTRING(s,n,len) | ||
SELECT LOCATE('b', 'abc') – 2 | INSTR(s,s1) | |
SELECT INSTR('abc','b') – 2 | REVERSE(s) | |
SELECT REVERSE('abc') – cba | #ELT(n,s1,s2,…) | |
SELECT ELT(2,'a','b','c' ) – b | FIELD(s,s1,s2…) | |
SELECT FIELD ('c','a','b','c') – 3 | #FIND_IN_SET(s1,s2) | |
範例 | ||
---|---|---|
##SELECT CURDATE() –> 2021-01-09 | NOW() | |
SELECT NOW()–> 2021-01 -09 10:03:14 | LOCALTIME() | |
SELECT LOCALTIME()–> 2021-01- 09 10:03:14 | UNIX_TIMESTAMP() | |
SELECT UNIX_TIMESTAMP()->1617977084 | -- 时间和日期函数(记住)SELECT CURRENT_DATE() -- 获取当前日期SELECT CURDATE() -- 获取当前日期SELECT NOW() -- 获取当前的时间SELECT LOCALTIME() -- 本地时间SELECT YEAR(NOW())SELECT MONTH(NOW())SELECT DAY(NOW())SELECT HOUR(NOW())SELECT MINUTE(NOW())SELECT SECOND(NOW())-- 系统SELECT SYSTEM_USER()SELECT USER()SELECT VERSION() 登入後複製 |
#函數名稱
SUM() | |
AVG() | |
#MAX() | |
資料庫層級的MD5加密######### #什麼是MD5######主要增強演算法複雜度和不可逆性######MD5 不可逆,具體值的md5是一樣的######MD5 破解網站的原理,背後有一個字典,MD5加密後的值:MD5加密前的值###MIN()最小值
-- ================ 聚合函数 ============-- 都能够统计 表中的数据 (想查询一个表中有多少个记录,就是用这个count())SELECT COUNT(studentname) FROM student; -- COUNT(指定列),会忽略所有的null值SELECT COUNT(borndate) FROM student; -- 结果 8 少一个 因为是null SELECT COUNT(*) FROM student; -- Count(*) 不会忽略所有的null值 本质 计算行数SELECT COUNT(1) FROM result; -- Count(1) 不会忽略所有的null值 本质 计算行数SELECT SUM(studentresult) AS 总和 FROM resultSELECT AVG(studentresult) AS 平均分 FROM resultSELECT MAX(studentresult) AS 最高分 FROM resultSELECT MIN(studentresult) AS 最低分 FROM result-- 查询不同课程的平均分,最高分,最低分-- 核心:根据不同的课程分组SELECT any_value(`subjectname`) AS 科目名,AVG(studentresult) AS 平均分,MAX(studentresult) AS 最高分,MIN(studentresult) AS 最低分FROM result rINNER JOIN `subject` subON r.`subjectno` = sub.`subjectno`GROUP BY r.subjectno -- 通过什么字段来分组-- 查询不同课程的平均分,最高分,最低分,平均分大于80SELECT any_value(`subjectname`) AS 科目名,AVG(studentresult) AS 平均分,MAX(studentresult) AS 最高分,MIN(studentresult) AS 最低分FROM result rINNER JOIN `subject` subON r.`subjectno` = sub.`subjectno`GROUP BY r.subjectno -- 通过什么字段来分组HAVING 平均分>50登入後複製
-- ==================== 测试MD5 加密 ===================CREATE TABLE `testmd5`( `id` INT(4) NOT NULL, `name` VARCHAR(20) NOT NULL, `pwd` VARCHAR(50) NOT NULL, PRIMARY KEY(`id`))ENGINE=INNODB DEFAULT CHARSET=utf8-- 明文密码INSERT INTO testmd5 VALUES(1,'zhangsan','123456'),(2,'lisi','123456'),(3,'wangwu','123456')-- 加密UPDATE testmd5 SET pwd=MD5(pwd) WHERE id = 1UPDATE testmd5 SET pwd=MD5(pwd) -- 加密全部的密码-- 插入的时候加密INSERT INTO testmd5 VALUES(4,'xiaoming',MD5('123456'))-- 如何校验:将用户传递进来的密码,进行md5加密,然后比对加密后的值SELECT * FROM testmd5 WHERE `name`='xiaoming' AND pwd=MD5('123456')
以上是MySQL函數介紹資料庫應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!