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

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

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

MySQL系列

前言

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

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

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

一、聚合函數

這部分函數都比較簡單

函數名作用示例結果
SUM(col)求和SUM(amount)所有 amount 的總和
AVG(col)平均值AVG(age)平均年齡
COUNT(col)計數(忽略 NULL)COUNT(id)行數
COUNT(*)計數(包含 NULL)COUNT(*)總行數
MAX(col)最大值MAX(score)最高分數
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 '數學成績',
english float default 0.0 comment '英語成績'
);

表內容

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

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

select count(*) from students;

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

select count(qq) from students;

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

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

select count(math) from exam_result;

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

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

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

count函數可以配合其他語句使用。

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

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

6、返回英語最高分

select max(english)  from exam_result ;

7、返回 > 70 分以上的數學最低分

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

二、日期函數

1、獲取當前年月日

select current_date();

2、獲取當前時分秒

select current_time;

3、獲取時間戳

select current_timestamp;

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

select date(current_timestamp());

5、在日期的基礎上加上日期

select date_add(current_date,interval 10 day);

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

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

6、在日期的基礎上減去日期

select date_sub(current_date,interval 10 day);

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

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
);
//向表中插入測試數據
insert into msg(content,sendtime) values('hello1', now());
insert into msg(content,sendtime) values('hello2', now());
select * from msg;

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

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

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

三、字符串函數

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

1、查看字符串的字符集

select charset(string);

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

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

select instr(string,substring);

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

當目標字符串重復出現時,返回的時第一次出現的下標

4、字符串轉為大寫

select ucase(strig);

5、字符串轉為小寫

select lcase(string);

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

select left(string,len);

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

select right(string,len);

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

selecty

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

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

select replace(substring,string,str);

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

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

9、字符串截取 substring

select substring(string,pos,len);

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

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

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

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

四、數學函數

1、abs 取絕對值

select abs(N);

2、bin 轉二進制

select bin(N);

可以看到在對小數,進行二進制轉換時,會將小數進行向下取整后再操作。

3、hex 轉十六進制

select hex(N);

4、 conv 進制轉換

select conv(N,fromm_base,to_base);

將數字N,從from_base進制 轉換成 to_base進制.

5、format 格式化,保留小數

select format(N,D);

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

6 mod 取模

select mod(x,y);

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

select rand();

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

8、ceiling 向上取整

select ceiling(N);

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

9、floor 向下取整

select floor(N);

五、其他函數

1、查看當前用戶 user

select user();

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

2、database查看當前數據庫

select database();

返回當前會話中使用的數據庫名稱

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

這種加密方式,缺點很多,這個我在網絡傳輸部分已經介紹了,這里就補贅述了。

4、ifnull(val1,val2)

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

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

相關文章

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

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

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

    MySQL主從延遲現象及原理分析詳解

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

    Linux下安裝配置MySQL

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

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

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

    Navicat連接本地MySql實現過程

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

    MySQL中select...for update鎖表

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

    MySQL5.7完全卸載步驟詳解

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

    Mysql數據庫的主從同步配置方式

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

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

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

    MySQL數據庫查詢之多表查詢總結

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

最新評論

北川| 永新县| 易门县| 碌曲县| 郁南县| 威宁| 临城县| 芜湖市| 萨迦县| 阿尔山市| 太谷县| 天柱县| 阿拉尔市| 嵊泗县| 兴业县| 武夷山市| 洛南县| 光泽县| 南和县| 澄迈县| 家居| 张家口市| 象州县| 兰州市| 饶河县| 锡林郭勒盟| 贵州省| 宣城市| 宁陵县| 云安县| 梅州市| 柘荣县| 富蕴县| 上饶县| 建昌县| 永福县| 郑州市| 原阳县| 板桥市| 临海市| 保亭|