MySQL函数介绍数据库应用


本文摘自PHP中文网,作者coldplay.xixi,侵删。

MySQL函数

  • 常用函数
  • 聚合函数
  • 数据库级别的MD5加密

常用函数

函数作用例子
ABS(x)返回x的绝对值SELECT ABS(-1) ?C 返回1
CEIL(x),CEILING(x)返回大于或等于x的最小整数SELECT CEIL(1.5) ?C 返回2
FLOOR(x)返回小于或等于x的最大整数SELECT FLOOR(1.5) ?C 返回1
RAND()返回0->1的随机数SELECT RAND() --0.6264973735683573
RAND(x)返回0->1的随机数,x值相同时返回的随机数相同SELECT RAND(2) ?C 1.5865798029924
SIGN(x)返回x的符号,x是负数、0、正数分别返回-1、0和1SELECT SIGN(-10) ?C (-1)
PI()返回圆周率(3.141593)SELECT PI()?C 3.141593
TRUNCATE(x,y)返回数值x保留到小数点后y位的值(与ROUND最大的区别是不会进行四舍五入)SELECT TRUNCATE(1.23456,3) ?C 1.234
ROUND(x)返回离x最近的整数SELECT ROUND(1.23456) ?C 1
ROUND(x,y)保留x小数点后y位的值,但截断时要进行四舍五入SELECT ROUND(1.23456,3) ?C 1.235
POW(x,y).POWER(x,y)返回x的y次方SELECT POW(2,3) ?C 8
SQRT(x)返回x的平方根SELECT SQRT(25) ?C 5
EXP(x)返回e的x次方SELECT EXP(3) ?C 20.085536923188
MOD(x,y)返回x除以y以后的余数SELECT MOD(5,2) ?C 1
LOG(x)返回自然对数(以e为底的对数)SELECT LOG(20.085536923188) ?C 3
LOG10(x)返回以10为底的对数SELECT LOG10(100) ?C 2
RADIANS(x)将角度转换为弧度SELECT RADIANS(180) ?C 3.1415926535898
DEGREES(x)将弧度转换为角度SELECT DEGREES(3.1415926535898) ?C 180
SIN(x)求正弦值(参数是弧度)SELECT SIN(RADIANS(30)) ?C 0.5
ASIN(x)求反正弦值(参数是弧度)
COS(x)求余弦值(参数是弧度)SELECT COS(RADIANS(30)) --0.5
ACOS(x)求反余弦值(参数是弧度)
TAN(x)求正切值(参数是弧度)SELECT TAN(RADIANS(45)) --1
ATAN(x) ATAN2(x)求反正切值(参数是弧度)
COT(x)求余切值(参数是弧度)

1

-- 数学运算SELECT ABS(-8) as 绝对值 -- 绝对值SELECT CEILING(9.4) -- 向上取整SELECT FLOOR(9.4)  -- 向下取整SELECT RAND()   -- 返回一个 0-1 之间的随机数SELECT SIGN(-10)  -- 返回一个数的符号 0 返回 0  负数返回-1  正数返回 1

相关免费学习推荐:mysql视频教程

函数作用例子
CHAR_LENGTH(s)返回字符串s的字符数SELECT CHAR_LENGTH(‘你好123’) ?C 5
LENGTH(s)返回字符串s的长度SELECT LENGTH(‘你好123’) ?C 9
CONCAT(s1,s2,…)将字符串s1,s2等多个字符串合并为一个字符串SELECT CONCAT(‘12’,‘34’) ?C 1234
INSERT(s1,x,len,s2)将字符串s2替换s1的x位置开始长度为len的字符串SELECT INSERT(‘12345’,1,3,‘abc’) ?C abc45
UPPER(s),UCAASE(S)将字符串s的所有字母变成大写字母SELECT UPPER(‘abc’) ?C ABC
LOWER(s),LCASE(s)将字符串s的所有字母变成小写字母SELECT LOWER(‘ABC’) ?C abc
LEFT(s,n)返回字符串s的前n个字符SELECT LEFT(‘abcde’,2) ?C ab
RIGHT(s,n)返回字符串s的后n个字符SELECT RIGHT(‘abcde’,2) ?C de
LPAD(s1,len,s2)字符串s2来填充s1的开始处,使字符串长度达到lenSELECT LPAD(‘abc’,5,‘xx’) ?C xxabc
RPAD(s1,len,s2)字符串s2来填充s1的结尾处,使字符串的长度达到lenSELECT RPAD(‘abc’,5,‘xx’) ?C abcxx
LTRIM(s)去掉字符串s开始处的空格
RTRIM(s)去掉字符串s结尾处的空格
TRIM(s)去掉字符串s开始和结尾处的空格
TRIM(s1 FROM s)去掉字符串s中开始处和结尾处的字符串s1SELECT TRIM(’@’ FROM ‘@@abc@@’) ?C abc
REPEAT(s,n)将字符串s重复n次SELECT REPEAT(‘ab’,3) ?C ababab
SPACE(n)返回n个空格
REPLACE(s,s1,s2)将字符串s2替代字符串s中的字符串s1SELECT REPLACE(‘abc’,‘a’,‘x’) --xbc
STRCMP(s1,s2)比较字符串s1和s2
SUBSTRING(s,n,len)获取从字符串s中的第n个位置开始长度为len的字符串
MID(s,n,len)同SUBSTRING(s,n,len)
LOCATE(s1,s),POSITION(s1 IN s)从字符串s中获取s1的开始位置SELECT LOCATE(‘b’, ‘abc’) ?C 2
INSTR(s,s1)从字符串s中获取s1的开始位置SELECT INSTR(‘abc’,‘b’) ?C 2
REVERSE(s)将字符串s的顺序反过来SELECT REVERSE(‘abc’) ?C cba
ELT(n,s1,s2,…)返回第n个字符串SELECT ELT(2,‘a’,‘b’,‘c’) ?C b
FIELD(s,s1,s2…)返回第一个与字符串s匹配的字符串位置SELECT FIELD(‘c’,‘a’,‘b’,‘c’) ?C 3
FIND_IN_SET(s1,s2)返回在字符串s2中与s1匹配的字符串的位置

1

-- 字符串函数SELECT CHAR_LENGTH('我们的征途是星辰和大海')   -- 字符串的长度SELECT CONCAT('我','爱','猫猫')        -- 拼接字符串SELECT INSERT('我爱编程helloworld',1,2,'超级热爱')  -- 查询,从某个位置开始替换某个长度SELECT LOWER('MaoMao')   -- 小写字母SELECT UPPER('maomao')   -- 全变大写SELECT INSTR('maonmao','n')  -- 返回第一次出现的子串的索引SELECT REPLACE('猫猫说坚持就能成功','坚持','努力')   -- 替换出现的指定字符串SELECT SUBSTR('猫猫说坚持就能成功',4,3)   -- 返回指定的子字符串 (源字符串,截取的位置,截取的长度)SELECT REVERSE('猫猫说坚持就能成功')    -- 反转-- 查询有田的同学,将田改成猪SELECT REPLACE(studentname,'田','猪') FROM studentWHERE studentname LIKE '%田'

函数作用例子
CURDATE();CURRENT_DATE()返回当前日期SELECT CURDATE()?C> 2021-01-09
NOW()返回当前日期和时间SELECT NOW()?C> 2021-01-09 10:03:14
LOCALTIME()返回当前日期和时间SELECT LOCALTIME()?C> 2021-01-09 10:03:14
UNIX_TIMESTAMP()以UNIX时间戳的形式返回当前时间SELECT UNIX_TIMESTAMP()->1617977084

1

-- 时间和日期函数(记住)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()

聚合函数

函数名称描述
COUNT()计数
SUM()求和
AVG()平均值
MAX()最大值
MIN()最小值

1

2

-- ================ 聚合函数 ============-- 都能够统计 表中的数据 (想查询一个表中有多少个记录,就是用这个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加密

什么是MD5

主要增强算法复杂度和不可逆性

MD5 不可逆,具体值的md5是一样的

MD5 破解网站的原理,背后有一个字典,MD5加密后的值:MD5加密前的值

1

2

3

4

5

-- ====================  测试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教程(视频)

以上就是MySQL函数介绍数据库应用的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

mysql函数 的相关讲解

mysql函数介绍数据库应用

mysql练习之3:mysql函数的使用

更多相关阅读请进入《数据库应用》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...