数据函数
SELECT ABS(-8);
SELECT CEILING(9.4);
SELECT FLOOR(9.4);
SELECT RAND();
SELECT SIGN(0);
SELECT IF(条件,true,false)
例如 找出学生表中男女个数并显示
select count(1),IF(student.sex=1,'男','女') from student GROUP BY sex
使用Sum()聚合函数完成
select sum(sex = 1) 男,sum(sex = 0) 女 from student;
inspLotDate字段的从 8月1日到八月31日
DATE_FORMAT自动判断最小最大
DATE_FORMAT( inspLotDate, "%Y-%m" ) >= DATE_FORMAT( '2021-08-01 00:00:00.0', "%Y-%m" )
and
DATE_FORMAT( inspLotDate, "%Y-%m" ) <= DATE_FORMAT( '2021-08-01 00:00:00.0', "%Y-%m" )
字符串函数
SELECT CHAR_LENGTH('狂神说坚持就能成功');
SELECT CONCAT('我','爱','程序');
SELECT INSERT('我爱编程helloworld',1,2,'超级热爱');
SELECT LOWER('KuangShen');
SELECT UPPER('KuangShen');
SELECT LEFT('hello,world',5);
SELECT RIGHT('hello,world',5);
SELECT REPLACE('狂神说坚持就能成功','坚持','努力');
SELECT SUBSTR('狂神说坚持就能成功',4,6);
SELECT REVERSE('狂神说坚持就能成功');
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());
系统信息函数
SELECT VERSION();
SELECT USER();
聚合函数
函数名称
描述
COUNT()
返回满足Select条件的记录总和数,如 select count(*) 【不建议使用 *,效率低】
SUM()
返回数字字段或表达式列作统计,返回一列的总和。
AVG()
通常为数值字段或表达列作统计,返回一列的平均值
MAX()
可以为数值字段,字符字段或表达式列作统计,返回最大的值。
MIN()
可以为数值字段,字符字段或表达式列作统计,返回最小的值。
group_concat()
将一个查到的一个字段全部拼接并以逗号隔开
聚合函数
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;
题目:
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;
MD5 加密
一、MD5简介
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。
二、实现数据加密
新建一个表 testmd5
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,'kuangshen','123456'),(2,'qinjiang','456789')
如果我们要对pwd这一列数据进行加密,语法是:
update testmd5 set pwd = md5(pwd);
如果单独对某个用户(如kuangshen)的密码加密:
INSERT INTO testmd5 VALUES(3,'kuangshen2','123456')
update testmd5 set pwd = md5(pwd) where name = 'kuangshen2';
插入新的数据自动加密
INSERT INTO testmd5 VALUES(4,'kuangshen3',md5('123456'));
查询登录用户信息(md5对比使用,查看用户输入加密后的密码进行比对)
SELECT * FROM testmd5 WHERE `name`='kuangshen' AND pwd=MD5('123456');
小结
内置函数
数值函数
abs(x)
format(x, d)
ceil(x)
floor(x)
round(x)
mod(m, n)
pi()
pow(m, n)
sqrt(x)
rand()
truncate(x, d)
now(), current_timestamp();
current_date();
current_time();
date('yyyy-mm-dd hh:ii:ss');
time('yyyy-mm-dd hh:ii:ss');
DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%S');
date_format('yyyy-mm-dd hh:ii:ss', '%d %y %a %d %m %b %j');
unix_timestamp();
from_unixtime();
length(string)
char_length(string)
substring(str, position [,length])
replace(str ,search_str ,replace_str)
instr(string ,substring)
concat(string [,...])
charset(str)
lcase(string)
left(string, length)
load_file(file_name)
locate(substring, string [,start_position])
lpad(string, length, pad)
ltrim(string)
repeat(string, count)
rpad(string, length, pad)
rtrim(string)
strcmp(string1 ,string2)
count()
sum();
max();
min();
avg();
group_concat(字段) 将这个字段拼接
md5(字段); 对一个字段进行加密
default();