資料庫中NCHAR CHAR等的區別

2021-05-24 22:41:18 字數 1452 閱讀 6684

對於程式中的string型字段,sqlserver中有char、varchar、nchar、nvarchar四種型別來對應(暫時不考慮text和ntext),開建立資料庫中,對這四種型別往往比較模糊,這裡做一下對比。

1.有var字首的,表示是實際儲存空間是變長的,varchar,nvarchar

所謂定長就是長度固定的,當輸入的資料長度沒有達到指定的長度時將自動以英文空格在其後面填充,使長度達到相應的長度;而變長字元資料則不會以空格填充,比較例外的是,text儲存的也是可變長。

2.n表示unicode字元,即所有字元都佔兩個位元組,nchar,nvarchar

字元中,英文本元只需要乙個位元組儲存就足夠了,但漢字眾多,需要兩個位元組儲存,英文與漢字同時存在時容易造成混亂,unicode字符集就是為了解決字符集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文本元也是用兩個位元組表示。

3.基於以上兩點來看看字段容量

char,varchar

最多8000個英文,4000個漢字

nchar,nvarchar

可儲存4000個字元,無論英文還是漢字

4.使用(個人偏好)

a.如果資料量非常大,又能100%確定長度且儲存只是ansi字元,那麼char 

b.能確定長度又不一定是ansi字元或者,那麼用nchar;

c.對於超大資料,如文章內容,使用ntext

d.其他的通用nvarchar

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"。和char、varchar比較起來,nchar、nvarchar最多儲存4000個字元,不論是英文還是漢字;而char、varchar最多能儲存8000個英文,4000個漢字。可以看出使用nchar、nvarchar資料型別時不用擔心輸入的字元是英文還是漢字,較為方便,但在儲存英文時數量上有些損失。

所以一般來說,如果含有中文字元,用nchar/nvarchar,如果純英文和數字,用char/varchar。

資料庫新增冪等操作 基於資料庫實現冪等介面

tl dr 通過唯一編號確定同一請求,沒有唯一編號的自行生成。資料庫記錄操作狀態,資料庫事務保證資料一致性。概述通過http api進行通訊的系統,在支付或者只允許操作一次的相關場景中,對介面的冪等性有嚴格要求。介面的冪等性體現在 請求執行成功所得到的結果與次數無關 如果介面沒有實現冪等性,對於轉賬...

C Access資料庫連線 讀寫等

使用c 程式語言,連線對access資料庫進行操作,常用的方法有dao和ado兩種方式,本文將介紹採用ado的方式方位access資料庫。先介紹一下ado,ado activex data objects 是乙個用於訪問資料來源的com組建。它提供了程式語言和統一資料訪問方式ole db的乙個中間層...

ODBC OLEDB ADO等資料庫訪問技術

花了點時間理了一下資料庫訪問技術相關的東西,一般地,乙個資料庫產品的發布後,相應地,會為開發者提供一套訪問改資料庫的介面,比如mysql提供的c api,可以通過這些資料庫產品本身的api進行資料庫操作。比如 通過api mysql init mysql real connect 連線資料庫,其它的...