Mysql视图,触发器
mysql知识点的补充
-
参考文档
https://www.cnblogs.com/wupeiqi/articles/5713323.html
-
安装
pip install pymysql
-
sql注入
拼接后的sql语句 select * from userinfo where user='1' and pwd ='2233' 如果用户使用sql注入,例如用户输入uu’ or 1=1 -- select * from userinf where user='1' or 1=1 -- 则后面的语句全部被注释掉而不生效
-
因此为了防止恶意的SQLZ注入,不要使用自己拼接的字符串,而要使用相关的函数
-
插入数据后获取自增id,cursor.lastrowid
-
补充
-- 上下连表 select id,sname from student union select tid, tname from teacher -- 此种方法还会自动去重 -- 不去重 select id,sname from student union all select tid, tname from teacher
视图
-- 视图
-- 语法 as 后写对应的SQL语句
CREATE VIEW v1 as SELECT* from student WHERE sid>1
-- 视图是虚拟的,不是真是存在表
-- 修改
ALTER VIEW v1 as SELECT * from student WHERE sid>2
-- 删除 v1 是视图的名称
drop VIEW v1
触发器
-
知识点
# 插入前 CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROW BEGIN ... END # 插入后 CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW BEGIN ... END # 删除前 CREATE TRIGGER tri_before_delete_tb1 BEFORE DELETE ON tb1 FOR EACH ROW BEGIN ... END # 删除后 CREATE TRIGGER tri_after_delete_tb1 AFTER DELETE ON tb1 FOR EACH ROW BEGIN ... END # 更新前 CREATE TRIGGER tri_before_update_tb1 BEFORE UPDATE ON tb1 FOR EACH ROW BEGIN ... END # 更新后 CREATE TRIGGER tri_after_update_tb1 AFTER UPDATE ON tb1 FOR EACH ROW BEGIN ... END
-
结束字符标志: delimiter //
-- 触发器 -- 当对某一张表做增删改时,可以使用触发器,自定义关联行为 -- 特别的:NEW表示即将插入的数据行,OLD表示即将删除的数据行。 -- 注意:插入只有new,删除只有old,但是更新即有new也有old delimiter // CREATE TRIGGER tri_before_insert_stu BEFORE INSERT on student for EACH row BEGIN INSERT into teacher(tname) VALUES (NEW.sname); END // delimiter ; -- 测试 insert into student(sname,gender,class_id) VALUES('程心','女',1),('逻辑','男',3)