2.聚合函数(常用)
函数名称 | 描述 |
---|---|
COUNT() | 计数 |
SUM() | 求和 |
AVG() | 平均值 |
MAX() | 最大值 |
MIN() | 最小值 |
… |
区别:
从含义上讲,count(1) 与 count(*) 都表示对全部数据行的查询。
count(字段) 会统计该字段在表中出现的次数,忽略字段为null 的情况。即不统计字段为null 的记录。
count(*) 包括了所有的列,相当于行数,在统计结果的时候,包含字段为null 的记录;
count(1) 用1代表代码行,在统计结果的时候,包含字段为null 的记录 。
下面它们之间的一些对比:
1)在表没有主键时,count(1)比count()快
2)有主键时,主键作为计算条件,count(主键)效率最高;
3)若表格只有一个字段,则count()效率较高。
3.数据库级别的MD5加密
什么是MD5?
主要增强算法复杂度和不可逆性。
MD5不可逆,具体的值的md5是一样的
MD5破解网站的原理,背后有一个字典,MD5加密后的值,加密的前值
-- ====测试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,'djeiej','123456')
-- 加密
UPDATE testmd5 SET pwd=MD5(pwd)
INSERT INTO testmd5 VALUES(2,'djefffiej','123456')
-- 插入的时候加密
INSERT INTO testmd5 VALUES(3,'ffas',MD5('33321'))
-- 如何校验:将用户传递进来的密码,进行MD5加密,然后比对加密后二点值
SELECT * FROM testmd5 WHERE `name`='ffas' AND pwd=MD5('33321')