tips 1
原生的jdbc连接数据库可以概述为六个步骤:
- 注册数据库驱动
- 取得数据库连接对象Connection
- 创建SQL执行对象
- 执行SQL命令,并返回结果集
- 处理结果集
- 依次关闭结果集
tips 2
J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙
。
如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量由配置参数决定。当使用的池连接调用完成 后,池驱动程序将此连接表记为空闲
,其他调用就可以使用这个连接。。
实现方式:
返回的Connection是原始Connection的代理,代理Connection的close方法不是真正关连接,而是把它代理的Connection对象还回到连接池中。
tips 3
- 第一范式就是确保每列不可再分;
- 第二范式就是确保表中的每列都和主键相关;
- 第三范式就是确保**每列都和主键列直接相关,而不是
间接相关**。
tips 4
定义主键和外键主要是维护关系数据库的完整性。
- 主键是能确定一条记录的唯一标识,
比如,一条用户记录包括身份证号,姓名等。
身份证号是唯一能确定你这个人的,其他都可能有重复,
所以,身份证号可以是主键。 - 外键用于与另一张表的关联,能确定另一张表记录的字段,用于保持数据的一致性,一表的外键是另一张表的主键或唯一字段。
比如,A表中的一个字段,是B表的主键,那它就可以是A表的外键。
tips 5
MySql 默认端口号为 :3306
; Oracle 默认端口号为:1521
tips 6
Java中long
类型占64位,因此数据库可以采用bigint
类型与之对应,都是占用64位的内容空间。
boolean
类型在mysql中可以直接采用int
类型表示。
tips 7
触发器是由INSERT
、UPDATE
和DELETE
等事件来触发某种特定操作。
满足触发器的触发条件时,数据库系统就会执行触发器中定义的程序语句。这样做可以保证某些操作之间的一致性。
例如,当学生表汇总增加了一个学生的信息时,学生的总数就必须同时改变。可以在这里创建一个触发器,每次增加一个学生的记录,就执行一次计算学生总数的操作。这样就可以保证每次增加学生的记录后,学生总数是与记录数是一致的。
触发器触发的执行语句可能只有一个,也可能有多个。
tips 8
存储过程里的语句并不是一条条按编写顺序执行。
数据库在编译存储过程时会有一个优化的过程,在不改变存储过程最后结果的前提下,可能会对存储过程里的语句有一个顺序的调整。
tips 9
内连接查询匹配的数据,左外连接以左边表的数据为准,即左边表的数据全部查出,右边表无匹配数据则以空代替。
右外连接则相反。
tips 10
事务简单来说就是为了保证数据的一致性。
使用事务机制的好处非常明显,例如银行转账之类的交易操作汇总,事务有着重要的作用。事务的成功取决于事务单元账户相互依赖的操作行为是否能全部执行成功,只要有一个操作行为失败,整个事务将事变。
事务的边界应该放在Service
层,因为Service
层会涉及很多Dao
层的操作,为了保证Dao
层操作的一致性,因此事务应该放在此层中。
tips 11
Read uncommitted
读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。
Read committed
读提交,顾名思义 ,就是一个事务要等另一个事务提交后才能读取数据。
Repeatable read
重复读,就是在开始读取数据(事务开启)时,不再允许修改操作。
Serializable
序列化
Serializable 是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。
tips 12
存储过程是SQL,语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。
tips 13
连接池主要减少数据库连接的创建时间和连接销毁时间
数据库连接池主要有:c3p0、DBCP、和druid。
tips 14
MySQL:
查询代码的书写顺序和执行顺序:
查询语句书写顺序:
select-from-where-group by-having-order by-limit
查询语句的执行顺序:
from-where-group by-having-select-order-limit
tiips 15
- 原子性,是指事务是一个不可分割的工作单位,事务中的操作要么发生,要么不发生。
- 一致性,一个事务中,事务前后数据的完整性必须保持一致。
- 隔离性,多个事务,事务的隔离性是指多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离。
- 持久性,一个事务一旦被提交,它对数据库中的数据的改变就是永久性的,接下来及时使数据库发生故障也不应该对其有任何影响。