數(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
工程師必備
- 項(xiàng)目客服
- 培訓(xùn)客服
- 平臺(tái)客服
TOP




















