數(shù)據(jù)庫(kù)怎么創(chuàng)建 數(shù)據(jù)庫(kù)中char和varchar的區(qū)別?
數(shù)據(jù)庫(kù)中char和varchar的區(qū)別?Char是固定長(zhǎng)度的類型,而varchar是可變長(zhǎng)度的類型。它們之間的區(qū)別如下:在char(m)的數(shù)據(jù)列中,每個(gè)值占用m字節(jié)。如果長(zhǎng)度小于m,MySQL將在其右
數(shù)據(jù)庫(kù)中char和varchar的區(qū)別?
Char是固定長(zhǎng)度的類型,而varchar是可變長(zhǎng)度的類型。它們之間的區(qū)別如下:
在char(m)的數(shù)據(jù)列中,每個(gè)值占用m字節(jié)。如果長(zhǎng)度小于m,MySQL將在其右側(cè)用空格字符來彌補(bǔ)。(在檢索操作中填充的空格字符將被刪除)在varchar(m)的數(shù)據(jù)列中,每個(gè)值只需要足夠的字節(jié)加上一個(gè)字節(jié)就可以在數(shù)據(jù)表中記錄其長(zhǎng)度(即總長(zhǎng)度為L(zhǎng)),如果每個(gè)數(shù)據(jù)列的長(zhǎng)度是固定的,則每個(gè)數(shù)據(jù)行的長(zhǎng)度將是固定的。
2。只要數(shù)據(jù)表中數(shù)據(jù)列的長(zhǎng)度是可變的,那么每個(gè)數(shù)據(jù)行的長(zhǎng)度都是可變的。
3數(shù)據(jù)表中數(shù)據(jù)行的長(zhǎng)度是可變的。為了節(jié)省存儲(chǔ)空間,MySQL會(huì)將此數(shù)據(jù)表中的定長(zhǎng)數(shù)據(jù)列轉(zhuǎn)換為相應(yīng)的變長(zhǎng)類型
例外:長(zhǎng)度小于4個(gè)字符的char數(shù)據(jù)列不會(huì)轉(zhuǎn)換為varchar類型
數(shù)據(jù)庫(kù)中char, nchar,varchar, nvarchar的差異?
1。Char:Char存儲(chǔ)定長(zhǎng)數(shù)據(jù)非常方便,Char字段的索引效率高。例如,define char(10),因此無論您存儲(chǔ)的數(shù)據(jù)是否達(dá)到10字節(jié),它都將占用10字節(jié)的空間。
2. Varchar:存儲(chǔ)可變長(zhǎng)度的數(shù)據(jù),但是存儲(chǔ)效率沒有char高。如果一個(gè)字段的可能值不是固定長(zhǎng)度,我們只知道它不能超過10個(gè)字符。將其定義為varchar(10)是最劃算的。
3. Nchar和nvarchar的名字比前三個(gè)多。這意味著存儲(chǔ)Unicode數(shù)據(jù)類型的字符。我們知道英文字符只需要一個(gè)字節(jié)來存儲(chǔ),但是有許多中文字符需要兩個(gè)字節(jié)來存儲(chǔ)。當(dāng)英文和漢字同時(shí)存在時(shí),很容易造成混淆。Unicode字符集的產(chǎn)生是為了解決字符集的不兼容問題。它的所有字符都用兩個(gè)字節(jié)來表示,也就是說,英文字符也用兩個(gè)字節(jié)來表示。
4. 用n可以存儲(chǔ)4000個(gè)字符,英文字母存在于n型中,也是按兩個(gè)字節(jié)計(jì)算的。它可以存儲(chǔ)兩個(gè)字節(jié)的中英文字符,而不需要一個(gè)字節(jié)。一般來說,nchar/nvarchar用于漢字,char/varchar用于英文和數(shù)字。
數(shù)據(jù)庫(kù)char,varchar,nchar,nvarchar類型分別有什么區(qū)別?各自在什么情況下使用比較好?
簡(jiǎn)而言之,char和nchar只能存儲(chǔ)單字節(jié)字符,如a、a、1、3等,存儲(chǔ)字符的長(zhǎng)度是不可變的。例如char(5),如果輸入字符AA,則存儲(chǔ)空間將用空格填充其他三個(gè)空位,而物理存儲(chǔ)的長(zhǎng)度仍然是5個(gè)字符。
Varchar和nvarchar可以存儲(chǔ)長(zhǎng)度可變的單字節(jié)和雙字節(jié)字符。區(qū)別同上。Char和nchar很少使用。Varchar和nvarchar更常用。因?yàn)閚varchar會(huì)浪費(fèi)存儲(chǔ)空間,所以它通常被更頻繁地使用。Nvarchar確保定義的長(zhǎng)度為100。無論輸入的是單字節(jié)字符還是雙字節(jié)字符,都不能超過100。如果varchar的大小為100,則單字節(jié)字符輸入不能超過100,而雙字節(jié)字符輸入不能超過50
數(shù)據(jù)類型char表示固定長(zhǎng)度,varchar表示實(shí)際長(zhǎng)度的數(shù)據(jù)類型。例如,如果是char類型,當(dāng)您輸入一個(gè)小于長(zhǎng)度的字符時(shí),將填充空格;但是如果是varchar類型,則表示您輸入的字符的實(shí)際長(zhǎng)度
char是一個(gè)固定長(zhǎng)度,例如,如果您定義char(30),則它將始終占用30字節(jié)輸入1字節(jié),則長(zhǎng)度將完成。
Varchar長(zhǎng)度可變。如果您定義varchar(30),如果您有1個(gè)字節(jié),那么它將只占用1個(gè)字節(jié)(事實(shí)上,它將占用更多的字節(jié)來記錄諸如長(zhǎng)度之類的信息)。應(yīng)根據(jù)實(shí)際數(shù)據(jù)的特點(diǎn)選擇字段類型。