JDBC访问数据库的基本步骤是什么?
- 加载驱动
- 通过DriverManager获取连接对象Connection
- 通过连接对象获取会话
- 通过会话进行数据的增删改查,封装对象
- 关闭资源
说说 PreparedStatement 和 Statement 的区别?
效率: 预编译会话相比于普通会话, 数据库系统不会对相同的SQL语句不会再次编译
安全性: 可以有效的避免SQL注入攻击! SQL注入攻击就是从客户端输入一些非法的特殊字符,而使服务器端在构造SQL语句的时候仍然能够正确构造, 从而收集程序和服务器的信息和数据
数据库连接池的原理。为什么要使用连接池。
原理:数据连接池的基本思想就是为了数据库建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量、使用情况,为系统开发,测试及性能调整提供依据。
为什么使用连接池?
- 数据库连接是一件费时的操作,连接池可以使多个操作共享一个连接。
- 使用连接池是为了提高对数据库连接资源的管理。
什么是事务
事务就是将多个业务操作看做一个事务单元,为了确保要么都成功,要么都失败。
数据库事务的四个特性
原子性:把一个事务看做最小单位,不可分割,事务中的多个操作要么都成功,要么都失败。
一致性:事务前后结构一致性;事务前后数据与业务预期一致性。
隔离性:当产生多个事务同时执行时,事务与事务之间数据是互不影响的。
持久性:事务操作结束后,数据会持久化保存到磁盘中。
drop, delete 与 truncate 的区别
drop直接删除表。
truncate删除表中数据,再插入时自增长id又从1开始。
delete删除表中数据,可以加where子句。
查询语句不同元素(where、limit、group by、having等等)执行先后顺序
标准SQL规范中它们的顺序依次为from-->where-->group by-->having-->select-->order by-->limit
左连接、右连接、内连接和全外连接的区别
左连接:返回左表中的所有记录和连接右表中字段相等的记录
右连接:返回右表中的所有记录和连接左表中字段相等的记录
内连接:只返回两个表中字段相等的记录
全外连接:返回左右两个表中字段相等的记录和剩余的所有记录