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 视图 触发器 <九>的更多相关文章

  1. 11、SQL Server 视图、数据库快照

    SQL Server 视图 什么是视图? 视图是一个虚拟的表,内容源于查询的结果集.只有当视图上建立了索引后,才会具体化. 视图可以筛选和处理数据,而不是直接访问基础表.如:创建一个视图,只展示源表中 ...

  2. 使用SQL Server视图的优缺点

    SQL Server视图我们经常会用的到,下面就为您介绍使用SQL Server视图的优缺点,希望可以对您SQL Server视图有更多的了解. 在程序设计的时候必须先了解视图的优缺点,这样可以扬长避 ...

  3. (4.22)sql server视图/索引视图概念

    (4.22)sql server视图 关键词:sql server视图.索引视图 SQL Server视图是由SQL语句组成的逻辑数据库对象.它也可以称为由SQL语句组成的虚拟表,该SQL语句可能包含 ...

  4. CodeSmith生成SQL Server视图的实体类脚本/对应的生成模板

    C#生成sql视图的实体类 using System;using System.Text;using CodeSmith.Engine;using SchemaExplorer;using Syste ...

  5. SQL SERVER视图对查询效率的提高

    SQL SERVER视图不仅可以实现许多我们需要的功能,而且对于SQL SERVER查询效率的提高也有帮助,下面一起来了解一下. 有两张数据表:A和B,其中A的记录为2万条左右,而B中的数据为200万 ...

  6. SQL Server:触发器详解

    1. 概述 触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活. 所以触发器可以用来实现对表实施复杂的完整性约束. 2. 触发器的分类 SQL S ...

  7. SQL Server 视图

    视图实际上就是一个存储查询,重点是是可以混合和匹配来自基本表(或者其他视图)的数据,从而创建在很多方面像另一个基表那样起作用的对象.可以创建一个简单的查询,仅仅从一个表中选择几列,而忽略其他列:或者也 ...

  8. SQL SERVER TRIGGER 触发器

    1.触发器简介 触发器是一种特殊的存储过程,它的执行不是由程序调用,也不是手动执行,而是由事件来触发.触发器是当对某一个表进行操作.例如:update.insert.delete这些操作的时候,系统会 ...

  9. sql server中触发器

    触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删 ...

随机推荐

  1. 机器学习 —— 概率图模型(Homework: CRF Learning)

    概率图模型的作业越往后变得越来越有趣了.当然,难度也是指数级别的上涨啊,以至于我用了两个周末才完成秋名山神秘车牌的寻找,啊不,CRF模型的训练. 条件随机场是一种强大的PGM,其可以对各种特征进行建模 ...

  2. iphone 6 设置自定义铃声(未越狱)

    环境: ipone 6 iTunes 12.4.0.119 IOS 9.3.2 先把需要设置的铃声下载到电脑上,然后打开iTunes下的文件->将文件添加到资料库,如图: 2.在音乐列表里右击所 ...

  3. 汇编与C语言混合 实现的从小到大的冒泡排序

    汇编实现的从小到大的冒泡排序 主函数由C语言实现,sort函数用汇编语言写 #include <stdio.h>  int buffer[256];      //数据缓冲区  int   ...

  4. Android OpenCV样例调试+报错处理

    1.OpenCV样例调试:<OpenCV Sample - image-manipulations>       blog+报错:E/CAMERA_ACTIVITY(17665): Cam ...

  5. code manager tools svn服务安装配置

    svn server 安装配置: 下载地址:http://www.visualsvn.com/server/download/ 然后安装图一步一步前进: 1.点击download now: 2.点击N ...

  6. PHP高级特性二之文件处理

    PHP中的文件处理也是一个相当重要的模块,这一篇的主要内容就是PHP中文件系统的简介. 文件系统用途 1. 项目处理都离不开文件处理 2. 可以用文件长时间保存数据 3. 建立缓存,在服务器中进行文件 ...

  7. linux 配置 wlan 连接

    第一步,先确定你已经安装了无线网卡驱动.我的是 ath9k ,linux 内核不自带,现编译成模块 然后安装上.具体步骤请自行搜索 linux 编译内核 第二步,起用模块 modprobe ath9k ...

  8. 面试题目“ABCDE × 4 = EDCBA”新解法

    ABCDE*4=EDCBA 在面试宝典上面看到的一道题目,也是一道老掉牙的题目了,题目详情:一个五位数字ABCDE*4=EDCBA,这五个数字不重复,请编程求出来. 网上流传的代码都是对5位数ABCD ...

  9. 监听Activity进入后台(最小化),并根据时间判断是否超时,此解决办法可用于超时重登陆

    通过重写一个继承自Activity的基类中的onUserLeaveHint()方法,当用户按Home键等操作使程序进入后台时即开始计时,当用户使程序恢复为前台显示时执行onResume()方法,在其中 ...

  10. AOJ -0189 Convenient Location && poj 2139 Six Degrees of Cowvin Bacon (floyed求任意两点间的最短路)

    http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=78207 看懂题就好. 求某一办公室到其他办公室的最短距离. 多组输入,n表示 ...