日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MYSQL常用函数以及分组操作

發(fā)布時(shí)間:2024/4/15 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MYSQL常用函数以及分组操作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
SELECT CONVERT("234",SIGNED); SELECT CAST("123" AS SIGNED); SELECT "124"+0;SELECT LENGTH("姜浩真帥!");SELECT ABS(-1);SELECT CONCAT("123","456","7890");SELECT LEFT("abcdef")SELECT REPLACE("姜浩真帥","","特別")SELECT CAST("123" AS SIGNED)

ABS(X) 返回X的絕對(duì)值
CEIL(X) 向上取整? 1.5->2 -1.5->-1
FLOOR(X) 向下取整? 1.5->1 -1.5->-2
ROUND(X) 四舍五入取整
ROUND(X,D) 將X保留D位小數(shù),進(jìn)行四舍五入
`TRUNCATE`(X,D) 將X保留D位小數(shù),不進(jìn)行四舍五入
RAND() 返回隨機(jī)數(shù)
SIN(X) 返回x的符號(hào),x是負(fù)數(shù)、0、正數(shù)分別返回-1、0、1 SELECT SIGN(-10)--(-1)
POW(X,Y)? 返回x的y次冪
PI() 返回圓周率

[字符串函數(shù)]
LENGTH(str)? 返回字符串的長度,其中一個(gè)中文占三個(gè)長度
CHAR_LENGTH(str) 返回字符串的字符數(shù),其中一個(gè)中文只占一個(gè)字符
CONCAT(str1,str2,...) 拼接多個(gè)字符串
UPPER(str) 將字符串全部轉(zhuǎn)為大寫
LOWER(str) 將字符串全部轉(zhuǎn)為小寫
LEFT(str,n) 返回字符串的前N個(gè)字符
RIGHT(str,n) 返回字符串的后N個(gè)字符
TRIM(str) 去掉str左右兩邊的空格
REPLACE(str,s1,a2); 將字符串中所有的s1換成a2
SUBSTRING(str,pos[,len])截取字符串str 從pos個(gè)字符開始,截取len個(gè),如果省略len,則截取到最后
INSTR(s1,s2) 返回s1在字符串中的下標(biāo)

[字符串轉(zhuǎn)數(shù)字格式]


[常用日期函數(shù)]
CURDATE();返回當(dāng)前日期? 2017-06-20
CURTIME(); 返回當(dāng)前時(shí)間? 09:52:52
NOW(); 返回當(dāng)前的日期和時(shí)間 2017-06-20 09:53:45
DATEDIFF(date1,date2) 返回date1和date2之間的間隔天數(shù)
ADDDATE(datetime1,days) 返回datetime1加上days天后的日期
MONTH() 返回日期中的月份
YEAR() 返回日期中的年份
DAY() 返回日期中一個(gè)月中的第幾天
WEEKDAY() 返回一周中的第幾天,0 -> 周一
HOUR() 返回小時(shí)數(shù)
MINUTE() 返回分鐘數(shù)
SECOND() 返回秒數(shù)

DATE_FORMAT(date,format) 將date使用format要求的格式顯示

format中可用的占位符格式:

%Y年份, 數(shù)字形式,4位數(shù)
%y年份, 數(shù)字形式 (2位數(shù))

%M月份名稱 (January..December)
%m月份, 數(shù)字形式 (00..12)
%b月份的縮寫名稱? (Jan..Dec)
%c月份,數(shù)字形式(0..12)

%D帶有英語后綴的該月日期? (0th, 1st, 2nd, 3rd, ...)
%d該月日期, 數(shù)字形式 (00..31)
%e該月日期, 數(shù)字形式(0..31)
?
%H小時(shí)(00..23)
%h小時(shí)(01..12)
%k小時(shí)(0..23)
%l小時(shí)(1..12)
?
%i分鐘,數(shù)字形式 (00..59)

%S秒 (00..59)
%s秒 (00..59)
?
%W工作日名稱 (周日..周六)
%w一周中的每日 (0=周日..6=周六)

SELECT CURDATE(); SELECT CURTIME(); SELECT NOW(); SELECT DATEDIFF("2017-06-21","2017-06-23"); SELECT ADDDATE(NOW(),100); SELECT MONTH()

【系統(tǒng)信息函數(shù)】
VERSION() 取到當(dāng)前數(shù)據(jù)庫的版本號(hào)
DATABASE() 返回當(dāng)前數(shù)據(jù)庫的名字
USER() 返回當(dāng)前數(shù)據(jù)庫的用戶
CONNECTION_ID() 返回服務(wù)器的連接數(shù)
CHARSET(str) 返回字符串的字符集
LAST_INSERT_ID() 返回最后一個(gè)auto_increment的值

[加密函數(shù)]
1、PASSWORD() 對(duì)字符串進(jìn)行加密,常用于加密密碼
2、MD5():對(duì)字符串進(jìn)行MD5散列加密,常用于不需要解密的數(shù)據(jù)
3、ENCODE(str,pwd) 使用加密密碼pwd對(duì)字符串str進(jìn)行加密,加密之后的結(jié)果為二進(jìn)制,該字段需要使用BLOB類型保存
?? DECODE(mistr,pwd) 將ENCODE加密的二進(jìn)制進(jìn)行解密,解密密碼需要與ENCODE的加密密碼一致

SELECT PASSWORD("jianghao")SELECT ENCODE("juianghao","pwd"); SELECT DECODE(ENCODE("juianghao","pwd"),"pwd");SELECT DATE_FORMAT("2017-06-20 09:53:45","%Y")UPDATE `Card` SET `PASSWORD` = REPLACE(REPLACE(`PASSWORD`,"O","0"),"i","1");INSTR(ListNumber,"-"); LEFT(ListNumber,INSTR(ListNumber,"-")-1); SUBSTRING(ListNumber,INSTR(ListNumber,"-")+1);SELECT * FROM SellRecord ORDER BY LEFT(ListNumber,INSTR(ListNumber,"-")-1)+0 DESC,SUBSTRING(ListNumber,INSTR(ListNumber,"-")+1),DESC;

?[多行函數(shù)]
SUM(expr) 求和 SELECT SUM(age) FROM tb1;
AVG();求平均值 SELECT AVG(age) FROM tb1;
MIN(expr); 求最小值
MAX(expr);求最大值
COUNT(1);? 求總個(gè)數(shù) SELECT COUNT(*) FROM tb1

USE mydb; SELECT * FROM tb1; SELECT COUNT(*) FROM tb1SELECT SUM(age) FROM tb1;SELECT AVG(age) FROM tb1 GROUP BY sex HAVING AVG(age)>1;

{分組操作}
GROUP BY ----FROM <表名>
WIERE
GROUP BY
HAVING
上述代碼執(zhí)行難執(zhí)行流程
1線 SELECT.....FROM? 查詢所有數(shù)據(jù)
② 使用where 將數(shù)據(jù)源進(jìn)行帥選
③ 對(duì)wher帥選后的數(shù)據(jù),使用GTOUP BY進(jìn)行分組
?? 分組后,使用聚合函數(shù),將會(huì)產(chǎn)生n條數(shù)據(jù)
④ HAVING字句對(duì)產(chǎn)生的多條聚合數(shù)據(jù),進(jìn)行處理操作
注意事項(xiàng)
① 代碼順序必須是? WHERE GROUP BY? HAVING
② 有HAVING字句。必須有g(shù)roup BY,有g(shù)roup BY 并不一定有HAVING
③ WHERE和 HAVING 的區(qū)別

WHERE實(shí)在分組之前先篩選數(shù)據(jù)。HAVING是對(duì)分組后的數(shù)據(jù),新型篩選,農(nóng)行訂單
? HAVING語句中一定不能包含就、?函數(shù),having 是專門用來過濾
-- 求出,平進(jìn)均薪資大于1萬,門對(duì)的平均薪資
-- 注 各部門只統(tǒng)計(jì)出勤率大于15天的員工
SELECT AVG(薪資)? FROM 公司表 WHERE 出勤率>15
GROUP BY 部門 HAVING AVG(薪資)>10000;

[表連接]

?使用WHERE進(jìn)行多表連接
?與內(nèi)連接一致
USE mydb;
SELECT i.cusname"客戶名稱",o.ordmoney"訂單總額" -- 多表關(guān)聯(lián),字段前必須有表名
FROM cusorder AS o,cusinfo as i-- 為方便書寫,給表起別名
WHERE o.cusno = i.cusno -- 兩張表通過那個(gè)鍵關(guān)聯(lián)


?內(nèi)連接
?特點(diǎn) 相關(guān)聯(lián)的兩張表,總是以數(shù)據(jù)少的為準(zhǔn),另一張表中沒有被匹配的行,會(huì)被刪除不顯示
USE mydb;
SELECT i.cusname"客戶名稱",o.ordmoney"訂單總額" -- 多表關(guān)聯(lián),字段前必須有表名
FROM cusorder AS o INNER JOIN cusinfo as i-- 為方便書寫,給表起別名
ON o.cusno = i.cusno -- 兩張表通過那個(gè)鍵關(guān)聯(lián)
?
左鏈接 LEFT JOIN
特點(diǎn) 以左邊的表為準(zhǔn),
把左表的全部數(shù)據(jù)顯示,右表多的刪除不顯示,右表少的補(bǔ)null
USE mydb;
SELECT i.cusname"客戶名稱",o.ordmoney"訂單總額" -- 多表關(guān)聯(lián),字段前必須有表名
FROM cusorder AS o LEFT JOIN? cusinfo as i-- 為方便書寫,給表起別名
ON o.cusno = i.cusno -- 兩張表通過那個(gè)鍵關(guān)聯(lián)

右鏈接 right JOIN
特點(diǎn) 以右邊的表為準(zhǔn),
把右表的全部數(shù)據(jù)顯示,左表多的刪除不顯示,左表少的補(bǔ)null
USE mydb;
SELECT i.cusname"客戶名稱",o.ordmoney"訂單總額" -- 多表關(guān)聯(lián),字段前必須有表名
FROM cusorder AS o RIGHT JOIN cusinfo as i-- 為方便書寫,給表起別名
ON o.cusno = i.cusno -- 兩張表通過那個(gè)鍵關(guān)聯(lián)

自連接 同一張表與自己鏈接
USE mydb;
SELECT e1.ename,e2.ename
FROM emp e1 LEFT JOIN emp e2
ON e1.mgr = e2.empno;
[限制行數(shù)]
LIMIT n 表示的前N條數(shù)據(jù),相當(dāng)于LIMIT 0,n
LIMIT n,m 第n+1 到 第m條

SELECT * FROM tb1 LIMIT 0,5;

@page = 1; -- 第幾頁
@rows = 5; -- 每頁幾條
分頁語句

SELECT * FROM cusborder LIMIT @rows*(@page-1),@rows*@page;

各種限制語句的順序

SELECT * FROM cusorder WHERE NOT ISNULL(ordno) GROUP BY ordno HAVING SUM(ordmoney)>0 ORDER BY ordmoney DESC LIMIT 0,10;

?



轉(zhuǎn)載于:https://www.cnblogs.com/LJYqq/p/7077952.html

總結(jié)

以上是生活随笔為你收集整理的MYSQL常用函数以及分组操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。