1. 程式人生 > 實用技巧 >MySql 函式 (5)

MySql 函式 (5)

官網: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');