学习day21

学习的内容:
事务
事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在关系数
据库中,一个事务可以是一条SQL 语句,或者多条SQL 语句。事务的执行是由高级编程语言编写的程序来执
行的。在Java 中使用JDBC 操作事务。
事务具有4 个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID 特性。


事务的执行分为三个步骤
(1). 开始事务:connection.setAutoCommit(false);
(2). 执行事务:Statement接口和PreparedStatement接口调用executeUpdate()方法。
(3). 结束事务(回滚和提交):connection.rollback(sp);|connection.commit();




存储过程
存储过程(PROCEDURE)是事先经过编译并存储在数据库中的一段 SQL 语句的集合。


语法:
Delimiter $$
create procedure name(参数列表)
begin 
   SQL语句
end $$


JDBC调用存储过程:
在DBHelper中创建一个方法
public int callAble(String sql ,Object...obj) throws SQLException {

//1.从connection获取CallAbleStatementd对象
cs  = connection.prepareCall(sql);
//2.为存储过程参数赋值
cs.setObject(1, obj[0]);
cs.setObject(2, obj[1]);
//3.注册输出参数
cs.registerOutParameter(3, Types.INTEGER);
cs.executeUpdate();

return cs.getInt(3);
}


在main方法中调用该方法:
DBHelper helper = new DBHelper();

String sql = "{call register(?,?,?)}";
//插入名字和密码
Object [] obj = {"大雄","admin"};
//查出id
int userid = helper.callAble(sql, obj);
System.out.println(userid);
}




触发器
触发器和存储过程的区别
1.触发器是特殊的存储过程
2.存储过程需要调用,触发器不需要调用
3.存储过程中有输入输出参数,触发器中没有


特点:
1. 与表相关联
触发器定义在特定的表上,这个表称为触发器表。
2. 自动激活触发器
当对表中的数据执行 INSERT、UPDATE 或 DELETE 操作时,如果对表上的这个特
定操作定义了触发器,该触发器自动执行,这是不可撤销的。
3. 不能直接调用
与存储过程不同,触发器不能被直接调用,也不能传递或接受参数。
4. 作为事务的一部分
触发器与激活触发器的语句一起做为对一个单一的事务来对待,可以从触发器中的
任何位置回滚。

语法
Delimiter $$
create trigger 触发器名称
after/before
insert/delete/update
on 表名
for row each
begin
sql语句;(注意new和old的使用)
end $$




索引
定义:是数据库对象,用来提高查询效率


分类
1.普通索引
2.唯一索引(值唯一,可为null)
3.主键索引(不可为null)
4.全文索引(FULLTEXT)
5.组合索引


语法
create index index_name on 表名(列名,即字段名)

在建立索引的时候应该考虑索引应该建立在数据表中的哪些列上面,一般来说:
1. 在经常需要搜索的列上创建索引,可以加快索引的速度
2. 在表与表的连接条件上加上索引,可以加快连接查询的速度
3. like 语句不使用索引
4. 在列上进行运算,索引会失效。


视图
视图是基于查询的虚拟表。通俗的理解,视图就是一条SELECT 语句执行后返回的结果集。


使用视图是为了方便复杂的查询语句。基本思路是将复杂的查询语句定义在视图内部,然后对视图
进行查询,从而简化复杂的查询语句。


语句
CREATE VIEW 视图名
AS
SELECT 列1,列2...
FROM 表;


学习的问题:
今天学了不少啊,但是都是表面的简单运用,其实还有好多细节没探究,jsp很不熟,好好预习希望能看懂。

你可能感兴趣的:(学习day21)