一、视图
MySQL中的视图操作
创建视图
CREATE VIEW v_author(编号,姓名)
AS
SELECT * FROM author WITH CHECK OPTION 
查询视图
SELECT * FROM v_author 
创建多表视图
CREATE VIEW v_a_b(作者名字,博客标题,博客内容)
AS
SELECT a.author_name,b.title,b.content FROM author a LEFT JOIN blog b ON a.id=b.author_id
SELECT * FROM v_a_b 
创建视图:没有创建,有取代
CREATE OR REPLACE VIEW v_blog(编号,标题,内容,作者编号)
AS SELECT * FROM blog
WITH CHECK OPTION 
修改视图的数据--->修改基表数据
UPDATE v_blog SET 内容 = '修改后的内容' WHERE  编号=1
SELECT * FROM blog 
部分数据创建视图
CREATE VIEW v_blog_1(编号,标题,内容,作者编号)
AS SELECT * FROM blog WHERE author_id=1
WITH CHECK OPTION
SELECT * FROM v_blog_1
#WITH CHECK OPTION:where条件约束
 
INSERT INTO v_blog_1(编号,标题,内容,作者编号)VALUES(10,'123','123',1) 
二、事务
  
 
- Transaction
 - 事务:一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务就是一个最小的工作单元)
 - 一个完整的业务需要批量的DML(insert、update、delete)语句共同联合完成
 - 事务只和DML语句有关,或者说DML语句才有事务。这个和业务逻辑有关,业务逻辑不同,DML语句的个数不同
 
MySQL中的事务操作
#开启事务
 
BEGIN 
#提交事务
COMMIT 
#回滚
#创建表
CREATE TABLE IF NOT EXISTS runoob(id INT(5))ENGINE=INNODB;
SELECT * FROM runoob;
#开启事务
BEGIN
#输入
INSERT INTO runoob VALUES(3);
#回滚
ROLLBACK;
SELECT * FROM runoob 
三、触发器
 1、触发器概念
 
 
2、触发器创建语法四要素
触发器 插入
DELIMITER $
CREATE TRIGGER abc
AFTER INSERT ON student FOR EACH ROW
BEGIN
 INSERT INTO cj(stu_id,stu_name)VALUES(new.stuid,new.username);
END $
DELIMITER ; 
执行触发
INSERT INTO student(username,PASSWORD,birtday)
VALUES('王三','111111','2016-08-23');
SELECT * FROM cj 
触发器 删除
DELIMITER $
CREATE TRIGGER bcd
AFTER DELETE ON student FOR EACH ROW
BEGIN
DELETE FROM cj WHERE cj.stu_id=old.stuid;
END $
DELIMITER ; 
触发器 修改
DELIMITER $
CREATE TRIGGER def
BEFORE UPDATE ON student FOR EACH ROW
BEGIN
UPDATE cj SET cj.stu_name=old.username WHERE cj.stu_id=old.stuid;
END $
DELIMITER  
四、存储过程
触发器语法
create procedure 触发器名()
begin    
sql语句;  
end; 
创建存储过程
DELIMITER $
CREATE PROCEDURE tesa2()
BEGIN  
    声明变量类型
    DECLARE un VARCHAR(32) DEFAULT ''; 
    赋值
    SET un='abc'; 
    将查询结果赋值给un
  
   SELECT username INTO un FROM student WHERE stuid=1; 
    #查询un变量,返回
SELECT un;
END $
DELIMITER ;
#调用
CALL tesa2() 
创建存储过程 变量作用域
DELIMITER $
CREATE PROCEDURE tesa3()
BEGIN 
    BEGIN 
        #声明变量类型
        DECLARE un VARCHAR(32) DEFAULT '';
        #赋值
        SET un='abc';
        #将查询结果赋值给un
        SELECT username INTO un FROM student WHERE stuid=1;
        #查询un变量,返回
        SELECT un;
    END;
    BEGIN 
        #声明变量类型
        DECLARE un VARCHAR(32) DEFAULT '';
        #赋值
        SET un='abc';
        #将查询结果赋值给un
        SELECT username INTO un FROM student WHERE stuid=2;
        #查询un变量,返回
        SELECT un;
    END;
END $
DELIMITER ;
#调用
CALL tesa3()









