国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySql數據庫中字段數據類型詳解

2024-07-24 12:37:29
字體:
來源:轉載
供稿:網友

在mysql中數據類型分類主要三類,數值類、字符串類和日期/時間類,它們分別用于不同作用場合,下面小編來給大家介紹mylsq字段類型的介紹,有需要了解的朋友可進入參考。

MySQL中的列類型有三種:數值類、字符串類和日期/時間類.

從大類來看列類型和數值類型一樣,都是只有三種,但每種列類型都還可細分,下面對各種列類型進行詳細介紹.

數值類的數據列類型

字段類型:

TINYINT:1字節非常小的正整數,帶符號:-128~127,不帶符號:0~255

SMALLINT:2字節小整數,帶符號:-32768~32767,不帶符號:0~65535

MEDIUMINT:3字節中等大小的整數,帶符號:-8388608~8388607,不帶符號:0~16777215

INT:4字節標準整數,帶符號:-2147483648~2147483647,不帶符號:0~4294967295

BIGINT:8字節大整數,帶符號:-9223372036854775808~9233372036854775807,不帶符號:0~18446744073709551615

FLOAT:4字節單精度浮點數,最小非零值:+-1.175494351E-38,最大非零值:+-3.402823466E+38

DOUBLE:8字節雙精度浮點數,最小非零值:+-2.2250738585072014E-308,最大非零值:+-1.7976931348623157E+308

DECIMAL:M+2字節 以字符串形式表示的浮點數,它的取值范圍可變,由M和D的值決定。

注意:帶符號的意思就是可以用負號,可以通過設置UNSIGNED來改變。

聲明整型數據列時,我們可以為它指定個顯示寬度M(1~255),如INT(5),指定顯示寬度為5個字符,如果沒有給它指定顯示寬度,MySQL會為它指定一個默認值。顯示寬度只用于顯示,并不能限制取值范圍和占用空間,如:INT(3)還是會占用4個字節的存儲空間。

所以,這個長度只是顯示的長度,用于顯示數據用的,沒有其他任何作用.

給字段指定ZEROFILL是補全的意思,這樣上面設置的INT(3)顯示長度就起作用了,如1就顯示為001,另外它自動幫我們設置成UNSIGNED屬性,也就是不能為負。

主鍵:給字段設置主鍵,主要是標示該字段的唯一性,說明這個字段的內容不能重復,如果是兩個字段或者多個子都都設置主鍵則表示這些字段組合起來的數據是惟一的,是針對所有的字段的唯一性。

日期,時間型數據列類型:

DATE 1000-01-01~9999-12-31 3字節(MySQL3.23版以前是4字節 ) 0000-00-00 TIME -838:59:59~838:59:59 3字節 00:00:00 DATETIME 1000-01-01 00:00:00~9999-12-31 23:59:59 8字節 0000-00-00 00:00:00 TIMESTAMP 19700101000000~2037年的某個時刻 4字節 00000000000000 YEAR YEAR(4):1901~2155 YEAR(2):1970~2069 1字節 0000

MySQL總是把日期和日期里的年份放在最前面,按年月日的順序顯示.

DATE、TIME、DATATIME數據列類型

DATE、TIME和DATATIME類型分別存放日期值、時間值、日期和時間值的組合,它們的格式分別是“CCYY-MM-DD”、“hh:mm:ss”、“CCYY-MM-DD hh:mm:ss”.

DATATIME里的時間值和TIME值是有區別的,DATATIME里的時間值代表的是幾點幾分,TIME值代表的是所花費的時間。當向TIME數據列插值時,需用時間的完整寫法,如12分30秒要寫成“00:12:30”。

TIMESTAMP數據列類型

TIMESTAMP數據列的格式是CCYYMMDDhhmmss,取值范圍從19700101000000開始,即1970年1月1號,最大到2037年。它的特點是能把數據行的創建或修改時間記錄下來:

如果把一個NULL值插入TIMESTAMP列,這個數據列就將自動取值為當前的日期和時間。

在創建和修改數據行時,如果沒有明確對TIMESTAMP數據列進行賦值,則它就會自動取值為當前的日期和時間。如果行中有多個TIMESTAMP列,只有第一個會自動取值。

如果對TIMESTAMP設置一個確定的日期和時間值,則會使TIMESTAMP的自動取值功能失效。

TIMESTAMP默認的列寬是14,可指定列寬,以改變顯示效果。但不論你指定的列寬如何,MySQL都是以4字節來存儲TIMESTAMP值,也總是以14位精度來計算。

如果需要把創建時間和最近一次修改時間同時記錄下來,可以用兩個時間戳來記錄,一個記錄創建時間,一個記錄修改時間。不過需記住兩件事,一是要把記錄修改時間的TIMESTAMP數據列放在最前面,這樣才會自動取值;二是創建一條新記錄時,要用now()函數來初始化創建時間TIMESTAMP數據列,這樣,該TIMESTAMP數據列就不會再變化。

YEAR

YEAR是一種單字節的數據列類型,YEAR(4)的取值范圍是1901~2155,YEAR(2)的取值范圍是1970~2069,但只顯示最后兩位數。MySQL能自動把兩位數字年份轉換成四位數字的年份,如97和14分被轉換成1997和2014。轉換規則是這樣的:

年份值00~69將被轉換成2000~2069;

年份值70~99將被轉換成1970~1999。

00被轉換成0000,而不是2000,因為數值00也就是0,而0值是YEAR的一個合法取值,BLOB和TEXT.

BLOB是二進制字符串,TEXT是非二進制字符串,兩者都可存放大容量的信息.

有關BLOB和TEXT索引的建立:

BDB表類型和MySQL3.23.2以上版本的MyISAM表類型允許在BLOB和TEXT數據列上建立索引.

ISAM、HEAP和InnoDB表不支持大對象列的索引。

使用BLOB和TEXT應注意的問題:

由于這兩個列類型所存儲的數據量大,所以刪除和修改操作容易在數據表里產生大量的碎片,需定期運行OPTIMIZE TABLE以減少碎片和提高性能。

如果使用的值非常巨大,就需對服務器進行相應的優化調整,增加max_allowed_packet參數的值。對那些可會用到變些巨大數據的客戶程序,也需加大它們的數據包大小。

ENUM和SET

ENUM和SET都是比較特殊的字符串數據列類型,它們的取值范圍是一個預先定義好的列表。ENUM或SET數據列的取值只能從這個列表中進行選擇。ENUM和SET的主要區別是:

ENUM只能取單值,它的數據列表是一個枚舉集合。它的合法取值列表最多允許有65535個成員。例如:ENUM(”N”,”Y”)表示,該數據列的取值要么是”Y”,要么就是”N”.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 闸北区| 比如县| 祁门县| 广汉市| 峡江县| 宁远县| 五台县| 江津市| 江孜县| 班玛县| 黔西| 河曲县| 酉阳| 离岛区| 高雄县| 迭部县| 榆中县| 枣庄市| 黄龙县| 怀仁县| 海安县| 中超| 马公市| 利津县| 沧源| 株洲市| 库车县| 睢宁县| 成武县| 贵州省| 汉阴县| 巴中市| 凤冈县| 明溪县| 开鲁县| 子洲县| 嘉荫县| 临颍县| 陆川县| 桐城市| 陆良县|