视图和触发器

视图
是由一个或多个表的数据拼接而成,是一个虚拟的表;
只能用来查询显示,不可以增删改操作;
如果要增删改操作,需要去对应的基础表进行操作;
每一次查询视图,都会先去基础表中调取数据,再拼接成视图虚拟表;

注意!!:视图中,不允许出现重复的列,怎么解决:在from前,把所有的列都打出来,重复的列第一个就可以
ps:select student.sno,sname,ssex,sbirthday,class,score.cno,degree,cname,course.tno,tname,tsex,tbirthday,prof from student,score,course,teacher where student .sno=score.sno and course .cno=score.cno and teacher.tno=course.tno
创建格式
creat view 视图名称
as
select 列名 from 表名 --要执行的代码

修改格式:
alter view
as
select 列名 from 表名 --修改后要执行的代码

使用方式:
在用的数据库-视图-右键视图名称-设计-可以改别名

触发器:
是一个特殊的存储过程,没有参数,没有返回值;
通过对表的动作来触发执行;

创建格式:
create trigger 触发器名称(命名规范:动作_表名称)--动作:insert,delect,update
on 哪个表 --on 针对哪个表
for 哪个动作/ after 哪个动作--for是命令执行完毕之后再触发,after与for意思一样。
as
select *from 哪个表

create trigger 触发器名称(命名规范:动作_表名称)
on 表名
instead of delect --instead of是替换命令
as
select *from deleted --deleted要删除的信息

delect from 表名 --执行受到触发器阻拦,执行select *from 哪个表,不会删除

修改:
alter trigger 触发器名称(命名规范:动作_表名称)
on 哪个表
for 哪个动作
as
update 表名 set 列名=‘‘where 列名=‘‘

级联删除:
create trigger 触发器名称(命名规范:动作_表名称)
on 表名
instead of delect
as
declare @a varchar(max); --声明变量
select @a =列名2 from deleted;--要删除的信息赋值到变量里
delete from 表1 where 列名[email protected]; --相关的列
delete from 表2 where 列名[email protected];

视图:create view 表1_表2
as
select *from 表1,表2 where 列1=列2 (列1和列2 是主外键关系)
select *from 表1_表2
防止误删
create trigger delete_表名
on 表名
instead of delete
as
declare @a nvarchar(max);
select @a =列名 from deleted;
if @a=‘数据‘
begin
print‘内容‘ ;--在消息框中打印出来
end
else
begin
delete from 表名 where 列名[email protected];
end

delete from 表名 where 列名=‘数据‘ --只要有不让删的数据,整个动作都是错误的,所有让删除的都不会删除

注意:凡是修改都要create 改成alter ,再执行一遍

时间: 2024-10-17 20:55:42

视图和触发器的相关文章

【机房重构】——视图,触发器,存储过程的使用

在机房收费系统中,对多个表的查询,要写多个SQL是很麻烦的事情,为了方便我们写代码,同时对代码进行解耦和,我们引用了视图,触发器,存储过程. 一.是什么? 视图 从若干个基本表和其他视图构造出来的虚拟表.视图本身并不存储实际的数据,而仅仅存储一个Select语句和所涉及表的metadata. 触发器 特殊的存储过程,此机制是由事务触发而完成的,而不是存储过程的调用. 存储过程 一组完成特定功能的SQL语句集合以及流程控制语句编写的模块,存储过程经过编译后存储在数据库服务端的数据库中,使用时调用即

sqlserver数据库的索引、视图和触发器

  Sqlserver数据库的索引.视图和触发器 数据库的索引类似于字典中的目录,无需阅读.可以直接利用目录快速查找所需要的信息 索引的种类: 聚集索引:反应的是数据存储的物理顺序,一个表只能包含一个聚集索引 非聚集索引:不反应数据存储的物理顺序,一个表可以有多个非聚集索引 1.1. 准备环境 1.1.1. 创建聚集索引 目前tstudent表中没有任何索引也没有主键 为tstudent表创建聚集索引 选中studentID,单击左上侧的主键按钮 为Tstuden表的studentID创建主键就

视图、触发器、事务、存储过程、函数

阅读目录 视图  view 触发器  trigger 事务  transaction 存储过程   procedure 函数 流程控制 一: 视图  view 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数

mysql七:视图、触发器、事务、存储过程、函数

阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,

MySQL 之 视图、触发器、存储过程、函数、事物与数据库锁

浏览目录: 1.视图 2.触发器 3.存储过程 4.函数 5.事物 6.数据库锁 7.数据库备份 1.视图 视图:是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据 视图有如下特点; 1. 视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系. 2. 视图是由基本表(实表)产生的表(虚表). 3. 视图的建立和删除不影响基本表. 4. 对视图内容的更新(添加.删除和修改)直接影响基本表. 5. 当视图来自多个基本表时,不允许添加,修改和删除数据. 1.创建

MySQL之视图、触发器、事务、存储过程、函数 流程控制

阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 MySQL这个软件想将数据处理的所有事情,能够在mysql这个层面上全部都做了,也就是说它想要完成一件事,以后想开发的人,例如想写python程序的人,你就专门的写你自己的python程序,以后凡是关于数据的增删改查,全部都在MySQL里面完成,也就是说它想实现一个数据处理与应用程序的一个完全的解耦和状态,比如说,如果我是个应用程序员,我想要查询数据,我不需要自己写sql语句,只需要调用mysql封装好的一些功能,直

Mysql 之 视图,触发器,存储过程,函数,事物,数据库锁,数据库备份

Mysql 之 视图,触发器,存储过程,函数,事物,数据库锁,数据库备份 阅读目录 一:视图 二:触发器 三:存储过程 四:函数 五:事物 六:数据库锁 七:数据库备份 一:视图 视图:是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据 视图有如下特点; 1. 视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系. 2. 视图是由基本表(实表)产生的表(虚表). 3. 视图的建立和删除不影响基本表. 4. 对视图内容的更新(添加.删除和修改)直接影响基本表

视图,触发器,事务,存储过程,函数与流程控制,索引

一.视图 1.什么是视图 虚拟表:在硬盘中没有的,通过查询在内存中拼接的表 视图:通过查询得到一张虚拟表,保存下来,下次可直接使用 2.为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何用视图 create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id; 4.删除视图 drop view teacher2course; 5.强调

43 MySQL视图、触发器、事务、存储过程、函数

视图 1.什么是视图 通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图 如需频繁使用一张虚拟表,可以不用重复查询 3.如何用视图 注意: 1)在硬盘中,视图只有表结构文件,没有表数据文件 2)视图通常是用于查询,尽量不要修改视图中的数据 create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id; -- 删除视图 drop

Mysql查看存储过程、函数、视图、触发器、表

mysql查看所有存储过程,函数,视图,触发器,表查询数据库中的存储过程和函数 方法一:select `name` from mysql.proc where db = 'your_db_name' and `type` = 'PROCEDURE' //存储过程select `name` from mysql.proc where db = 'your_db_name' and `type` = 'FUNCTION' //函数 方法二:show procedure status; //存储过程s