1. 程式人生 > >char varchar和nvarchar的區別

char varchar和nvarchar的區別

分享一下我老師大神的人工智慧教程吧。零基礎,通俗易懂!風趣幽默!http://www.captainbed.net/

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

前言

      設計資料庫的時候,遇到了欄位的型別用char,varchar和nvarchar的問題。下面小編就來講解一下。

是什麼

       char是定長的,也就是無論你輸入的字元多長,它都是制定的數目的長度。例如char(5),你輸入的字元小於5,它會在後面補空值。當你輸入的字元大於指定的數時,它會擷取超出的部分。 

        varchar(n),可變長度,非Unicode字元資料。n的取值範圍為1至8000。儲存大小為輸入資料的位元組的實際長度,而不是n個位元組。所輸入的資料字元長度可以為0。

        nvarchar(n),包含n個位元組的可變長度Unicode字元資料。n的取值範圍為1到4000.位元組的儲存大小是所輸入字元個數的兩倍。所輸入的資料字元長度可以為0.

有什麼區別

        char儲存定長資料很方便,char欄位上的索引效率級高,比如上面定義的char(5),不論你輸入的字元是否到了5個位元組,都要佔用5個位元組的儲存空間。

         varchar。儲存變長資料,但儲存效率沒有char高。如果一個欄位的值不固定長度,我們只知道它不可能超過5個字元,把它定義成varchar(5)是最合算的。但漢字眾多,需要兩個位元組儲存,英文與漢字。varchar還有一個特別智慧的功能,就是它能識別出位元組用於儲存實際使用多大的長度,這都要歸功於一件它的處理。varchar型別的實際長度是它的值的實際長度+1,這個1就是用來儲存這一位元組實際使用的長度的。

         從空間上考慮,用varchar合適,從效率上來說,用char合適。選哪個還得遵從實際情況。

         nvarchar就得好好說說了。我們都知道,英文字元只需要一個位元組儲存就夠了,漢字需要兩個位元組儲存。所以英文和漢字同時存在就容易出現混亂,nvarchar就是來解決這個問題的,它無論是英文還是漢字都是用兩個位元組來表示的。所以它最多能儲存4000個字元,漢字和英文都一樣。char和varchar最多能儲存8000個英文,4000個漢字。可以看出使用nvarchar不用擔心輸入的字元是英文還是漢字的,但在儲存英文數量上有些損失。

小結

         綜合考慮,如果字元中含有中文字元,就用nvarchar,如果是純英文和數字的,那麼就選用char/varchar。



  

           

給我老師的人工智慧教程打call!http://www.captainbed.net/

這裡寫圖片描述