当前位置: 首页> 文旅> 美景 > 苏州网站开发公司兴田德润简介_拓客引流推广_百度有哪些产品_江小白网络营销案例

苏州网站开发公司兴田德润简介_拓客引流推广_百度有哪些产品_江小白网络营销案例

时间:2025/7/14 1:44:04来源:https://blog.csdn.net/yujinlong2002/article/details/142525926 浏览次数:2次
苏州网站开发公司兴田德润简介_拓客引流推广_百度有哪些产品_江小白网络营销案例

视图

视图其实就是虚拟的表(不是真实存在的),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户时只需要使用【名称】即可获取结果集,并可以将其当作表来使用。

select * from (select id,name,info.age from info) as t1 where age > 25
  • 创建视图
select * from (select id, name, info.age from info) as t1 where age > 25;
  • 删除视图
drop view v1;
  • 查看视图
select * from v1;
  • 修改视图
alter view v1 as select id,name,age from info where age > 30;

⚠️注意:基于视图只能查询,针对视图不能执行修改删除。如果源表发生表还,视图也会发生变化

触发器

使用触发器可以制定用户对表进行【增、删、改】,注意:没有查询

数据准备

-- 数据准备
-- 命令行代码
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')
);-- 创建错误日志
create table errlog
(id       int primary key auto_increment,err_cmd  char(64),err_time datetime
);
  • 创建触发器
create trigger 触发器名 after insert on 表名 for each row   -- 在执行后触发
create trigger 触发器名 before insert on 表名 for each row  -- 执行前触发
-- 创建触发器
-- 更改结束符
delimiter //
create trigger tri_after_insert_cmd after insert on cmd for each rowbeginif NEW.success = 'no' then -- 等值判断只有一个等号insert into errlog(err_cmd, err_time) VALUES (NEW.cmd,new.sub_time);end if;end//
-- 更改结束符;
delimiter ;
  • 开始插入数据
insert into cmd(user, priv, cmd, sub_time, success)
values('egon','0755','ls -l /etc',now(),'yes'),('egon','0755','cat /etc/password',now(),'no'),('egon','0755','useradd xxx',now(),'no'),('egon','0755','ps aux',now(),'yes');-- 插入数据后查询报错日志表
mysql> select * from errlog;
+----+-------------------+---------------------+
| id | err_cmd           | err_time            |
+----+-------------------+---------------------+
|  1 | cat /etc/password | 2024-09-25 11:00:48 |
|  2 | useradd xxx       | 2024-09-25 11:00:48 |
+----+-------------------+---------------------+
2 rows in set (0.00 sec)-- 查询命令表,报错日志的中的数据命令表中也存在,说明是在插入后触发的触发器
mysql> select * from cmd;
+----+------+------+-------------------+---------------------+---------+
| id | user | priv | cmd               | sub_time            | success |
+----+------+------+-------------------+---------------------+---------+
|  1 | egon | 0755 | ls -l /etc        | 2024-09-25 11:00:48 | yes     |
|  2 | egon | 0755 | cat /etc/password | 2024-09-25 11:00:48 | no      |
|  3 | egon | 0755 | useradd xxx       | 2024-09-25 11:00:48 | no      |
|  4 | egon | 0755 | ps aux            | 2024-09-25 11:00:48 | yes     |
+----+------+------+-------------------+---------------------+---------+
4 rows in set (0.00 sec)
  • 执行之前触发触发器

delimiter //
create trigger tri_before_insert_cmdbefore inserton cmdfor each row
beginif NEW.success='no' theninsert into errlog(err_cmd, err_time) VALUES ('err',now());end if;end //
delimiter ;insert into cmd(user, priv, cmd, sub_time, success)
values('egon','0755','ls -l /etc',now(),'yes'),('egon','0755','cat /etc/password',now(),'no'),('egon','0755','useradd xxx',now(),'no'),('egon','0755','ps aux',now(),'yes');	
  • 使用触发器

触发器无法由用户直接调用,而是由对表的【增/删/改】操作被动引发的

  • 删除触发器
drop trigger tri_after_insert_cmd;

特别的:NEW表示即将插入数据行,OLD表示即将删除的数据行

关键字:苏州网站开发公司兴田德润简介_拓客引流推广_百度有哪些产品_江小白网络营销案例

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: