數據庫字段的長度 作用


數據庫字段的長度    指的是字節

 

作用:如果不指定長度,數據庫在存儲的時候都必須給每個字段預留最大的存儲空間,這樣極大的浪費了空間,也加大了數據庫本身管理的難度。字段類型長度應設置為保證正常使用需求下的最小長度


char、varchar、text和nchar、nvarchar、ntext的區別

1、CHAR。CHAR存儲定長數據很方便,CHAR字段上的索引效率級高,比如定義char(10),那么不論你存儲的數據是否達到了10個字節,都要占去10個字節的空間,不足的自動用空格填充。

 

2、VARCHAR。存儲變長數據,但存儲效率沒有CHAR高。如果一個字段可能的值是不固定長度的,我們只知道它不可能超過10個字符,把它定義為 VARCHAR(10)是最合算的。VARCHAR類型的實際長度是它的值的實際長度+1。為什么“+1”呢?這一個字節用於保存實際使用了多大的長度。從空間上考慮,用varchar合適;從效率上考慮,用char合適,關鍵是根據實際情況找到權衡點。

 

3、TEXT。text存儲可變長度的非Unicode數據,最大長度為2^31-1(2,147,483,647)個字符。

 

4、NCHAR、NVARCHAR、NTEXT。這三種從名字上看比前面三種多了個“N”。它表示存儲的是Unicode數據類型的字符。我們知道字符中,英文字符只需要一個字節存儲就足夠了,但漢字眾多,需要兩個字節存儲,英文與漢字同時存在時容易造成混亂,Unicode字符集就是為了解決字符集這種不兼容的問題而產生的,它所有的字符都用兩個字節表示,即英文字符也是用兩個字節表示。nchar、nvarchar的長度是在1到4000之間。和char、varchar比較起來,nchar、nvarchar則最多存儲4000個字符,不論是英文還是漢字;而char、varchar最多能存儲8000個英文,4000個漢字。可以看出使用nchar、nvarchar 數據類型時不用擔心輸入的字符是英文還是漢字,較為方便,但在存儲英文時數量上有些損失。

 

char、varchar、text、ntext、bigint、int、smallint、tinyint和bit的區別及數據庫的數據類型

 

Varchar 對每個英文(ASCII)字符都占用2個字節,對一個漢字也只占用兩個字節

char 對英文(ASCII)字符占用1個字節,對一個漢字占用2個字節Varchar 的類型不以空格填滿,比如varchar(100),但它的值只是"qian",則它的值就是"qian"而char 不一樣,比如char(100),它的值是"qian",而實際上它在數據庫中是"qian "(qian后共有96個空格,就是把它填滿為100個字節)。由於char是以固定長度的,所以它的速度會比varchar快得多!但程序處理起來要麻煩一點,要用trim之類的函數把兩邊的空格去掉!

ntext

可變長度 Unicode 數據的最大長度為 230 - 1 (1,073,741,823) 個字符。存儲大小是所輸入字符個數的兩倍(以字節為單位)。ntext 在 SQL-92 中的同義詞是 national text。

 

text

服務器代碼頁中的可變長度非 Unicode 數據的最大長度為 231-1 (2,147,483,647) 個字符。當服務器代碼頁使用雙字節字符時,存儲量仍是 2,147,483,647 字節。存儲大小可能小於 2,147,483,647 字節(取決於字符串)。

bigint:從-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型數據,存儲大小為 8 個字節。

 

int:從-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型數據,存儲大小為 4 個字節。

 

smallint:從-2^15(-32,768)到2^15-1(32,767)的整數數據,存儲大小為 2 個字節。

 

tinyint:從0到255的整數數據,存儲大小為 1 字節。

 

bit:1或0的整數數據,存儲大小為 1 字節。

其中常用的數字型所占用的字節數如下,根據字節數即可算出表示的范圍了
TINYINT 1 字節
SMALLINT 2 個字節
MEDIUMINT 3 個字節
INT 4 個字節
INTEGER 4 個字節
BIGINT 8 個字節
FLOAT(X) 4 如果 X < = 24 或 8 如果 25 < = X < = 53
FLOAT 4 個字節
DOUBLE 8 個字節
DOUBLE PRECISION 8 個字節
REAL 8 個字節
DECIMAL(M,D) M字節(D+2 , 如果M < D)
NUMERIC(M,D) M字節(D+2 , 如果M < D)

日期和時間類型
列類型 需要的存儲量
DATE 3 個字節
DATETIME 8 個字節
TIMESTAMP 4 個字節
TIME 3 個字節
YEAR 1 字節

串類型
列類型 需要的存儲量
CHAR(M) M字節,1 VARCHAR(M) L+1 字節, 在此L TINYBLOB, TINYTEXT L+1 字節, 在此L< 2 ^ 8
BLOB, TEXT L+2 字節, 在此L< 2 ^ 16
MEDIUMBLOB, MEDIUMTEXT L+3 字節, 在此L< 2 ^ 24
LONGBLOB, LONGTEXT L+4 字節, 在此L< 2 ^ 32
ENUM(‘value1′,’value2′,…) 1 或 2 個字節, 取決於枚舉值的數目(最大值65535)
SET(‘value1′,’value2′,…) 1,2,3,4或8個字節, 取決於集合成員的數量(最多64個成員)
————————————————
版權聲明:本文為CSDN博主「GodFu1012」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_34642668/article/details/76662162


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM