2021-02-20

MySQL学习04(DQL查询)

MySQL函数

常用函数

官方文档 : https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html

数据函数

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

字符串函数

SELECT CHAR_LENGTH('今天天气真好'); /*返回字符串包含的字符数*/SELECT CONCAT('我','爱','程序');  /*合并字符串,参数可以有多个*/SELECT INSERT('我爱编程helloworld',1,2,'超级热爱');  /*替换字符串,从某个位置开始替换某个长度*/SELECT LOWER('dgDSssssa'); /*小写*/SELECT UPPER('aassfdf'); /*大写*/SELECT LEFT('hello,world',5);  /*从左边截取*/SELECT RIGHT('hello,world',5);  /*从右边截取*/SELECT REPLACE('坚持就能成功','坚持','努力');  /*替换字符串*/SELECT SUBSTR('坚持就能成功',4,6); /*截取字符串,开始和长度*/SELECT REVERSE('坚持就能成功'); /*反转

日期和时间函数

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());

系统信息函数

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

聚合函数

函数名称描述
COUNT()返回满足Select条件的记录总和数,如 select count(*) 【不建议使用 *,效率低】
SUM()返回数字字段或表达式列作统计,返回一列的总和。
AVG()通常为数值字段或表达列作统计,返回一列的平均值
MAX()可以为数值字段,字符字段或表达式列作统计,返回最大的值。
MIN()可以为数值字段,字符字段或表达式列作统计,返回最小的值。
/*COUNT:非空的*/                SELECT COUNT(studentname) FROM student;          SELECT COUNT(*) FROM student;            SELECT COUNT(1) FROM student;  /*推荐*/          

从含义上讲,count(1)count(*) 都表示对全部数据行的查询。

  • count(字段) 会统计该字段在表中出现的次数,忽略字段为null 的情况。即不统计字段为null的记录。
  • count(*) 包括了所有的列,相当于行数,在统计结果的时候,包含字段为null 的记录
  • count(1) 用1代表代码行,在统计结果的时候,包含字段为null 的记录 。

很多人认为count(1)执行的效率会比count(*)高,原因是count(*)会存在全表扫描,而count(1)可以针对一个字段进行查询。其实不然,count(1)和count(*)都会对全表进行扫描,统计所有记录的条数,包括那些为null的记录,因此,它们的效率可以说是相差无几。而count(字段)则与前两者不同,它会统计该字段不为null的记录条数。

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

MD5 加密

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。

实现数据加密

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=utf8INSERT INTO testmd5 VALUES(1,'xiao','123456'),(2,'ming','456789') 

有如上数据,现在我们对其所有密码加密

update testmd5 set pwd = md5(pwd); 

如果单独对某个用户的密码进行加密

INSERT INTO testmd5 VALUES(3,'hong','123456')update testmd5 set pwd = md5(pwd) where name = 'hong';

也可以在插入数据的时候直接加密

INSERT INTO testmd5 VALUES(4,'gang',md5('123456')); 

如果要做登录判断,可以直接对加密后的密码进行比对即可。

SELECT * FROM testmd5 WHERE `name`='gang' AND pwd=MD5('123456'); 

小结

-- 数值函数abs(x)       -- 绝对值 abs(-10.9) = 10format(x, d)   -- 格式化千分位数值 format(1234567.456, 2) = 1,234,567.46ceil(x)       -- 向上取整 ceil(10.1) = 11floor(x)     -- 向下取整 floor (10.1) = 10round(x)     -- 四舍五入去整mod(m, n)     -- m%n m mod n 求余 10%3=1pi()       -- 获得圆周率pow(m, n)     -- m^nsqrt(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_strinstr(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开头,直到字串长度为lengthltrim(string)       -- 去除前端空格repeat(string, count)   -- 重复count次rpad(string, length, pad)   --在str后用pad补充,直到长度为lengthrtrim(string)       -- 去除后端空格strcmp(string1 ,string2)   -- 逐字符比较两字串大小-- 聚合函数count()sum();max();min();avg();group_concat()-- 其他常用函数md5();default();









原文转载:http://www.shaoqun.com/a/571576.html

跨境电商:https://www.ikjzd.com/

pocket:https://www.ikjzd.com/w/1903

acca是什么:https://www.ikjzd.com/w/1370


MySQL函数常用函数官方文档:https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html数据函数SELECTABS(-8);/*绝对值*/SELECTCEILING(9.4);/*向上取整*/SELECTFLOOR(9.4);/*向下取整*/SELECTRAND();/*随机数,返回一个0-1之间的随机数*/SELECTSIG
patents:https://www.ikjzd.com/w/857
勤商网:https://www.ikjzd.com/w/2219
阿里巴巴 批发:https://www.ikjzd.com/w/1084
Prime Day亚马逊定价系统出意外1.3 万美元的佳能镜头以 94.48美元卖出:https://www.ikjzd.com/home/101675
2019站内外Deal详解:https://www.ikjzd.com/home/19378
姐夫加大封号力度?原来是这几个原因……:https://www.ikjzd.com/home/127997

No comments:

Post a Comment