共計 2155 個字符,預(yù)計需要花費 6 分鐘才能閱讀完成。
自動寫代碼機(jī)器人,免費開通
這篇文章將為大家詳細(xì)講解有關(guān) mysql 中有什么數(shù)據(jù)類型,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
mysql 數(shù)據(jù)類型有:1、數(shù)值類型;2、日期和時間類型;3、字符串類型是 CHAR、VARCHAR、BINARY【二進(jìn)制數(shù)據(jù)類型】、BLOB、TEXT【文本類型】、ENUM【枚舉類型】和 SET【數(shù)據(jù)集合】。
mysql 數(shù)據(jù)類型有:
MySQL 支持的數(shù)據(jù)類型在幾類:數(shù)值類型,日期和時間類型和字符串 (字符) 類型。
數(shù)據(jù)類型:
注意:
在定義字段是我們經(jīng)常使用 num int(10) unsigned 這種寫法,其中的 int(10) 并不是表示該字段會存儲 10 個長度的數(shù)字。
int(M) 表示的是數(shù)字顯示的格式,并且只能在字段屬性設(shè)置了 zerofill 時才有效。
eg:
tinyint(4) — 實際存儲值為 2,如果沒有指定 zerofill,查詢得到的結(jié)果就是 2,如果指定了 zerofill,則查詢結(jié)果就是 0002,左邊使用 0 來進(jìn)行填充;
zerofill 屬性:
如果字段指定了 zerofill 屬性,mysql 會自動為字段加上 UNSIGNED 屬性。
當(dāng)涉及列表達(dá)式或 UNION 查詢中時,ZEROFILL 屬性將被忽略
浮點型:
Float(M,D):M 為數(shù)字的位數(shù),包含了整數(shù)部分和小數(shù)部分;D 為小數(shù)部分,【D = M-2】; 如果等于則整數(shù)部分為 0,最大的值也就是 0.99
eg:
Float(2,1) — 表示一位整數(shù)和一位小數(shù),eg:1.1
Float(1,2) — 語法錯誤,總共才 1 位 怎么可能有 2 位小數(shù)
關(guān)于默認(rèn)值:
默認(rèn)值必須是一個常亮,不能函數(shù)或者表達(dá)式。例外:TIMESTAMP 的默認(rèn)值可以使用 CURRENT_TIMESTAMP
BLOB and TEXT 不能設(shè)置默認(rèn)值
如果一個列不明確的指出默認(rèn)是是多少的情況下:
如果數(shù)據(jù)庫為 strict mode 模式下,則會報錯
如果模式不處于 strict mode 模式,系統(tǒng)會根據(jù)類型來確認(rèn)使用何種默認(rèn)值
日期和時間格式:
表示時間值的日期和時間類型是日期時間(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 數(shù)據(jù)類型提供自動初始化和更新。但是只能有一列默認(rèn)值和更新是 指定為 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【二進(jìn)制數(shù)據(jù)類型】、BLOB、TEXT【文本類型】、ENUM【枚舉類型】和 SET【數(shù)據(jù)集合】。
char 和 varchar 的區(qū)別:存儲長度的區(qū)別在于最大長度和是否保留空格;
char 會保留空格,varchar 不會保留空格
char 為 0~ 255; varchar 為 0 ~ 65535
ENUM: 枚舉是一個字符串對象從中明確列舉了在創(chuàng)建表時列規(guī)范的允許值的列表中選擇一個值。【當(dāng)插入值不能和列表的值驚醒匹配時,默認(rèn)是最大索引值】
, ,
numbers ENUM(0 , 1 , 2)
mysql INSERT INTO t (numbers) VALUES(2),(2),( 3 mysql SELECT * FROM t;+---------+
| numbers |
+---------+
| 1 |
| 2 |
| 2 |
+---------+
SET: 集是一個對象,該對象可以有零個或多個值的字符串,其中每個必須從列表中選擇允許創(chuàng)建表時指定的值。【當(dāng)插入值不能和列表的值經(jīng)行匹配時,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 的區(qū)別在于值是定義時指定的值中的一個還是多個。還有就是在插入值在列表中不存在的表現(xiàn)不一樣。
關(guān)于 mysql 中有什么數(shù)據(jù)類型就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
向 AI 問一下細(xì)節(jié)
丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!