数据库连接池的优点运行原理,数据库三范式,数据库空值排序

数据库连接池的优点运行原理:

在我们不使用数据库连接池的时候,每次访问数据库都需要创建连接,

使用完成之后需要释放关闭连接,而这样是很耗费资源的。当我们使用

数据库连接池的时候,在tomcat启动的时候就创建了指定数量的连接,

之后当我们程序使用的时候就直接从连接池里面取,而不需要创建,同理,

当我们使用完的时候也不需要关闭连接,而是将连接返回到连接池中,供

其他请求继续使用。

DBCP:比较稳定。

C3P0: 性能比较高。

数据库三范式

第一范式:数据库表中的所有字段值都是不可分解的原子值。

第二范式:需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)

第三范式:需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关

数据库空值排序

sqlserver】:

sqlserver 认为 null 最小。

升序排列:null 值默认排在最前。

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

降序排列:null 值默认排在最后。

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

oracle】:

oracle认为 null 最大。

升序排列,默认情况下,null值排后面。

降序排序,默认情况下,null值排前面。

有几种办法改变这种情况:

1)用 nvl 函数或decode 函数 将null转换为一特定值

2)用case语法将null转换为一特定值(oracle9i以后版本支持。和sqlserver类似):

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

3)使用nulls first 或者nulls last 语法。

这是oracle专门用来null值排序的语法。

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

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

如果要想让含有null的列按照自己的意愿进行排序,可做如上处理。

mysql】:

MySQL同sqlserver,null默认最小,解决办法同sqlserver


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭