三大關聯式資料庫字段值超長的乙個有趣對比

2021-09-07 15:06:00 字數 2004 閱讀 3576

三大關聯式資料庫字段值超長的乙個有趣對比

在開發中,我們可能會遇到插入字段值超長的情況,前陣子遇到這樣乙個案例,結果一對比後發現乙個有趣的現象,如果插入字段值超長,oracle、sql server、mysql它們會提示那個字段值超長嗎?下面看看實驗吧:

oracle資料庫

table test(id number(10), name varchar2(12));

table created.
sql> insert into test
2  select 10, 'kkkkkkkkkkkkkkkkkk'

from dual;

select 10, 'kkkkkkkkkkkkkkkkkk'

from dual

*
error at line 2:
ora-12899: value too large

forcolumn "sys"."test"."name" (actual: 18, maximum:

12)
mysql資料庫

sql> create

table test(id number(10), name varchar2(12));

table created.
sql> insert into test
2  select 10, 'kkkkkkkkkkkkkkkkkk'

from dual;

select 10, 'kkkkkkkkkkkkkkkkkk'

from dual

*
error at line 2:
ora-12899: value too large

forcolumn "sys"."test"."name" (actual: 18, maximum:

12)
sql server資料庫

如上實驗所示,oracle、mysql都會提示具體字段超長的細節資訊,而sql server就傻傻的提示

「string or binary data would be truncated.

」如果你表結構欄位有十幾個,那麼就乙個個核對吧。 不吹不黑,其實sql server有蠻多不友好、甚至讓人詬病的地方。舉個例子,使用sqlbulkcopy插入資料時,遇到錯誤

「資料來源的 string 型別的給定值不能轉換為指定目標列的型別***

」, 有可能是目標表字段的長度比要匯入的資料長度小或者其它原因,難道準確、友好的提示具體出錯資訊那麼難?還有使用sqlbulkcopy有時候提示「」

, 你妹啊,這不是坑爹嗎! 這些都是一些細節地方,有時候真的細節見高低!此文權當吐槽篇!

關聯式資料庫的三大正規化

資料庫設計是指對於乙個給定的應用環境,構造最右的資料庫模式,建立資料庫及其應用系統,使其能夠有效儲存資料,滿足使用者的需求 第一正規化是指在乙個關係中,要求每個屬性都是不可再分割的 如上圖所示的 中,成績實際可以繼續分割,因而不滿足第一正規化的要求 如果將其轉化成第一正規化,則可以將成績繼續分割,如...

關聯式資料庫的三正規化

關聯式資料庫的三正規化 1 第一正規化 1nf 同一列不能儲存多個屬性 應保持列的原子性 在任何乙個關聯式資料庫中,第一正規化 1nf 是對關係模式的基本要求,不滿足第一正規化 1nf 的資料庫就不是關聯式資料庫。所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多...

關聯式資料庫的三正規化

簡單的說,第一正規化就是原子性,字段不可再分割 第二正規化就是屬性完全依賴於主鍵,沒有部分依賴 第三正規化就是沒有傳遞依賴,屬性不依賴於其它非主屬性。1nf的定義為 符合1nf的關係中的每個屬性都不可再分。下表所示的情況,就不符合1nf的要求。1nf是所有關係型資料庫的最基本要求,也就是說,只要在r...