数往知来SQL SERVER 视图 触发器 <九>
SQL server学习_视图
1.视图
视图其实是一张虚拟表,他是一张表的部分数据或多张表的综合数据(视图就是把SQL语句封装起来)
可以看做是一个结果集,但是不是一个结果集
视图不具备存储数据的能力 (一旦源数据被修改删除,视图的结果集就会被修改删除,如果是一个结果集那么他封装起来里面的源数据被修改他就不会改变,所以说视图可以看做是一个结果集但是他又不是结果集)
视图在操作上和数据表没有区别,但两者的差异是其本质是不同的,数据表示实际存储记录的地方,然而视图并不保存任何记录,它存储的实际上是查询语句
我们可以将视图看做一个SQL语句的集合
使用的时候,会执行其中的SQL语句,得到一个结果集
-->视图的三大优点
1、筛选表中的行 (可以把多张表连接成一张表,然后再在这个视图结果集里对这些行筛选)
2、防止未经许可的用户访问敏感数据 (做成视图以后这个视图结果集里的数据可能来自多张表,那么给你一个视图表名你不可能访问到我的源数据)
3、降低数据库的复杂程度 (视图里存储的实际上是查询语句,那么把这些查询语句都放在视图里,使用的时候直接使用视图名,就简单很多了)
--》 视图的定义
create view vw_名字
as
一个结果集
-------------------------
alter view vw_join
as
select t1.sname,t1.sage,t1.sgender,t2.cname,t2.cDescription,t3.chinese,t3.english,t3.math from
TStudent as t1
inner join
TClass as t2
on t1.classId =t2.classId
inner join
TScore as t3
on t1.scoreId =t3.scoreId
select * from vw_join
章夏槐 9 0 Java学院 黑马班 69 132 99
符梦琪 50 0 .Net学院 基础班 148 85 50
韦天磊 74 1 .Net学院 就业班 14 33 134
璩伟祺 32 1 Java学院 就业班 144 43 121
滑烨磊 1 1 Java学院 就业班 73 130 103
柴傲柏 36 0 C++学院 就业班 98 8 57
梅天荷 14 0 Web学院 就业班 96 43 99
左雅彤 91 0 C++学院 就业班 88 80 44
SQL server_if-else、while、变量、try-catch
四、变量
1)变量的声明 关键字 declare @变量名 类型
declare @name nvarchar(10)
declare @age int
declare @gender nvarchar(1)
2)变量的赋值有两种方法
set @age=40
set @gender=0
select @name=sname,@age=sage, @gender=sgender from TStudent where studentid=10
select @name,@age,@gender --可以从表中查询数据并赋值,可以一次性给多个变量赋值
--》显示
select @name,@age,@gender --select可以以表的形式显示多个变量的值
print @name --print只可以显示一个变量的值,以文本消息的形式
局部变量:
局部变量必须以标记@作为前缀 ,如@Age int
局部变量:先声明,再赋值
全局变量(系统变量):
全局变量必须以标记@@作为前缀,如@@version
全局变量由系统定义和维护,我们只能读取,不能修改全局变量的值
五、if-else
语法:
if
begin
end
else
begin
end
这里的begin和end就相当于C#里的两个大括号({})
六、while循环 跟C#里一样
大括号用begin和end替换
-->try -catch
语法:
begin try
SQL语句 ---这里和C#里一样,一旦遇到异常下面的语句将不再执行,直接跳到catch里面,执行catch力的语句
end try
begin catch
SQL语句
end catch
SQL server_触发器
八、常见的触发器
触发器的作用:自动化操作,减少了手动操作以及出错的几率(现实工作中用的比较少,因为想让他执行起来效率高很难)
一、DML触发器
Insert、delete、update(不支持select)
after触发器(for)、instead of触发器(不支持before触发器)
二、(*)DDL触发器
Create table、create database、alter、drop….
语法:
create trigger trig_触发器名 on 针对哪个表触发(表名)
after (这里用for也一样,两者都表示after触发器) | intead of delete、update、insert
as
begin
T-SQL语句
end
1、首先了解两张表 inserted,deletede
这两张表示当执行、插入、修改更新等操作时系统给创建的表,当操作结束之后会自动销毁,每执行依据t-sql语句就会触发一次触发器,不管你执行的语句删除、修改、插入的是多少条记录,
所以,要注意:这两张表里存的是你上一次最后执行的记录
-->inserted
当执行 insert 语句的时候会生成两条记录,一条会插入到你指定的表里,一条会放到系统创建的 inserted 表中
当执行update 语句的时候会先把原来的记录删除放到系统创建的deleted表中,然后生成两条记录,一条放到你指定的表里,一条放到insert表里
--》deleteed
当执行delete语句时,会把这条记录放到deleted表里
2、after 触发器
在语句执行操作之后触发
在语句执行完毕之后触发
按语句触发,而不是所影响的行数,无论所影响为多少行,只触发一次。
只能建立在常规表上,不能建立在视图和临时表上。(*)
可以递归触发,最高可达32级。
update(列),在update语句触发时,判断某列是否被更新,返回布尔值。
3、intead of触发器
用来替换原来的操作
用来替换原本的操作
不会递归触发
可以在约束被检查之前触发
可以建在表和视图上(*)
select * from TClass
--复制一张新表,用来备份
* into NewTClass from TClass
select * from NewTClass
--创建一个触发器,当删除TClass表中的数据时自动触发,把删除的数据备份到一张新标中
create trigger trig_NewTClass_delete on TClass
after delete --执行删除语句之后触发
as
begin
--一次插入多条记录,如果用values只可以查入一条,要是用户一次删除多条,那么values就不能把多条记录插入了
insert into NewTClass select cName,cDescription from deleted
end
delete
--删除触发器
drop trigger trig_NewTClass_delete
--instead触发器,当执行删除操作时,把删除操作替换成 打印 print '执行删除操作了'
create trigger trig_NewTClass_delete on TClass
instead of delete
as
begin
print '执行删除操作了'
end
数往知来SQL SERVER 视图 触发器 <九>的更多相关文章
- 11、SQL Server 视图、数据库快照
SQL Server 视图 什么是视图? 视图是一个虚拟的表,内容源于查询的结果集.只有当视图上建立了索引后,才会具体化. 视图可以筛选和处理数据,而不是直接访问基础表.如:创建一个视图,只展示源表中 ...
- 使用SQL Server视图的优缺点
SQL Server视图我们经常会用的到,下面就为您介绍使用SQL Server视图的优缺点,希望可以对您SQL Server视图有更多的了解. 在程序设计的时候必须先了解视图的优缺点,这样可以扬长避 ...
- (4.22)sql server视图/索引视图概念
(4.22)sql server视图 关键词:sql server视图.索引视图 SQL Server视图是由SQL语句组成的逻辑数据库对象.它也可以称为由SQL语句组成的虚拟表,该SQL语句可能包含 ...
- CodeSmith生成SQL Server视图的实体类脚本/对应的生成模板
C#生成sql视图的实体类 using System;using System.Text;using CodeSmith.Engine;using SchemaExplorer;using Syste ...
- SQL SERVER视图对查询效率的提高
SQL SERVER视图不仅可以实现许多我们需要的功能,而且对于SQL SERVER查询效率的提高也有帮助,下面一起来了解一下. 有两张数据表:A和B,其中A的记录为2万条左右,而B中的数据为200万 ...
- SQL Server:触发器详解
1. 概述 触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活. 所以触发器可以用来实现对表实施复杂的完整性约束. 2. 触发器的分类 SQL S ...
- SQL Server 视图
视图实际上就是一个存储查询,重点是是可以混合和匹配来自基本表(或者其他视图)的数据,从而创建在很多方面像另一个基表那样起作用的对象.可以创建一个简单的查询,仅仅从一个表中选择几列,而忽略其他列:或者也 ...
- SQL SERVER TRIGGER 触发器
1.触发器简介 触发器是一种特殊的存储过程,它的执行不是由程序调用,也不是手动执行,而是由事件来触发.触发器是当对某一个表进行操作.例如:update.insert.delete这些操作的时候,系统会 ...
- sql server中触发器
触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删 ...
随机推荐
- AE开发 入门教程
此过程说明适合那些使用.NET建立和部署应用的开发者,它描述了使用ArcGIS控件建立和部署应用的方法和步骤. 你可以在下面的目录下找到相应的样例程序: <安装目录>/DeveloperK ...
- Android中的sp与wp
一.相关code文件 二.code具体分析 lightrefebase: refbase: sp: wp: flag: 三.使用注意事项 不能在把目标对象赋给一个长久存在的sp对象之前赋给一个短生命周 ...
- Eclipse —— java文件修改后不能及时体现
有没有遇到过这么一种情况:某一个对象某一属性,先设值为 1 .打印出来是 1.再设值为 2 .打印出来仍是 1 ? …… 原来是工具Eclipse设置的问题. 你检查一下,Eclipse 工具栏 - ...
- OSX 升级 vim
善用 Homebrew 神器啊,少年!Homebrew - The missing package manager for OS X安装完成后打开终端输入: brew install vim --wi ...
- mmm hardware/libhardware_legacy/power/
android源码目录下的build/envsetup.sh文件,描述编译的命令 - m: Makes from the top of the tree. - mm: Buil ...
- 选择——ERP信息系统选型
做一次选择并不难,难的是做一次坚定而正确的选择.TCL电脑公司的ERP软件选型就是一次正确而艰难的选择过程.让我们从头说起吧! 业界都知道TCL电脑是IT行业的新入行者,更知道TCL的另一个诠释:& ...
- URAL1057. Amount of Degrees(DP)
1057 简单的数位DP 刚开始全以2进制来算的 后来发现要找最接近x,y值的那个基于b进制的0,1组合 #include <iostream> #include<cstdio&g ...
- View Transform(视图变换)详解
http://www.cnblogs.com/graphics/archive/2012/07/12/2476413.html 什么是View Transform 我们可以用照相机的原理来阐释3D图形 ...
- UVa 10106 Product
高精度乘法问题,WA了两次是因为没有考虑结果为0的情况. Product The Problem The problem is to multiply two integers X, Y. (0& ...
- EL&struts2标签 读取map,list集合
struts中的取map和list & jsp中取map和list <% List list = new ArrayList(); list.add("a"); li ...