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) -- # Float(1,2) -- 語法錯誤,總共才#1 位元 怎麼可能有2
位元小數預設值必須是一個常亮,不能函數或表達式。例外:TIMESTAMP的預設值可以使用
CURRENT_TIMESTAMPBLOB and TEXT
不能設定預設值如果資料庫為strict mode
模式下,則會報錯誤如果模式不處於strict mode
模式,系統會根據型別來確認使用何種預設值表示時間值的日期和時間類型是日期時間(DATATIME) 、日期(DATA)、時間戳(TIMESTAMP)、時間(TIME)和年份(YEAR)。
DATATIME範圍:
'1000-01-01 00:00:00'
to
. DATA範圍:
'1000-01-01'
to
TIMESTAMP範圍:
'1970-01-01 00:00:01'
UTC to
TIME範圍:
'-838:59:59'
to
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
eg2、只有自動初始化; TIMESTAMP DEFAULT CURRENT_TIMESTAMP
3、只有自動更新; eg:ts TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP
4、都沒有; :
char和varchar的區別:儲存長度的差異在於最大長度和是否保留空格;
char會保留空格,varchar不會保留空格
char為0~ 255; varchar為0 ~ 65535
#
# ENUM: # ENUM:
# 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');
以上是mysql資料類型有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!