戚权20201028
知识点
存储过程
#创建存储过程的语法格式
create procedure 存储过程名(参数1,参数2,…)
begin
存储过程语句块;
end;
MySQL 存储过程的调用
调用存储过程的语法格式:
call 存储过程名 ()
#设置值
set @b = 5;
#调用
call proc_adder(2, @b, @sum);
#显示
select @sum ;
java 调用存储过程
//调用存储过程proc_adder,其中{CALL}是固定写法
cst = conn.prepareCall("{CALL proc_adder(?,?,?)}");
//为前两个占位符赋值
cst.setObject(1, 158);
cst.setObject(2, 666);
//将第三个占位符注册为OUT类型的整型参数
cst.registerOutParameter(3, Types.INTEGER);
//执行存储过程
cst.executeUpdate();
//获取第三个OUT类型的参数
int sum = cst.getInt(3);
System.out.println("sum: " + sum);
存储过程中的控制语句
if
IF type = 0 THEN
set c = 'param is 0';
ELSEIF type = 1 THEN
set c = 'param is 1';
ELSE
set c = 'param is others, not 0 or 1';
END IF;
CASE
CASE type
WHEN 0 THEN
set c = 'param is 0';
WHEN 1 THEN
set c = 'param is 1';
ELSE
set c = 'param is others, not 0 or 1';
END CASE;
while
BEGIN
DECLARE i int;
DECLARE s int;
SET i = 0;
SET s = 0;
WHILE i <= n DO
set s = s + i;
set i = i + 1;
END WHILE;
SELECT s;
END
触发器
监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行
触发器的特点
- 与表相关联:触发器定义在特定的表上,这个表称为触发器表。
- 自动激活触发器:当对表中的数据执行 INSERT、UPDATE 或 DELETE 操作时,如果对表上的这个特定操作定义了触发器,该触发器自动执行,这是不可撤销的。
- 不能直接调用:与存储过程不同,触发器不能被直接调用,也不能传递或接受参数。
- 作为事务的一部分:触发器与激活触发器的语句一起做为对一个单一的事务来对待,可以从触发器中的任何位置回滚。
创建触发器
CREATE TRIGGER 触发器名称 触发时机 触发事件
ON 表名称
FOR EACH ROW
BEGIN
语句
END;
使用触发器实现用户注册业务
DELIMITER $$
CREATE TRIGGER tr_register
AFTER INSERT ON userinfo FOR EACH ROW
BEGIN
INSERT INTO userdetails(id) VALUES(NEW.id);
END $$
注意事项
在某张表的触发器中,不能再进行对此表的操作。比如:给 Userinfo 表添加一个触发器tr_register ,在此触发器中执行内容不能是再对 Userinfo 表进行操作了。否则在触发器被激活时,会报1442错误。
索引
**索引的数据结构 ** B-Tree
索引是如何提高查询效率的呢?MySQL数据库的索引使用了B-Tree数据结构存储数据,来提高查询效率的。了解B-Tree数据结构有助于理解索引提高查询效率的原理。
使用索引
CREATE INDEX ix_UserInfo_UserName ON userinfo(userName);
修改表(添加索引)
ALTER table userinfo ADD INDEX ix_UserInfo_UserName(userName)
测试索引
EXPLAIN SELECT * FROM userinfo WHERE userName='林冲';
- 其中, EXPLAIN 关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。
索引优缺点
优点
索引由数据库中一列或多列组合而成,其作用是提高对表中数据的查询速度
索引的优点是可以提高检索数据的速度
缺点
索引的缺点是创建和维护索引需要耗费时间
索引可以提高查询速度,会减慢写入速度。索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是否有必要。
总结
今天的内容相对来说比较轻松,不是特别难。
近期评论