MySQL常見函數總結

數據函數

 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('KuangShen'); /*小寫*/
 SELECT UPPER('KuangShen'); /*大寫*/
 SELECT LEFT('hello,world',5);   /*從左邊截取*/
 SELECT RIGHT('hello,world',5);  /*從右邊截取*/
 SELECT REPLACE('狂神說堅持就能成功','堅持','努力');  /*替換字符串*/
 SELECT SUBSTR('狂神說堅持就能成功',4,6); /*截取字符串,開始和長度*/
 SELECT REVERSE('狂神說堅持就能成功'); /*反轉
 
 -- 查詢姓周的同學,改成鄒
 SELECT REPLACE(studentname,'周','鄒') AS 新名字
 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 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的記錄條數。

下面它們之間的一些對比:

1)在表沒有主鍵時,count(1)比count()快
2)有主鍵時,主鍵作爲計算條件,count(主鍵)效率最高;
3)若表格只有一個字段,則count(
)效率較高。
*/

SELECT SUM(StudentResult) AS 總和 FROM result;
SELECT AVG(StudentResult) AS 平均分 FROM result;
SELECT MAX(StudentResult) AS 最高分 FROM result;
SELECT MIN(StudentResult) AS 最低分 FROM result;

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)            -- 絕對值 abs(-10.9) = 10
 format(x, d)    -- 格式化千分位數值 format(1234567.456, 2) = 1,234,567.46
 ceil(x)            -- 向上取整 ceil(10.1) = 11
 floor(x)        -- 向下取整 floor (10.1) = 10
 round(x)        -- 四捨五入去整
 mod(m, n)        -- m%n m mod n 求餘 10%3=1
 pi()            -- 獲得圓周率
 pow(m, n)        -- m^n
 sqrt(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_str
 instr(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開頭,直到字串長度爲length
 ltrim(string)            -- 去除前端空格
 repeat(string, count)    -- 重複count次
 rpad(string, length, pad)    --在str後用pad補充,直到長度爲length
 rtrim(string)            -- 去除後端空格
 strcmp(string1 ,string2)    -- 逐字符比較兩字串大小
 
 -- 聚合函數
 count()
 sum();
 max();
 min();
 avg();
 group_concat()
 
 -- 其他常用函數
 md5();
 default();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章