MySQL學習05(MySQL函數)

MySQL函數

經常使用函數

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

數據函數

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的記錄條數。mysql

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

MD5 加密

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用於確保信息傳輸完整一致。是計算機普遍使用的雜湊算法之一(又譯摘要算法、哈希算法),主流編程語言廣泛已有MD5實現。將數據(如漢字)運算爲另外一固定長度值,是雜湊算法的基礎原理,MD5的前身有MD二、MD3和MD4。算法

實現數據加密sql

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,'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) = 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();
相關文章
相關標籤/搜索