mysql數據類型有哪些

mysql數據類型有:1、數值類型;2、日期和時間類型;3、字符串類型是CHAR、VARCHAR、BINARY【二進制數據類型】、BLOB、TEXT【文本類型】、ENUM【枚舉類型】和SET【數據集合】。

mysql數據類型有哪些

mysql數據類型有:

MySQL支持的數據類型在幾類:數值類型,日期和時間類型和字符串(字符)類型。

數據類型:

?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?如果等于則整數部分為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)。

mysql數據類型有哪些? ?mysql數據類型有哪些

  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

  mysql數據類型有哪些

  ENUM:?枚舉是一個字符串對象從中明確列舉了在創建表時列規范的允許值的列表中選擇一個值?!?span style="color: rgba(255, 0, 0, 1)">當插入值不能和列表的值驚醒匹配時,默認是最大索引值】

 , ,
numbers?ENUM('0','1','2')
mysql>?INSERT?INTO?t?(numbers)?VALUES(2),('2'),('3');mysql>?SELECT?*?FROM?t;+---------+ |?numbers?| +---------+ |?1???????| |?2???????| |?2???????| +---------+

  SET:?集是一個對象,該對象可以有零個或多個值的字符串,其中每個必須從列表中選擇允許創建表時指定的值?!?span style="color: rgba(255, 0, 0, 1)">當插入值不能和列表的值經行匹配時,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教程(視頻)

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享