数据库_视图事务触发器存储过程
2022/4/3 19:20:09
本文主要是介绍数据库_视图事务触发器存储过程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.创建视图
create view 视图名(视图列1,视图列2) 视图列名为中文
as
select * from 表名 没有指定那一列,从第一个列名开始创建
with check option;
2.添加视图数据、删除视图、查询视图、修改视图
和表一样的用法
3.创建多表视图
create view 视图名(视图列1,视图列2,视图列3)
as
select 列名1,列名2,列名3 from 表名1 表名1别名 left join 表名2 表名2别名 on 表名1列名=表名2列名;
例:
create view v_a_b(姓名,标题,内容)
as
select a.author_name,b.title,b.content form author a left join blog b on b.author_id=a.id;
4.修改视图 有就修改,没有就替换
create or replace view v_blog(编号,标题,内容,作者编号)
as select * from blog where author_id=1 as是连接,视图只存储author_id=1的数据
with check option; 这一行表示where条件约束
5.回滚和提交 以数字的顺序来执行实现回滚
开启事务 1
begin;
插入语句 2
insert into b(id)value('5');
提交事务 提交后不能回滚
commit;
回滚
rollback; 4
查询
select * from b; 3 5
6.触发器
#学生表
CREATE TABLE student(
username VARCHAR(20),
PASSWORD VARCHAR(20),
stuid INT PRIMARY KEY AUTO_INCREMENT,
birthday DATE
);
INSERT INTO student(username,PASSWORD,birthday)VALUES
('王二','111111','2016-08-23'),
('李四','123456','2016-07-23'),
('杨三','123456','2016-08-17'),
('刘五','000000','2016-08-18'),
('黄六','666666','2016-08-23');
#成绩表
CREATE TABLE IF NOT EXISTS cj(
NUMBER INT,
stu_id INT,
stu_name VARCHAR(20),
math FLOAT,
chinese FLOAT,
english FLOAT
);
#触发器方式1
create trigger ins_stu
after insert on student for each row
insert into cj(number,stu_id,stu_name,math,chinese,english)
values(1,new.stuid,new.username,88,77,99);
#触发器方式2
delimiter $
create trigger ins_stu
after insert on student for each row
begin
insert into cj(number,stu_id,stu_name,math,chinese,english)
values(1,new.stuid,new.username,88,77,99); new表示student表
end $
delimiter ;
#执行触发过程
insert into student(username,password,birthday)values
('张三','22222','2016-08-23');
7.创建存储过程
delimiter $
create procedure test2()
begin
#声明变量类型
declare un varchar(32) default '';
#给un变量赋值
set un='xiaoxiao';
#将student表的数据复制给un,复制的是student表username列的数据,条件是student表的stuid=3的username列数据
select username into un from student where stuid=3;
#查询un变量,返回
select un;
end $
delimiter ;
#调用存储过程
call test2();
创建存储过程2 两张表会显示两个结果
delimiter $
create procedure testa()
begin
select * from student;
select * from cj;
end $
delimiter ;
声明变量类型两次
delimiter $
create procedure test3()
begin
begin
declare un varchar(32) default '';
set un='xiaoxiao';
select username into un from student where stuid = 3;
select un;
end;
begin
declare un varchar(32) default '';
set un='xiaoxiao';
select username into un from student where stuid = 5;
select un;
end;
end $
declimiter ;
这篇关于数据库_视图事务触发器存储过程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)