数据库视图
数据库中一张虚拟的表,允许不同用户或者应用程序以不同方式查看同一张表中的数据。
- 创建视图
create view view_tb as select id,name from user;
- 使用视图
select * from view_tb;
- 删除视图
drop view view_tb;
4.视图的限制
- 创建视图后,如上的user表发生变化时,view_tb 会相应发生联动。
- 定义视图时不能使用order by子句
- 通过聚合得到的视图无法更新
触发器
触发器定义了一系列操作,可以再对指定表进行插入,更新,删除的时候,自动执行这些操作,完成对目标表的管理
1.创建触发器(插入: tab1插入一条新数据后,tab2会同步更新)
create trigger t_afterinsert_on_tab1
after insert on tab1
for each row
begin
insert into tab2(tab2_id) values(new.tab1_id);
end
2.创建触发器(删除:tab1删除一条数据后,tab2会同步更新)
create trigger t_afterdelete_on_tab1
after insert on tab1
for each row
begin
delete from tab2 where tab2_id = old.tab1_id;
end
3.删除触发器
drop trigger t_afterinsert_on_tab1
drop trigger t_afterdelete_on_tab1
存储过程(Procedure)
存储过程是一组为了完成特定功能的SQL语句的集合,存储在数据库中的,用户通过指定存储过程的名字和参数进行调用
存储过程相当于定义在MySql中的方法,开发者可以直接调用。有以下优点
- 只需要创建一次,就可以任意调用
- 执行速度更快
- 更好的安全机制
参数:输入输出类型、参数名称、参数数据类型
入参:java方法中的参数
出参:java方法中的返回值
1.创建存储过程(入参)
create procedure add_name(in target int)
begin
declare name varchar(11);
if target = 1 then
set name = 'Mysql';
else
set name = 'java';
else if;
insert into test(name) values(name);
end;
2.调用存储过程
call add_name(2);
5.删除存储过程
drop procedure add_name;
3.创建存储过程(出参)
create procedure count_of_student(out count_num int)
begin
select count(*) into count_num from student;
end;
4.调用存储过程(出参)
call count_of_student(@count_num);
select @count_num
网友评论