回覆列表
  • 1 # 使用者4044295222555

    他們的儲存方式和資料的檢索方式都不一樣。

    資料的檢索效率是:char>varchar>text

    空間佔用方面,要具體情況具體分析了。

    CHAR(M) M個位元組,0

    VARCHAR(M) L+1個位元組,其中L

    TEXT L+2個位元組,其中L

    Char為定長,varchar,text為變長

    Char在儲存的時候,後面(右邊)會用空格填充到指定的長度,在檢索的時候後面的空格會去掉,所以檢索出來的資料需要再用什麼trim之類的函式去處理。(與sql server可能有些不同)

    Varchar在儲存的時候,不進行填充。當值儲存和檢索時尾部的空格仍保留。

    TEXT列不能有預設值,儲存或檢索過程中,不存在大小寫轉換.

    當儲存的字元超過他們定義的長度時候,如果不是在sql伺服器的嚴格模式下,都會自動擷取合適的欄位儲存,而不會出現錯誤。但是,如果是中文的話同樣要報錯誤:)比如定義char(4),然後insert (‘c哈哈’).

    注意一點的,Char,Varchar不像數值型別,有系統預設長度,所以必須在括號裡定義長度,可以有預設值

    text不可以寫預設值,後面如果指定長度,不會報錯誤,但是這個長度是不起作用的,意思就是你插入資料的時候,超過你指定的長度還是可以正常插入

  • 中秋節和大豐收的關聯?
  • 南瓜粉怎麼做好吃,南瓜粉的吃法?