您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關mysql中有什么數據類型,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
mysql數據類型有:1、數值類型;2、日期和時間類型;3、字符串類型是CHAR、VARCHAR、BINARY【二進制數據類型】、BLOB、TEXT【文本類型】、ENUM【枚舉類型】和SET【數據集合】。
mysql數據類型有:
MySQL支持的數據類型在幾類:數值類型,日期和時間類型和字符串(字符)類型。
注意:
在定義字段是我們經常使用 num int(10) unsigned 這種寫法,其中的 int(10) 并不是表示該字段會存儲10個長度的數字。
int(M) 表示的是數字顯示的格式,并且只能在字段屬性設置了zerofill時才有效。
eg:
tinyint(4) -- 實際存儲值為2, 如果沒有指定zerofill,查詢得到的結果就是 2, 如果指定了zerofill,則查詢結果就是 0002,左邊使用0來進行填充;
zerofill屬性:
如果字段指定了zerofill屬性,mysql會自動為字段加上UNSIGNED 屬性。
當涉及列表達式或UNION查詢中時,ZEROFILL屬性將被忽略
浮點型:
Float(M,D):M為數字的位數,包含了整數部分和小數部分;D為小數部分,【D <= M-2】; 如果等于則整數部分為0,最大的值也就是0.99
eg:
Float(2,1) -- 表示一位整數和一位小數,eg:1.1
Float(1,2) -- 語法錯誤,總共才1位 怎么可能有2位小數
關于默認值:
默認值必須是一個常亮,不能函數或者表達式。例外:TIMESTAMP的默認值可以使用CURRENT_TIMESTAMP
BLOB and TEXT 不能設置默認值
如果一個列不明確的指出默認是是多少的情況下:
如果數據庫為strict mode 模式下,則會報錯
如果模式不處于strict mode模式,系統會根據類型來確認使用何種默認值
表示時間值的日期和時間類型是日期時間(DATATIME)、日期(DATA)、時間戳(TIMESTAMP)、時間(TIME)和年份(YEAR)。
DATATIME范圍: '1000-01-01 00:00:00'
to '9999-12-31 23:59:59'
.
DATA范圍:'1000-01-01'
to '9999-12-31'
TIMESTAMP范圍:'1970-01-01 00:00:01'
UTC to '2038-01-19 03:14:07'
TIME范圍:'-838:59:59'
to '838:59:59'
YEAR范圍:year(4) --- 1901~2155; year(2) --- 00~99
TIMESTAMP: 時間戳列顯示在相同的格式為DATETIME列。換句話說,顯示寬度固定為19個字符,格式是'YYYY-MM-DD HH:MM:SS'。
TIMESTAMP數據類型提供自動初始化和更新。但是只能有一列默認值和更新是 指定為CURRENT_TIMESTAMP
1、自動初始化和自動更新 eg : ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
2、只有自動初始化; eg:ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
3、只有自動更新; eg:ts TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP
4、都沒有; eg:ts TIMESTAMP DEFAULT 0
字符串類型是CHAR、VARCHAR、BINARY【二進制數據類型】、BLOB、TEXT【文本類型】、ENUM【枚舉類型】和SET【數據集合】。
char和varchar的區別:存儲長度的區別在于最大長度和是否保留空格;
char會保留空格,varchar不會保留空格
char為 0~ 255; varchar為 0 ~ 65535
ENUM: 枚舉是一個字符串對象從中明確列舉了在創建表時列規范的允許值的列表中選擇一個值。【當插入值不能和列表的值驚醒匹配時,默認是最大索引值】
, ,
numbers ENUM('0','1','2')
mysql> INSERT INTO t (numbers) VALUES(2),('2'),('3');mysql> SELECT * FROM t;+---------+ | numbers | +---------+ | 1 | | 2 | | 2 | +---------+
SET: 集是一個對象,該對象可以有零個或多個值的字符串,其中每個必須從列表中選擇允許創建表時指定的值。【當插入值不能和列表的值經行匹配時,MYSQL會忽略列表中不存在的值】
1 CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));2 3 INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');
從定義中可以看出 ENUM和SET的區別在于值是定義時指定的值中的一個還是多個。還有就是在插入值在列表中不存在的表現不一樣。
關于mysql中有什么數據類型就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。