目录
5、Mysql函数
5.1、常用函数
-- ===================常用函数=================
-- 数学运算
select abs(-8) -- 绝对值
select ceiling(9.8) -- 向上取整
select floor(9.8) -- 向下取整
select rand() -- 返回一个0~1之间的随机数
select sign() -- 返回一个数的符号 0返回0,负数返回-1,正数返回1
-- 字符串函数
select char_length('那女孩对我说') -- 字符串长度
select concat('他','不懂','我的心') -- 拼接字符串
select insert('怎么大风越狠','3','2','大雨') -- 从某个位置开始替换某个长度
select lower('qweFGGHiiHJIyuio') -- 小写字母
select upper('wertyuJIO') -- 大写字母
select instr('狼狈比失去难受' ,'难') -- 返回第一次出现的字串的索引
select replace('听见,冬天的离开','离开' , '到来') -- 替换出现的指定字符串
select substr('坚持总会有结果','3','4') -- 返回指定的字串(原字符串,截取的位置,截取的长度)
select reverse('天外来物一样') -- 反转
-- 查询姓 孙 的同学,将名字改成 邹
select replace(`userName`,'孙','邹') from `smbms_user`
where `userName` like '孙%'
-- 时间和日期函数
select current_date()-- 获取当前日期
select curdate() -- 获取当前日期
select now() -- 获取当前时间
select localtime() -- 本地时间
select sysdate() -- 本地时间
-- 系统
select system_user() -- 系统使用者
select user()
select version() -- mysql版本
5.2、聚合函数
函数名称 | 描述 |
COUNT() | 计数 |
SUM() | 求和 |
AVG() | 求平均值 |
MAX() | 求最大值 |
MIN() | 求最小值 |
…… | …… |
-- ==============聚合函数===================
-- 都能够统计 表中的数据(想查询一个表中有多少个记录,就使用Count())
select count(`userName`) from `smbms_user` -- Count(字段),会忽略所有的NULL值
select count(*) from `smbms_user` -- Count(*) , 不会忽略NULL值 ,计算行数
select count(1) from `smbms_role` -- count(1) , 不会忽略所有的null值,计算行数
select sum(`productCount`) as 总金额 from `smbms_bill`
select avg(`productCount`) as 平均价 from `smbms_bill`
select max(`productCount`) as 最高价格 from `smbms_bill`
SELECT min(`productCount`) AS 最低价格 FROM `smbms_bill`
5.3、数据库级别的MD5加密(拓展)
什么是MD5?
MD5主要增强了算法复杂度和不可逆性
MD5不可逆,具体的值的MD5是一样的
MD5破解网站的原理,背后有一个“字典”,MD5加密后的值,加密前的值
-- ================测试MD5 加密==============
CREATE TABLE `testmd5`(
`id` INT(4) NOT NULL,
`name` VARCHAR(20) NOT NULL,
`pwd` VARCHAR(60) NOT NULL,
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET = utf8
-- 明文密码
INSERT INTO `testmd5` VALUE (1,'张三','123456'),(2,'李四','123456'),(3,'王五','123456')
-- 加密
UPDATE `testmd5` SET `pwd`=MD5(`pwd`) WHERE `id`=1
UPDATE `testmd5` SET `pwd`=MD5(`pwd`) -- 加密全部的密码
-- 插入的时候进行加密
INSERT INTO `testmd5` VALUE (4,'小明',MD5('123456'))
-- 如何校验:将用户传递进来的密码进行MD5加密,比较加密后的值
SELECT * FROM `testmd5` WHERE `name`='小明' AND `pwd`=MD5('123456')