卢雨杰1028

学习内容:

存储过程

如果实现用户的某些需求时,需要编写一组复杂的SQL语句才能实现,那么可以将这组复杂的SQL语句 集编写在数据库中,由JDBC调用来执行这组SQL语句。把编写在数据库中的SQL语句集称为存储过程。

创建存储过程的语法格式

create procedure 存储过程名(参数1,参数2,…)

begin

存储过程语句块;

end;

调用存储过程的语法格式:
call 存储过程名();

触发器

触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整 性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而 是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行。

触发器的特点
触发器具有以下特点:

  1. 与表相关联
    触发器定义在特定的表上,这个表称为触发器表。

  2. 自动激活触发器 当对表中的数据执行 INSERT、UPDATE 或 DELETE 操作时,如果对表上的这个特定操作定义了触发 器,该触发器自动执行,这是不可撤销的。

  3. 不能直接调用
    与存储过程不同,触发器不能被直接调用,也不能传递或接受参数。

  4. 作为事务的一部分
    触发器与激活触发器的语句一起做为对一个单一的事务来对待,可以从触发器中的任何位置回滚。

    创建触发器

CREATE TRIGGER 触发器名称 触发时机 触发事件 ON 表名称

FOR EACH ROW

BEGIN

语句

END;

对于INSERT语句,只有NEW是合法的;对于DELETE语句,只有OLD才合法;而UPDATE语句可以在和 NEW以及OLD同时使用。

索引:

创建索引:

CREATE INDEX ix_UserInfo_UserName ON userinfo(userName);

修改表(添加索引):

ALTER table userinfo ADD INDEX ix_UserInfo_UserName(userName)

测试索引

EXPLAIN SELECT * FROM userinfo WHERE userName='林冲'

查看索引
show index from 表名;

索引选取类型

  1. 越小的数据类型通常更好:越小的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处 理起来更快。 2. 简单的数据类型更好:整型数据比起字符,处理开销更小,因为字符串的比较更复杂。
  2. 尽量避免NULL:应该指定列为NOT nuLL,在MySQL中, 含有空值的列很难进行查询优化,因为它 们使得索引、索引的统计信息以及比较运算更加复杂

学习心得:

标签

评论

this is is footer