數據函數
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();