MySQL的列型別

2021-10-18 07:33:06 字數 4376 閱讀 9771

tinyint

迷你整型,系統採用乙個位元組來儲存的整型,乙個位元組=8位,最大的表示值是0-255

smallint

小整型,系統採用兩個位元組來儲存的整型,能表示0-65535之間
mediumint

中整型,系統採用3個位元組來儲存的整型
int

標準整型,系統採用4個位元組來儲存資料
bigint

大整型,系統採用8個位元組來儲存資料。
無符號設定

無符號,表示儲存的資料在當前欄位中,沒有負數(只有正數)
顯示長度

顯示長度:指資料(整型)在資料顯示的時候到底可以顯示多少位
tinyint(3):

表示最長可以顯示3位,unsigned 說明只是正數,0-255永遠都不會超過3個長度
tinyint(4):

表示最長可以顯示-127 – 128 

顯示長度只是代表了資料是否可以達到指定長度,但是不會自動滿足到指定長度,如果想要顯示資料的時候,保持最高位(顯示長度),那麼還需要給字段增加乙個zerofill屬性才行。

zerofill:

從左側開始填充0,(左側不會改變量值大小)所以負數的時候就不能使用zerofill,一旦使用了zerofill就相當於確定該字段為unsigned

如果不足3位,那麼填充到3位,如果本身已經夠了或者超出,那麼就不會再填充。

顯示長度可以自己設定,超出長度(不超出範圍)不會影響,只會對不夠長度的進行補充(顯示長度)

專門用來儲存小數的在mysql中,將小數又分為兩類,浮點型和定點型
浮點型

浮點型又稱之為精度型別,是一種由可能丟失精度的資料型別,資料有可能不那麼準確(尤其是在超出範圍的時候)不是大小範圍而是精度範圍

浮點型之所以能夠儲存較大的數值(不精確),利用儲存資料的位來存的指數。

整型,所有位都位1

1 1 1 1 1 1 1 1

浮點型,有部分用於存資料,有部分用於存指數

1 1 1 1 1 1 1 1

前三位轉換成十進位制之後用作10的指數 10^7

又稱為單精度型別,系統提供4個位元組來儲存資料(標準整型)但是能表示的資料範圍要比整型大很多,大概是10^38次方,只能保證大概7個左右的精度(如果資料在7位以內,那麼基本準確,但是超過了7位,那麼就是不準確的)
基本語法:

float:表示不指定小數字的浮點數

float(m,d):表示一共儲存m個有效數字,其中小數部分站d位

float(10,2):表示整數部分為8位,小數部分為2位

浮點數的應用:通常是用來儲存一些資料量特別大,大到可以不用那麼精確

例如:宇宙中星體數量,人體細胞含量

decimal定點數:系統自動根據儲存的資料來分配儲存空間,每大概9個數就會分配4個位元組來進行儲存,同時小數部分和整數部分是分開的。
基本語法:

decimal(m,d):m表示總長度,最大值不能超過65,d代表小數部分長度,最大值不能超過30.

定點數應用:如果涉及到錢的時候使用定點數。

date

日期型別:系統使用3個位元組來儲存資料,對應的格式位:yyyy-mm-dd 能表示的範圍是從 1000-01-01 到9999-12-12 初始值為0000-00-00
time

時間型別:能夠表示某個指定的時間,但是系統同樣是提供3個位元組來儲存,對應的格式為:hh:ii:ss,但是在mysql中的time型別能夠表示時間範圍要大的多,能表示從-838:59:59—838:59:59 ,在mysql中具體的用處是描述時間段。
datetime

日期時間型別,就是將前面的date和time的結合,表示的時間用8個位元組來儲存資料。格式為:yyyy-mm-dd hh:ii:ss 能表示的區間為1000-01-01   ----   9999-12-12 23:59:59

可以為0值:0000-00-00 00:00:00

timestamp

時間戳型別:mysql中的時間戳只是表示從格林威治時間開始,但是其格式依然是yyyy-mm-dd hh:ii:ss
year

年型別:占用乙個位元組來儲存,能表示1900-2023年,但是mysql中year有兩種插入方式0-99和四位數具體的年。
char

定長字元型別:指定長度之後,系統一定會分配指定的空間用於儲存資料

基本語法:char(l) 代表字元數(中文與英文本母一樣)l的長度範圍是0-255

varchar

變長字元型別:指定長度後,系統會根據實際儲存的資料來計算長度,分配合適的長度(資料沒有超出長度)

基本語法:varchar(l)l代表長度,l長度的理論值0-65535

因為varchar要記錄資料長度(系統根據資料長度自動分配空間),所以每個varchar資料產生後系統都會再根據資料後面增加1-2

個位元組的額外開銷,用來儲存資料所佔空間長度,如果資料本身小於127個字元額外開銷1個位元組,如果大於127個,開銷2個位元組。

char和varchar儲存資料對比:(utf8,乙個字元都會只能用3個位元組)

儲存資料 char(2) varchar(2) char所佔位元組 varchar佔位元組

a a a 2*3=6 1*3+1=4

ab ab ab 2*3=6 2*3+1=7

char和varchar的區別:

char一定會使用指定的空間,varchar是根據資料來指定空間

char的資料查詢效率比varchar高,varchar是需要通過後面的記錄數來計算

如果確定資料一定是占用指定的長度,要使用char,如果不確定 要使用varchar

如果資料長度超過了255個字元了,不論是否固定長度,都會使用text,不會再使用char或者是varchar。

text

文字型別:mysql中提供了兩種文字型別

text:儲存普通的字元文字

text系統中提供了4中text

tinytext:系統使用乙個位元組來儲存,實際能夠儲存的資料位2^8+1

text:使用了2個位元組來儲存資料,實際儲存位:2^16+2

mediumtext:使用3個位元組來儲存資料,實際儲存2^24+3

longtext:使用4個位元組來儲存資料,實際儲存位2^32+4

注意:在選擇對應的儲存檔案的時候,不用刻意去選擇text型別,系統會自動根據儲存的資料長度來選擇合適的文字型別。

在選擇字元儲存的時候,如果超過255個字元,一定選擇text儲存(效率高)

enum

列舉型別:在資料插入之前,先設定幾個項,這幾個項就是可能最終出現的資料結果。

如果確定某個欄位的資料只有那麼幾個值:例如:男、女、保密,系統就可以在設定欄位的時候規定當前字段只能存放固定的幾個值。

基本語法:enum (資料值1,資料值2.。。。。)

系統使用了1-2個位元組來儲存列舉資料,通過計算enum列舉的具體值來選擇實際的儲存空間,如果資料值列表在255以內,那麼乙個位元組就夠,如果超過255但是小於62235那麼系統採用2個位元組來儲存。

mysql的列型別是 mysql 三大列型別

數值型 1.整型 tinyint 佔據空間 1個位元組,儲存範圍 128 127,0 255 乙個位元組 8個位 0000 0000 1111 1111 0 2的8次方 1 255 0 000000 0 1111111 0 127 1 000000 1 1111111 0 127 127 127 二...

mysql列型別 列約束

mysql伺服器端資料的邏輯結構 server database table row column 1.常用的sql語句 1 增 insert into 表 values 值,值,2 刪 delete from 表 3 改 update 表 set 列 值,列 值 4 查 select from 表...

mysql列型別 mysql欄位型別

mysql欄位型別 mysql支援多種型別,大致可以分為三類 數值 日期 時間和字串 字元 型別。數值型別 型別大小範圍 有符號 範圍 無符號 用途 tinyint 1 位元組 128,127 0,255 小整數值 smallint 2 位元組 32 768,32 767 0,65 535 大整數值...