MySql 函式 (5)
阿新 • • 發佈:2020-08-25
官網:https://dev.mysql.com/doc/refman/5.7/en/sql-function-reference.html
5.1 常用函式
-- =============================常用函式===========================
-- 數學函式
select ABS(-8); -- 絕對值 8
select CEILING(9.4); -- 向上取整 10
select FLOOR(9,4); -- 向下取整 9
select RAND(); -- 0-1的一個隨機數
select SIGN(10); -- 判斷一個數的符號, 0-0, 負數- -1, 正數 - 1
-- 字串函式
select CHAR_LENGTH('今天是七夕節') -- 檢視字元長度 6
select CONCAT('我','愛','cl'); -- 拼接字串 我愛cl
select INSERT('我愛曹某人',1,2,'超級熱愛'); -- 插入,替換 在起始位置 1,替換字元長度2 超級熱愛曹某人
select LOWER('Yuan') -- 轉小寫 yuan
select UPPER('Yuan') -- 轉大寫 YUAN
select INSTR('Yuan','a') -- 返回第一次出現的字串的索引 3
select REPLACE('堅持就能成功','堅持','努力') -- 替換出出現的指定字串 努力就會成功
select SUBSTR('堅持就能成功',4,6) -- 擷取第四個字元開始的6個長度 成功
select REVERSE('堅持就能成功') -- 反轉 功成能就持堅
-- 查詢行張的同學改為姓王
select REPLACE(studentName,'張','王') from student where studentName like '張%';
-- 時間和日期函式
select CURRENT_DATE(); -- 獲取當前日期
select CURDATE(); -- 獲取當前日期
select NOW(); -- 獲取當前時間
select LOCALTIME(); -- 獲取本地時間
select SYSDATE(); -- 獲取系統時間
select YEAR(NOW());
select MONTH(NOW());
select DAY(NOW());
select HUOR(NOW());
select MINUTE(NOW());
select SECOND(NOW());
-- 系統
select SYSTEM_USER(); -- 當前使用者
select USER(); -- 當前使用者
select VERSION(); -- 系統版本
5.2 聚合函式
函式名稱 | 描述 |
---|---|
COUNT() | 記數 |
SUM() | 求和 |
MAX() | 最大值 |
MIN() | 最小值 |
AVG() | 平均值 |
... | ... |
-- ==========================聚合函式=========================
-- 都能夠統計,表中的資料
select COUNT(`studentName`) from student; -- count(欄位) 會忽略所有null 值
select COUNT(*) from student; -- count(*) 不會忽略null值 本質=計算函式
select COUNT(1) from student; -- count(1) 不會忽略null值 本質=計算函式
select SUM(`studentResult`) AS 總和 from student;
select AVG(`studentResult`) AS 平均分 from student;
select MAX(`studentResult`) AS 最高分 from student;
select MIN(`studentResult`) AS 最低分 from student;
5.3 資料庫級別的MD5加密(拓展)
什麼是MD5?
主要增強演算法複雜度和不可逆。
MD5不可逆,具體的值的md5是一樣的
MD5破解網站的原理,背後有一個字典,md5加密後的值,加密前的值
-- =====================測試MD5 加密====================
create table `testmd5`(
`id` int(11) not null auto_increment commit '學號',
`name` varchar(255) not null commit '名字',
`pwd` varchar(255) not null commit '密碼',
primary key (`id`)
)ENGING=INNODB DEFAULT CHARSET=utf8;
-- 明文密碼
insert into testmd5 values (1,'zhang','123'),(2,'wang','456');
-- 加密
update testmd5 set pwd = MD5(pwd) where id = 1;
update testmd5 set pwd = MD5(pwd); -- 加密所有
-- 插入的時候加密
insert into testmd5 values (3,'zhang',MD5('123'));
-- 如何校驗 將使用者傳遞進來的密碼,進行MD5 加密,然後對比加密後的值
select * from testmd5 where name = 'zhang' and pwd = MD5('123');