本质上是一个虚拟的表,即看得见但是不实际存在
使用场景:
注意:修改视图,也会引起原表的变化,我们不要这么做,视图仅用于查询
# 语法
create or replace view view_name as 查询语句; # view_name 表示创建视图的虚拟表名字 or replace 如果视图已经存在了,就替换里面的查询语句;
# 修改视图
alter view view_name as 新的语句;
# 删除视图
drop view view_name;
# 查看
desc view_name;
show create view view_name;
# 举例子
create table salaryes (id int ,name char(10), money float);
insert into salaryes values (1,"张三丰",50000),(2,"张无忌",40000);
# 创建视图
create view zwj_view as select * from salaryes where name = "张无忌";
select * from zwj_view;
+------+-----------+-------+
| id | name | money |
+------+-----------+-------+
| 2 | 张无忌 | 40000 |
+------+-----------+-------+
触发器: 是一段与某个表相关的sql语句,会在某个时间点,满足某个条件后自动触发执行,其中有两个关键因素:
再触发器自动的包含两个对象
用来干什么:
? 可以用于:当表的数据被修改时,自动记录一些数据,执行一些sql语句
# 语法
delimiter | # 重新定义行结束符,因为begin后面接逻辑代码里有;符号,如果重新定义会报错,原因是遇到分好自动提交了
# t_time = after or before , t_event = insert or update or delete
create trigger t_name t_time t_event on table_name for each row
begin
添加sql 语句.....
end;
delimiter ; # 执行完毕后,需要把行结束符恢复
# 删除触发器
drop trigger t_name;
# 查看所有触发器
show triggers;
# 查看某个触发器的语句
show create trigger t_name
CREATE TABLE cmd (
id INT PRIMARY KEY auto_increment,
USER CHAR (32),
priv CHAR (10),
cmd CHAR (64),
sub_time datetime, #提交时间
success enum ('yes', 'no') #0代表执行失败
);
#错误日志表
CREATE TABLE errlog (
id INT PRIMARY KEY auto_increment,
err_cmd CHAR (64),
err_time datetime
);
delimiter |
# 创建触发器
create trigger cmd_insert after insert on cmd for each row
begin
if new.success = "no" then
insert into errlog values(null,new.cmd,new.sub_time);
end if;
end |
delimiter ;
# 创建一个触发器 叫cmd_insert
# 触发器会在 插入数据到cmd表后执行
# 当插入的记录的success为no时 自动插入记录到errlog中
insert into cmd values (null,"root","max","rm ",now(),"no");
insert into cmd values (null,"root","max","ls ",now(),"yes");
原文:https://www.cnblogs.com/raynduan/p/11444757.html