0
点赞
收藏
分享

微信扫一扫

MySQL试图&事务&触发器&存储过程

7dcac6528821 2022-04-02 阅读 171

1试图

#创建视图

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)

MySQL 事务 

 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

一、触发器概念

触发器SQL语法:

DELIMITER $
create trigger
 触发器名字  
触发时间 触发事件 on 表名   for each row  
begin      
sql语句;  
end $
DELIMITER ;

#触发器 插入

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

#触发器删除

#触发器2 删除
DELIMITER $
CREATE TRIGGER bcd
AFTER DELETE ON student FOR EACH ROW
BEGIN
DELETE FROM cj WHERE cj.stu_id=old.stuid;
END $
DELIMITER ;

 #触发器 修改

#触发器3 修改
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 ;

MySQL 存储过程

触发器语法

 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()
举报

相关推荐

0 条评论