數(shù)據(jù)庫(kù)連接池的優(yōu)點(diǎn)運(yùn)行原理,數(shù)據(jù)庫(kù)三范式,數(shù)據(jù)庫(kù)空值排序

數(shù)據(jù)庫(kù)連接池的優(yōu)點(diǎn)運(yùn)行原理:

在我們不使用數(shù)據(jù)庫(kù)連接池的時(shí)候,每次訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)都需要?jiǎng)?chuàng)建連接,

使用完成之后需要釋放關(guān)閉連接,而這樣是很耗費(fèi)資源的。當(dāng)我們使用

數(shù)據(jù)庫(kù)連接池的時(shí)候,在tomcat啟動(dòng)的時(shí)候就創(chuàng)建了指定數(shù)量的連接,

之后當(dāng)我們程序使用的時(shí)候就直接從連接池里面取,而不需要?jiǎng)?chuàng)建,同理,

當(dāng)我們使用完的時(shí)候也不需要關(guān)閉連接,而是將連接返回到連接池中,供

其他請(qǐng)求繼續(xù)使用。

DBCP:比較穩(wěn)定。

C3P0: 性能比較高。

數(shù)據(jù)庫(kù)三范式

第一范式:數(shù)據(jù)庫(kù)表中的所有字段值都是不可分解的原子值。

第二范式:需要確保數(shù)據(jù)庫(kù)表中的每一列都和主鍵相關(guān),而不能只與主鍵的某一部分相關(guān)(主要針對(duì)聯(lián)合主鍵而言)

第三范式:需要確保數(shù)據(jù)表中的每一列數(shù)據(jù)都和主鍵直接相關(guān),而不能間接相關(guān)

數(shù)據(jù)庫(kù)空值排序

【sqlserver】:

sqlserver 認(rèn)為 null 最小。

升序排列:null 值默認(rèn)排在最前。

要想排后面,則:order by case when col is null then 1 else 0 end ,col

降序排列:null 值默認(rèn)排在最后。

要想排在前面,則:order   by case when col is null then 0 else 1 end , col desc

【oracle】:

oracle認(rèn)為 null 最大。

升序排列,默認(rèn)情況下,null值排后面。

降序排序,默認(rèn)情況下,null值排前面。

有幾種辦法改變這種情況:

(1)用 nvl 函數(shù)或decode 函數(shù) 將null轉(zhuǎn)換為一特定值

(2)用case語(yǔ)法將null轉(zhuǎn)換為一特定值(oracle9i以后版本支持。和sqlserver類(lèi)似):

order by (case mycol when null then '北京漂客'     else   mycol   end)

(3)使用nulls first 或者nulls last 語(yǔ)法。

這是oracle專(zhuān)門(mén)用來(lái)null值排序的語(yǔ)法。

nulls first :將null排在最前面。如:select * from mytb order by mycol nulls first

null last :將null排在最后面。如:select * from mytb order by mycol nulls last

如果要想讓含有null的列按照自己的意愿進(jìn)行排序,可做如上處理。

【mysql】:

MySQL同sqlserver,null默認(rèn)最小,解決辦法同sqlserver

圖片1.png
登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP