MySQL函数

1、常用函数

数据函数

SELECT ABS(-8); /*绝对值*/
SELECT CEILING(9.4); /*向上取整*/
SELECT FLOOR(9.4); /*向下取整*/
SELECT RAND(); /*随机数,返回一个0-1之间的随机数*/
SELECT SIGN(0); /*符号函数: 负数返回-1,正数返回1,0返回0*/

 

MySQL函数

字符串函数

SELECT CHAR_LENGTH(寇大大); /*返回字符串包含的字符数*/
SELECT CONCAT(,,); /*合并字符串,参数可以有多个*/
SELECT INSERT(爱辽深木闭烟霞,1,2,best); /*替换字符串,从某个位置开始替换某个长度*/
SELECT LOWER(Koudada); /*小写*/
SELECT UPPER(Koudada); /*大写*/
SELECT LEFT(hello,world,5); /*从左边截取*/
SELECT RIGHT(hello,world,5); /*从右边截取*/
SELECT REPLACE(寇门贤良宰相家,清泊清霜冰上加,海天一色博游客); /*替换字符串*/
SELECT SUBSTR(寇门贤良宰相家,4,6); /*截取字符串,开始和长度*/
SELECT REVERSE(寇门贤良宰相家); /*反转
-- 查询姓寇的同学,改成何
SELECT REPLACE(studentname,‘寇‘,‘何‘) AS 新名字
FROM student WHERE studentname LIKE ‘寇%‘;

 

MySQL函数

日期和时间函数

SELECT CURRENT_DATE(); /*获取当前日期*/
SELECT CURDATE(); /*获取当前日期*/
SELECT NOW(); /*获取当前日期和时间*/
SELECT LOCALTIME(); /*获取当前日期和时间*/
SELECT SYSDATE(); /*获取当前日期和时间*/
-- 获取年月日,时分秒
SELECT YEAR(NOW());
SELECT MONTH(NOW());
SELECT DAY(NOW());
SELECT HOUR(NOW());
SELECT MINUTE(NOW());
SELECT SECOND(NOW());

 

MySQL函数

系统信息函数

SELECT VERSION(); /*版本*/
SELECT USER(); /*用户*/

 

MySQL函数

2、聚合函数

MySQL函数MySQL函数?

-- 聚合函数
/*COUNT:非空的*/
SELECT COUNT(studentname) FROM student;
SELECT COUNT(*) FROM student;
SELECT COUNT(1) FROM student; /*推荐*/
SELECT SUM(StudentResult) AS 总和 FROM result;
SELECT AVG(StudentResult) AS 平均分 FROM result;
SELECT MAX(StudentResult) AS 最高分 FROM result;
SELECT MIN(StudentResult) AS 最低分 FROM result;

 

MySQL函数

从含义上讲,count(1) 与 count(*) 都表示对全部数据行的查询。下面它们之间的一些对比:

  • 在表没有主键时,count(1)比count(*)快
  • 有主键时,主键作为计算条件,count(主键)效率最高;
  • 若表格只有一个字段,则count(*)效率较高。

查询不同课程的平均分,最高分,最低分

SELECT subjectname,AVG(studentresult) AS 平均分,MAX(StudentResult) AS 最高
分,MIN(StudentResult) AS 最低分
FROM result AS r
INNER JOIN `subject` AS s
ON r.subjectno = s.subjectno
GROUP BY r.subjectno
HAVING 平均分>80;
/*
where写在group by前面.
要是放在分组后面的筛选
要使用HAVING..
因为having是从前面筛选的字段再筛选,而where是从数据表中的>字段直接进行的筛选的
*/

 

MySQL函数

MD5 加密

实现数据加密

新建一个表 testmd

CREATE TABLE `testmd` (
`id` INT(4) NOT NULL,
`name` VARCHAR(20) NOT NULL,
`pwd` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8

 

MySQL函数

插入一些数据

INSERT INTO testmd VALUES(1,koudada,123456),(2,kouxiaoxiao,456789)

 

MySQL函数

我们要对pwd这一列数据进行加密,语法是:

update testmd set pwd = md5(pwd);

 

MySQL函数

如果单独对某个用户(如koudada)的密码加密:

INSERT INTO testmd VALUES(3,koudada2,123456)
update testmd set pwd = md5(pwd) where name = koudada2;

 

MySQL函数

插入新的数据自动加密

INSERT INTO testmd VALUES(4,koudada3,md5(123456));

 

MySQL函数

查询登录用户信息

SELECT * FROM testmd WHERE `name`=koudada AND pwd=MD5(123456);

 

MySQL函数

3、小结

-- ================ 内置函数 ================
-- 数值函数
abs(x) -- 绝对值 abs(-10.9) = 10
format(x, d) -- 格式化千分位数值 format(1234567.456, 2) = 1,234,567.46
ceil(x) -- 向上取整 ceil(10.1) = 11
floor(x) -- 向下取整 floor (10.1) = 10
round(x) -- 四舍五入去整
mod(m, n) -- m%n m mod n 求余 10%3=1
pi() -- 获得圆周率
pow(m, n) -- m^n
sqrt(x) -- 算术平方根
rand() -- 随机数
truncate(x, d) -- 截取d位小数
-- 时间日期函数
now(), current_timestamp(); -- 当前日期时间
current_date(); -- 当前日期
current_time(); -- 当前时间
date(yyyy-mm-dd hh:ii:ss); -- 获取日期部分
time(yyyy-mm-dd hh:ii:ss); -- 获取时间部分
date_format(yyyy-mm-dd hh:ii:ss, %d %y %a %d %m %b %j); -- 格式化时间
unix_timestamp(); -- 获得unix时间戳
from_unixtime(); -- 从时间戳获得时间
-- 字符串函数
length(string) -- string长度,字节
char_length(string) -- string的字符个数
substring(str, position [,length]) -- 从str的position开始,取length个字符
replace(str ,search_str ,replace_str) -- 在str中用replace_str替换search_str
instr(string ,substring) -- 返回substring首次在string中出现的位置
concat(string [,...]) -- 连接字串
charset(str) -- 返回字串字符集
lcase(string) -- 转换成小写
left(string, length) -- 从string2中的左边起取length个字符
load_file(file_name) -- 从文件读取内容
locate(substring, string [,start_position]) -- 同instr,但可指定开始位置
lpad(string, length, pad) -- 重复用pad加在string开头,直到字串长度为length
ltrim(string) -- 去除前端空格
repeat(string, count) -- 重复count次
rpad(string, length, pad) --在str后用pad补充,直到长度为length
rtrim(string) -- 去除后端空格
strcmp(string1 ,string2) -- 逐字符比较两字串大小
-- 聚合函数
count()
sum();
max();
min();
avg();
group_concat()
-- 其他常用函数
md5();
default();

 

MySQL函数

MySQL函数

上一篇:SQL会先执行from语句,然后where,然后是select


下一篇:Linux - Mysql Select