MySQL触发器是数据库中用于自动执行一系列操作的数据库对象,
通常与表的特定事件(如插入、更新、删除)相关联。 以下是一些关于MySQL触发器的知识点:
- 触发器类型:
- 根据触发事件的不同,可以将触发器分为INSERT触发器、UPDATE触发器和DELETE触发器。
- 触发时机:
- 触发器可以设置为在触发事件发生之前(BEFORE)或之后(AFTER)执行。
- 触发事件:
- 触发器基于特定的DML事件激活,包括INSERT、UPDATE和DELETE操作。
- 作用域:
- 触发器关联于特定的表,当对该表执行相应的DML操作时,触发器被激活。
- 语法结构:
- 创建触发器的基本语法包含触发器名、触发时机、触发事件、表名、FOR EACH ROW以及触发器主体。
- 限制:
- 每个表对每个事件每次只允许有一个触发器,且触发器不能调用将数据直接返回客户端的存储程序。
- 事务:
- 在触发器内不能显示或隐式地开始或结束事务,如使用START TRANSACTION, COMMIT或ROLLBACK语句。
- NEW和OLD关键字:
- 这两个关键字用于访问触发器所在表中发生变化的数据行内容。在INSERT型触发器中使用NEW,UPDATE型触发器中同时使用NEW和OLD,DELETE型触发器中使用OLD。
- 设计考虑:
- 由于触发器是基于行触发的,过于复杂的触发器或过多的触发器可能会影响数据的插入、修改或删除,因此在设计时需要谨慎考虑。
JDBC(Java Database Connectivity)是一套面向对象的应用程序接口,它允许Java程序通过SQL语句与数据库进行交互。以下是一些关于JDBC的知识点:
-
JDBC的作用:
-
JDBC是Java程序访问数据库的标准接口,它为多种关系型数据库提供了统一的访问方式。
-
JDBC连接数据库的步骤:
- 加载驱动:通过
Class.forName()方法加载数据库驱动。 - 创建连接:使用
DriverManager.getConnection()方法建立与数据库的连接。 - 执行SQL并返回执行结果:可以通过
Statement或PreparedStatement对象来执行SQL语句,并通过ResultSet获取执行结果。 - 处理结果:对
ResultSet结果集进行处理,获取所需的数据。 - 关闭资源:关闭
Statement和Connection对象以释放资源。
- 加载驱动:通过
-
JDBC中的ResultSet:
-
ResultSet是一个结果集,它存放了执行SQL查询后返回的数据,可以理解为数据库中的数据表在Java程序中的表现形式。
-
PreparedStatement的优点:
- 预编译的SQL语句:PreparedStatement可以使用预编译的SQL语句,提高效率。
- SQL缓存:PreparedStatement可以利用SQL缓存区,提高执行效率。
- 防止SQL注入:PreparedStatement可以有效防止SQL注入攻击。
- 事务处理:
- 在JDBC中,事务处理是通过
commit()和rollback()方法来实现的。可以通过设置setAutoCommit(false)来禁止自动提交,然后手动控制事务的提交或回滚以保持数据的一致性。 - 连接池的作用:
- 为了提高性能,减少频繁创建和关闭数据库连接所带来的开销,通常会使用连接池技术来管理数据库连接。连接池可以重复使用连接,当使用完连接后,调用
close()方法不会真正关闭连接,而是将连接归还给连接池,以供再次使用。 - JDBC驱动器:每个数据库都有自己的JDBC驱动器,这是一个jar包,通常由数据库厂商提供。Java程序需要引入对应的数据库驱动jar包才能正常访问数据库服务器。