07 MySQL常用內建函式

2022-07-16 11:48:13 字數 3699 閱讀 9531

常用函式

1.字串函式

concat(str1,str2,..,strn)

將str1,str2..strn 拼接成乙個字串,當這裡有任何乙個為null,則拼接結果為null

insert(str, idx,len,tarstr)

將字串str從 idx 位置開始,len個字元長度的子串替換為字串tarstr.

lower(str) / upper(str)

left( str , len ) / right( str , len )

返回 str 最左/右邊的 len 個字元

lpad( str , len , fill_str ) / rpad( str , len , fill_str )

使用字串 fill_str 對str最左/右邊進行填充,直到長度為 len 個字元長度.

ltrim(str) / rtrim(str) / trim(str)

去掉字串str 最左側的空格 / 最右側的空格 / 兩側的空格

repeat(str, count)

返回 str 重複 count 次的結果

replace( str, src_str ,tar_str )

用字串 tar_str 替換 所有 出現在 str 中的字串 src_str ;

strcmp(s1,s2)

比較字串s1和s2的ascii的大小.

s1s2 返回1 ; s1=s2 返回0.

substring( str , idx , len )

返回字串 str 從第 idx 索引處開始 長度為 len 的字串.

2.數值函式

abs(x)

返回x的絕對值

ceil(x)

返回大於x的最大整數值

floor(x)

返回小於x的最大整數值

mod(x,y)

相當於 x%y

rand()

返回0~1之間的隨機數

round(x,y)

返回 x 四捨五入後有y位小數的值

truncate(x,y)

返回 x 截斷 為y位小數的結果;

round() 和 truncate() 區別是 前者會進行四捨五入,後者只是截斷,而不會四捨五入.

3.日期/時間 函式

curdate()

返回當前日期,只包含年月日yyyy-mm-dd

curtime()

返回當前時間,只包含時分秒hh:mm:ss

now()

返回當前日期+時間.yyyy-mm-dd hh:mm:ss

unix_timestamp(date)

返回日期date的unix時間戳

from_unixtime(unixtime)

返回unixtime時間戳的日期值.與unix_timestamp(date)函式互為逆操作.

week(date)

返回一年中的第幾周

year(date)

返回所給日期是哪年

hour(time)

返回所給時間的小時

minute(time)

返回所給時間的分鐘

monthname(date)

返回所給date相對應的月份的英文名稱,如july.

date_format(date,fmt)

返回按字串fmt格式化日期date值.

fmt可用到的格式符號:

%s,%s    兩位數字形式的秒

%i    兩位數字形式的分

%h    兩位數字形式的小時,24小時制

%h,%i    兩位數字形式的小事,12小時制 todo

%k    數字形式的小時,24小時制.不滿10的,不補0

%l    數字形式的小時,12小時制.不滿10的,不補0 todo

%t    24小時制的時間形式 hh:mm:ss

%r    12小時制的時間形式 hh:mm:ssam 或 hh:mm:sspm

%p    am 或pm

%w    一周中每一天的英文名稱(如sunday,monday)

%a    一周中沒一台呢的英文名稱的縮寫(如sun,mon)

%d    兩位數字表示月中的天數

%e    數字形式表示月中的天數

%d    英文本尾表示月中的天數(1st,2nd,3rd)

%w    以數字形式表示週中的天數(0=sunday,1=monday...)

%j    以3位數字表示年中的天數

%u    周(0,1,52) , sunday為周的第一天

%u    周(0,1,52) , monday為周的第一天

%m    月的英文名(january,february..)

%b    月的英文名縮寫(jan,feb,dec...)

%m    兩位數字表示的月份

%c    數字表示的月份

%y    4位數字表示的年份

%y    兩位數字表示的年份

%%    直接值"%"

date_add(date,interval expr type)

其中,interval是關鍵字,expr是表示式,type是間隔型別.

mysql的13種間隔(interval)型別

hour               小時        hh

minute            分        mm

second           秒        ss

year                 年        yy

month             月        mm

day            日        dd

year_month        年月        yy-mm

day_hour        日和小時    dd hh

day_minute        日和分鐘    dd hh:mm

day_second        日和秒        dd hh:mm:ss

hour_minute        小時和分    hh:mm

hour_second        小時和秒    hh:ss

minute_second        分鐘和秒    mm:ss

demo : select date_add( now() , interval -31 day) as before31days ;

datediff(date1,date2)

計算兩個日期中間相差多少天 todo 驗證是否和兩個引數的順序相關

4.流程函式

database()

返回當前資料庫名

version()

返回當前資料庫版本

user()

返回當前登入使用者名稱

inet_aton(ip)

返回ip位址的數字表示,多用於ip大小的比較

inet_ntoa(num)

返回數字代表的ip位址.不要用這種方式比較大小

password(str)

返回字串str的加密版本.返回的字串長度為41.

只用於對系統使用者的密碼進行加密,不要用於資料的加密

md5(str)

返回字串str的md5值.對資料進行加密.

07 MySQL 架構介紹

mysql 與其他資料相比,最與眾不同的點在於 它的架構可以在多種不同場景中應用並發揮良好作用,最主要提現在儲存引擎的架構上。外掛程式式的儲存引擎架構將查詢處理和其他的系統任務以及資料的儲存提取相分離,這種架構可以根據業務的需求和實際需要選擇合適的儲存引擎。整個 mysql server 由以下組成...

07 mysql 多表查詢 連線查詢

每個資料庫中可以存放多張表,真正的應用中經常需要從多個資料表中讀取資料 笛卡爾乘積 多表進行連線查詢時沒有任何條件,最終的結果是多表結果數量乘積的現象被稱為笛卡爾積 例如 select e.employeename,d.departmentname from department as d,empl...

07 MySQL 時間日期型別

日期型別 系統使用三個位元組來儲存資料,對應的格式為 yyyy mm dd,能表示的範圍是從1000 01 01 到9999 12 12,初始值為0000 00 00 時間型別 能夠表示某個指定的時間,但是系統同樣是提供3個位元組來儲存,對應的格式為 hh ii ss,但是mysql中的time型別...