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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

【数据库】mysql常用的数据类型

發布時間:2025/3/15 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据库】mysql常用的数据类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據類型是指列、存儲過程參數、表達式和局部變量的數據特征,它決定了數據的存儲格式,代表了不同的信息類型。
有一些數據是要存儲為數字的,數字當中有些是要存儲為整數、小數、日期型等...
MySQL支持多種類型,大致可以分為四類:數值型、浮點型、日期/時間和字符串(字符)類型。

一、Text 類型(字符類型):
char(size):保存固定長度的字符串(可包含字母、數字以及特殊字符)
varchar(size):保存可變長度的字符串(可包含字母、數字以及特殊字符)
text:存放最大長度為 65,535 個字符的字符串。

1.1 字符與字節的區別
一個字符由于所使用的字符集的不同,會并存儲在一個或多個字節中,所以一個字符占用多少個字節取決于所使用的字符集。
注意:char與varchar后面接的數據大小為存儲的字符數,而不是字節數
在MySQL中,char、varchar和text類型的字段都可以用來存儲字符類型的數據,char、varchar都可以指定最大的字符長度,但text不可以。
它們的存儲方式和數據的檢索方式也都不一樣。
數據的檢索效率是:char > varchar > text

1.2 存數據時的區別
char:char定義的是固定長度,長度范圍為0-255,存儲定長數據很方便,CHAR字段上的索引效率級高,必須在括號里定義長度,可以有默認值,比如定義char(10),那么不論你存儲的數據是否達到了10個字節,都要占去10個字節的空間(自動用空格填充),且在檢索的時候后面的空格會隱藏掉,所以檢索出來的數據不需要記得用什么trim之類的函數去過濾空格。
varchar:varchar是變長長度,長度范圍為0-65535,但存儲效率沒有CHAR高,必須在括號里定義長度,可以有默認值。保存數據的時候,不進行空格自動填充,而且如果數據存在空格時,當值保存和檢索時尾部的空格仍會保留。另外,varchar類型的實際長度是它的值的實際長度+1,這一個字節用于保存實際使用了多大的長度。
text:存儲可變長度的非Unicode數據,最大長度為2^31-1個字符。text列不能有默認值,存儲或檢索過程中,不存在大小寫轉換,后面如果指定長度,不會報錯誤,但是這個長度是不起作用的,意思就是你插入數據的時候,超過你指定的長度還是可以正常插入。

1.3 取數據時的區別
數據庫取char的數據時,會把后面的空格全部丟棄掉,也就是說,在char中的尾部存入空格時,最后取出來都會被丟棄;當然指定PAD_CHAR_TO_FULL_LENGTH時,在取數據時讓尾部的空格保留。
而數據庫在取varchar數據時,尾部空格會保留。

可以用上表來表示,當定義char時,不管你存入多少字符,都會占用到你定義的字符數,而用varchar時,則和你輸入的字符數有關,會多一到兩個字節來記錄字節長度,當數據位占用的字節數小于255時,用1個字節來記錄長度,數據位占用字節數大于255時,用2個字節來記錄長度,還有一位來記錄是否為nul值。

1.4 關于存儲空間:
在使用UTF8字符集的時候,MySQL手冊上是這樣描述的:
基本拉丁字母、數字和標點符號使用一個字節;
大多數的歐洲和中東手寫字母適合兩個字節序列:擴展的拉丁字母(包括發音符號、長音符號、重音符號、低音符號和其它音符)、西里爾字母、希臘語、亞美尼亞語、希伯來語、阿拉伯語、敘利亞語和其它語言;
韓語、中文和日本象形文字使用三個字節序列。
mysql每一行的最大字節數為65535,當你使用utf8,一個字符有可能占用三個字節的時候,varchar如果定義允許空的話能定義的最大長度為(65535-1-2)/3=21844.
Mysql在對比char,varchar,text類型的數據時,是不會把尾部的空格考慮在內的,這對所有字符集都適用,但在這里是除了like比較符的。

1.5 結論:
1、經常變化的字段用varchar;
2、知道固定長度的用char;
3、超過255字節的只能用varchar或者text;
4、能用varchar的地方不用text;
5、能夠用數字類型的字段盡量選擇數字類型而不用字符串類型,這會降低查詢和連接的性能,并會增加存儲開銷。這是因為引擎在處理查詢和連接回逐個比較字符串中每一個字符,而對于數字型而言只需要比較一次就夠了;

二、Number 類型(數字類型):
tinyint(3):-128 到127常規。0到255無符號*。在括號中規定最大位數。
smallint(3):-32768到32767常規。0到65535無符號*。在括號中規定最大位數。
mediumint(3):-8388608到8388607普通。0to16777215無符號*。在括號中規定最大位數。
int(3):-2147483648到2147483647常規。0到4294967295無符號*。在括號中規定最大位數。
bigint(10):-9223372036854775808到9223372036854775807 常規。0到18446744073709551615無符號*。在括號中規定最大位數。
float(size,d)):帶有浮動小數點的小數字。在括號中規定最大位數。在d參數中規定小數點右側的最大位數。
double(size,d):帶有浮動小數點的大數字。在括號中規定最大位數。在d參數中規定小數點右側的最大位數。
decimal(size,d):作為字符串存儲的double類型,允許固定的小數點。

三、Date 類型(日期類型):
date():日期格式:YYYY-MM-DD;注釋:支持的范圍是從 '1000-01-01' 到 '9999-12-31'
datetime():日期和時間的組合。格式:YYYY-MM-DD HH:MM:SS;注釋:支持的范圍是從 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'
timestamp():時間戳。TIMESTAMP 值使用 Unix 紀元('1970-01-01 00:00:00' UTC) 至今的描述來存儲。格式:YYYY-MM-DD HH:MM:SS;注釋:支持的范圍是從 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC
time():時間格式:HH:MM:SS 注釋:支持的范圍是從 '-838:59:59' 到 '838:59:59'
year():2位或4位格式的年。注釋:4位格式所允許的值:1901到2155;2位格式所允許的值:70到69,表示從1970到2069。

4、BLOB (binary large object),用來存儲二進制大對象的字段類型。
BLOB往往是一個大文件,典型的BLOB是一張圖片、一個聲音或一個視頻文件,由于它們的尺寸,必須使用特殊的方式來處理(例如:上傳、下載或者存放到一個數據庫)。
處理BLOB的主要思想就是讓文件處理器(如數據庫管理器)不去理會文件是什么,而是關心如何去處理它。但也有專家強調,這種處理大數據對象的方法是把雙刃劍,它有可能引發一些問題,如存儲的二進制文件過大,會使數據庫的性能下降。
MySQL中,BLOB是個類型系列,共包括四種BLOB類型:TinyBlob、Blob、MediumBlob、LongBlob,這幾個類型之間的唯一區別是在存儲文件的最大尺寸不同。

字段類型 最大長度(字節) ? ?存儲需求
TinyBlob 255 ? ?值的長度加上用于記錄長度的1個字節(8位)
Blob 65K ? ? ? ?值的長度加上用于記錄長度的2個字節(16位)
MediumBlob 16M ?值的長度加上用于記錄長度的3個字節(24位)
LongBlob 4G ? ? 值的長度加上用于記錄長度的4個字節(32位)

總結

以上是生活随笔為你收集整理的【数据库】mysql常用的数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。