官方文檔 : 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
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();