最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL聚合、日期、字符串等函數(shù)深度剖析

 更新時間:2026年01月04日 11:16:50   作者:什么半島鐵盒  
本文介紹了MySQL中常用函數(shù),通過示例說明了每個函數(shù)的使用方法和應(yīng)用場景,結(jié)合實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧

MySQL系列

前言

MySQL 提供了豐富的內(nèi)置函數(shù),用于處理數(shù)據(jù)、執(zhí)行計算、轉(zhuǎn)換格式等操作,本篇將介紹MySQL中常用的一些函數(shù)。
本篇文章內(nèi)容已操作為主

這里的函數(shù)比較簡單,不再解釋了,再對其解釋就有一種強說愁的感覺了

上篇文章:MySQL 數(shù)據(jù)操作全流程:創(chuàng)建、讀取、更新與刪除實戰(zhàn)

一、聚合函數(shù)

這部分函數(shù)都比較簡單

函數(shù)名作用示例結(jié)果
SUM(col)求和SUM(amount)所有 amount 的總和
AVG(col)平均值AVG(age)平均年齡
COUNT(col)計數(shù)(忽略 NULL)COUNT(id)行數(shù)
COUNT(*)計數(shù)(包含 NULL)COUNT(*)總行數(shù)
MAX(col)最大值MAX(score)最高分數(shù)
MIN(col)最小值MIN(price)最低價格

測試表

CREATE TABLE students (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
sn INT NOT NULL UNIQUE COMMENT '學號',
name VARCHAR(20) NOT NULL,
qq VARCHAR(20)
);

create table exam_result (
id int unsigned primary key auto_increment,
name varchar(20) not null comment '同學姓名',
chinese float default 0.0 comment '語文成績',
math float default 0.0 comment '數(shù)學成績',
english float default 0.0 comment '英語成績'
);

表內(nèi)容

本篇文章主要以上面兩表做測試,上篇文章中已經(jīng)創(chuàng)建,這里直接使用

1、統(tǒng)計班級共有多少同學

select count(*) from students;

2、統(tǒng)計班級有多少 qq 號

select count(qq) from students;

對比上表可以看到count函數(shù),對于NULL值,不做統(tǒng)計。

3、統(tǒng)計本次考試的數(shù)學成績分數(shù)個數(shù)

select count(math) from exam_result;

對比上表可以看到count函數(shù),對于重復(fù)值,不做統(tǒng)計。

4、統(tǒng)計數(shù)學成績不及格人數(shù)

select count(math) from exam_result where math<60;

count函數(shù)可以配合其他語句使用。

5、統(tǒng)計平均總分

select avg(math+chinese+english) 平均總分 from exam_result ;

6、返回英語最高分

select max(english)  from exam_result ;

7、返回 > 70 分以上的數(shù)學最低分

select min(math)  from exam_result where math >70;

二、日期函數(shù)

1、獲取當前年月日

select current_date();

2、獲取當前時分秒

select current_time;

3、獲取時間戳

select current_timestamp;

4、在時間中提取日期部分

select date(current_timestamp());

5、在日期的基礎(chǔ)上加上日期

select date_add(current_date,interval 10 day);

獲取當前日期,并在該日期的基礎(chǔ)上增加十天

interval后可以根據(jù)需要使用不同單位(年、月、日、分、秒)

6、在日期的基礎(chǔ)上減去日期

select date_sub(current_date,interval 10 day);

獲取當前日期,并在該日期的基礎(chǔ)上減去十天

7、計算兩個日期之間相差多少天

select datediff(current_date,'1949-10-01');

中國成立,距今多少天

8、獲取當前日期和時間

select now();

9、測試

//創(chuàng)建一個留言表
create table msg (
id int primary key auto_increment,
content varchar(30) not null,
sendtime datetime
);
//向表中插入測試數(shù)據(jù)
insert into msg(content,sendtime) values('hello1', now());
insert into msg(content,sendtime) values('hello2', now());
select * from msg;

顯示所有留言信息,發(fā)布日期只顯示日期,不用顯示時間:

查詢在1分鐘內(nèi)發(fā)布的帖子:

可以看到日期是支持直接比較的

三、字符串函數(shù)

函數(shù)都可以配合select操作對表中的數(shù)據(jù)進行操作,這里僅對部分場景做演示

1、查看字符串的字符集

select charset(string);

2、要求顯示exam_result表中的信息,顯示格式:“XXX的語文分:XXX,數(shù)學分:XXX,英語分:XXX”

3、在字符串中查找字符串

select instr(string,substring);

string中查找字符串substring出現(xiàn)的位置,找到返回下標(從1開始),未找到返回0。

當目標字符串重復(fù)出現(xiàn)時,返回的時第一次出現(xiàn)的下標

4、字符串轉(zhuǎn)為大寫

select ucase(strig);

5、字符串轉(zhuǎn)為小寫

select lcase(string);

6、從字符串左端提取len個字符

select left(string,len);

6、從字符串右端提取len個字符

select right(string,len);

7、求字符串占用的字節(jié)數(shù)

selecty

length()函數(shù)在 MySQL 中計算的是字符串的字節(jié)長度,而不是字符個數(shù),當前所使用的字符集漢字占三個字節(jié)。

8、在字符串中進行字符串的替換 replace

select replace(substring,string,str);

substring中查找string,并將其替換為str

這種替換方式不會影響原表內(nèi)容,若未找到則不做處理

9、字符串截取 substring

select substring(string,pos,len);

從字符串stringpos處開始,向后截取len個字符。

10、去除字符串中最開始和最后的空格 trim

  • trime:去除字符串兩端空格
  • ltrim:去除字符串最左邊的空格
  • rtrim:去除字符串右邊的

在保存用戶信息數(shù)據(jù)時,一般先對數(shù)據(jù)執(zhí)行去除空格操作。由于網(wǎng)絡(luò)傳輸過程可能引入不可見空字符,若直接存儲含此類字符的數(shù)據(jù),后續(xù)用戶登錄時,比如輸入密碼因存在空格匹配不上,會引發(fā)登錄失敗問題,且排查難度極大。所以,要先過濾掉字符串中的空格,再將處理后的數(shù)據(jù)存入數(shù)據(jù)庫,以此規(guī)避因隱性空格導致的登錄故障

四、數(shù)學函數(shù)

1、abs 取絕對值

select abs(N);

2、bin 轉(zhuǎn)二進制

select bin(N);

可以看到在對小數(shù),進行二進制轉(zhuǎn)換時,會將小數(shù)進行向下取整后再操作。

3、hex 轉(zhuǎn)十六進制

select hex(N);

4、 conv 進制轉(zhuǎn)換

select conv(N,fromm_base,to_base);

將數(shù)字N,從from_base進制 轉(zhuǎn)換成 to_base進制.

5、format 格式化,保留小數(shù)

select format(N,D);

N保留D位小數(shù),處理小數(shù)部分遵循四舍五入,若小數(shù)部分不夠就補0.

6 mod 取模

select mod(x,y);

mod返回xy取模的值,這里負數(shù)取模的方式大家可以自己嘗試。
7、rand生成隨機數(shù)

select rand();

生成的數(shù)是從 0.0 ~ 1.0,若想要生成指定范圍的我們就直接 * 10n即可實現(xiàn)(如 * 10的話就是 0 ~ 10)

8、ceiling 向上取整

select ceiling(N);

可以看到向上取整,就是當存在小述部分時,去掉小鼠部分直接+1;

9、floor 向下取整

select floor(N);

五、其他函數(shù)

1、查看當前用戶 user

select user();

獲取當前連接到 MySQL 服務(wù)器的用戶信息,返回結(jié)果的格式為 用戶名@主機名'

2、database查看當前數(shù)據(jù)庫

select database();

返回當前會話中使用的數(shù)據(jù)庫名稱

3、md5 加密
在實際開發(fā)中,密碼通常不會以明文形式直接存儲在數(shù)據(jù)庫中,而 MD5 哈希算法是常用的密碼加密方案之一。其核心作用是將原始密碼通過加密計算轉(zhuǎn)換為一段固定長度(32 位)的哈希字符串,從而避免明文密碼在存儲或傳輸過程中泄露的風險。

這種加密方式,缺點很多,這個我在網(wǎng)絡(luò)傳輸部分已經(jīng)介紹了,這里就補贅述了。

4、ifnull(val1,val2)

val1NULL 時返回 val2,否則返回 val1 本身

到此這篇關(guān)于MySQL聚合、日期、字符串等函數(shù)深度剖析的文章就介紹到這了,更多相關(guān)mysql聚合日期字符串函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql 啟動1067錯誤及修改字符集重啟之后復(fù)原無效問題

    mysql 啟動1067錯誤及修改字符集重啟之后復(fù)原無效問題

    這篇文章主要介紹了mysql 啟動1067錯誤及修改字符集重啟之后復(fù)原無效問題,需要的朋友可以參考下
    2017-10-10
  • MySQL主從延遲現(xiàn)象及原理分析詳解

    MySQL主從延遲現(xiàn)象及原理分析詳解

    今天小編就為大家分享一篇關(guān)于MySQL主從延遲現(xiàn)象及原理分析詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Linux下安裝配置MySQL

    Linux下安裝配置MySQL

    mysql最流行的關(guān)系型數(shù)據(jù)庫之一,目前隸屬于oracle公司,因體積小、速度快、總體擁有成本低,開放源代碼這一特點,所以是我們?nèi)粘i_發(fā)的首選。下面我們來看看如何在Linux下安裝配置MySQL
    2017-05-05
  • mysql處理添加外鍵時提示error 150 問題的解決方法

    mysql處理添加外鍵時提示error 150 問題的解決方法

    當你試圖在mysql中創(chuàng)建一個外鍵的時候,這個出錯會經(jīng)常發(fā)生,這是非常令人沮喪的
    2011-11-11
  • Navicat連接本地MySql實現(xiàn)過程

    Navicat連接本地MySql實現(xiàn)過程

    文章介紹了在使用Navicat連接MySQL 8.0數(shù)據(jù)庫時遇到連接測試失敗的問題,并提供了解決方法,即將MySQL用戶的加密規(guī)則修改為mysql_native_password,文章步驟清晰,適合初學者參考
    2026-03-03
  • MySQL中select...for update鎖表

    MySQL中select...for update鎖表

    select…for update在MySQL中,是一種悲觀鎖的用法,一般情況下,會鎖住一行數(shù)據(jù),但如果沒有使用正確的話,也會把整張表鎖住,本文就來介紹一下,感興趣的可以了解一下
    2023-10-10
  • MySQL5.7完全卸載步驟詳解

    MySQL5.7完全卸載步驟詳解

    這篇文章主要介紹了MySQL5.7完全卸載的詳細步驟以及把中間遇到的問題做了分析,需要的朋友跟著操作下吧。
    2018-02-02
  • Mysql數(shù)據(jù)庫的主從同步配置方式

    Mysql數(shù)據(jù)庫的主從同步配置方式

    這篇文章主要介紹了Mysql數(shù)據(jù)庫的主從同步配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Mysql事務(wù)的隔離級別(臟讀+幻讀+可重復(fù)讀)

    Mysql事務(wù)的隔離級別(臟讀+幻讀+可重復(fù)讀)

    這篇文章主要介紹了Mysql事務(wù)的隔離級別(臟讀+幻讀+可重復(fù)讀),文章通告InnoDB展開詳細內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-08-08
  • MySQL數(shù)據(jù)庫查詢之多表查詢總結(jié)

    MySQL數(shù)據(jù)庫查詢之多表查詢總結(jié)

    最近遇到了多表查詢的需求,也稱為關(guān)聯(lián)查詢,指兩個或更多個表一起完成查詢操作,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫查詢之多表查詢的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08

最新評論

蓝山县| 开封县| 慈利县| 英超| 延边| 远安县| 北辰区| 霞浦县| 尚义县| 贡觉县| 铅山县| 栾川县| 罗甸县| 巩留县| 葵青区| 山东| 乌拉特前旗| 西丰县| 濮阳市| 远安县| 团风县| 盐亭县| 资兴市| 南昌市| 泾川县| 海原县| 洮南市| 乐安县| 仪征市| 天镇县| 鄯善县| 广东省| 睢宁县| 大冶市| 高阳县| 商洛市| 长治县| 长泰县| 东莞市| 中宁县| 郓城县|