初學mysql 十一 之細枝末節 資料型別與運算子

2021-07-24 15:32:55 字數 2388 閱讀 6704

mysql資料庫支援多種資料型別,主要有字串型別、數值型別、日期型別、二進位制型別。

字串型別:char(m):固定長度非二進位制字串;m(1-255)位元組、varchar(m):變長非二進位制字串;l+1個位元組,在此l數值型別:tinyint:1個位元組、smallint:2個位元組、mediumint:3個位元組、int[integer]:4個位元組、bigint:8個位元組、float:4個位元組、double:8個位元組、定點小數型別decimal:decimal(m,d)壓縮的嚴格定點數;m稱為精度,表示總共的位數;d稱為標度,表示小數的位數。

二進位制型別:bit(m):位欄位型別,大約(m+7)/8個位元組、binary(m):固定長度的二進位制字串,m個位元組、varbinary(m):可變長度的二進位制字串,m+1個位元組、tinyblob(m):非常小的blob,l+1個位元組,此處l<28、blob(m):小blob,l+2個位元組,此處l<216、mediumblob(m):中等大小的blob,l+3個位元組,此處l<224、longblob(m):非常大的blob,l+4個位元組,此處l<232。    

日期型別:year:日期格式yyyy,日期範圍1901~2155,儲存需求:1個位元組、

time:日期格式hh:mm:ss,日期範圍-838:59:59~838:59:59,儲存需求:3個位元組、

date:日期格式yyyy-mm-dd,日期範圍1000-01-01~9999-12-31,儲存需求:3個位元組、

datetime:日期格式yyyy-mm-dd hh:mm:ss,日期範圍1000-01-01 00:00:00~9999-12-31 23:59:59,儲存需求:8個位元組、

timestamp:日期格式yyyy-mm-dd hh:mm:ss,日期範圍1970-01-01 00:00:01~2038-01-19 03:14:07,儲存需求:4個位元組。

注:(1)year型別使用單位元組表示年份,在儲存時只需乙個位元組:以4位字串或者4位數字格式表示year,其範圍為'1901'~'2155',輸入格式為'yyyy'或yyyy。例如,輸入'2015'或2015,插入到資料庫的值都是2015;以2位字串格式表示year,範圍為'00'到'99'。'00'~'69'和'70'~'99'範圍的值分別被轉換為2000~2069和1970~1999範圍的year值。輸入『0』與'00'取值相同,皆為2000。插入超過取值範圍的值將被轉換為2000;以2位數字表示year,範圍為1~99。1~69和70~99範圍分別轉換為2001~2069和1970~1999範圍的year值。

(2)time型別用在記錄時間資訊的值。需要3個位元組來儲存:a.『d hh:mm:ss』格式的字串,也可以使用一下任何一種『非嚴格』的語法如『hh:mm:ss』、『hh:mm』、『d hh:mm』、『d hh』或『ss』,其中d表示日,取值範圍為0~34。再插入資料庫時,d被轉換為小時儲存,格式為『d*24+hh』。b.『hhmmss』格式的、沒有分隔符的字串或hhmmss格式的數值,假定時間是有意義。不合法的時間被儲存為00:00:00。

(3)date型別用在僅需要儲存日期值的時候,不儲存時間,儲存需要3個位元組。常用格式:1:'yyyy-mm-dd'或者'yyyymmdd'格式的字串;2:『yy-mm-dd』或者'yymmdd'字串格式表示日期;3:以yymmdd數值格式表示日期。可以使用current_date或者now()表示系統的當前時間。yy表示年是在輸入70-99時被理解為1970-2023年;在00-69時被理解為2000-2069;

(4)datetime型別同時包含日期和時間資訊,儲存需要8個位元組。常用格式:1:'yyyy-mm-dd hh:mm:ss'或者『yyyymmddhhmmss』字串格式表示日期時間;2:'yy-mm-dd hh:mm:ss'或者'yymmddhhmmss'字串格式表示日期時間,yy含義和上面相同;3:以yyyymmddhhmmss或者yymmddhhmmss數值格式表示日期時間。()mysql允許不嚴格的時間插入,任何標點符號都可以用作日期部分或時間部分的時間間隔。

(5)timestamp的顯示格式與datetime相同,顯示寬度固定在19字元。

mysql的運算子:mysql中的運算子有:算術運算子、比較運算子、邏輯運算子、位操作運算子。

算術運算子:+、-、*、/、%求餘;

比較運算子:>、<、=、>=、<=、!=、in、between and、is null、greatest(進行大小判斷)、least、regexp

邏輯運算子:邏輯非(not 或者 !)、邏輯與(and 或者 &&)、邏輯或(or或者||)、邏輯異或(xor)

位操作運算子:&、|、~、^、<<、>>

mysql中也有許多函式,感興趣的可以查閱mysql的api文件進行學習。這裡有不一一說明了,這就是我初學mysql的所有東西,當然了一些高階的深入的東西我也還在學習當中,比如mysql備份,恢復,複製,日誌管理,分布式應用,快取的配置與使用等等,我會在後面階段學習後來給大家說一說,以上的部落格就是我的初學mysql資料庫的經驗。

MySQL資料型別與運算子

2019 08 03 資料型別用於以下目的。有兩種基本的串型別,分別為定長串和變長串。定長串接受長度固定的字串,其長度是在建立表時指定的。例如,名字列可允許30個字元,而社會安全號列允許11個字元 允許的字元數目中包括兩個破折號 定長列不允許多於指定的字元數目。它們分配的儲存空間與指定的一樣多。因此...

mysql 之 schema與資料型別優化

一.選擇優化的資料型別 1.更小的通常更好 如果只要儲存1 200,tinyint unsigned更好.因為占用更小的記憶體和磁碟空間.2.簡單就好 簡單資料型別需要更小的cpu時間週期.例如 整型比字元操作代價更低 字符集的問題 使用mysql自帶型別取代字串 date,datetime 使用整...

MySQL資料型別之char與varchar

測試環境 mysql 5.7.17 各位dba同事及開發童鞋,相信你們看了這篇文章,會徹底明白char與varchar應該如何去選擇使用。首先講解一下char與varchar。char n n的最大值為255 varchar n n的理論最大值65535,其實也就最多65532 這裡需要注意,在my...