11、SQL Server 视图、数据库快照
SQL Server 视图
什么是视图?
视图是一个虚拟的表,内容源于查询的结果集。只有当视图上建立了索引后,才会具体化。
视图可以筛选和处理数据,而不是直接访问基础表。如:创建一个视图,只展示源表中的几列数据,无需授予用户访问基础表的权限,取而代之的是授予视图访问权限。
为什么用视图?
1、如果是比较复杂的多表联查,可以将这些复杂的语句放在视图中完成,而我们只需要使用简单的语句查询视图即可。
2、保护基础表,敏感列无法被检索出。
3、对视图添加索引,可以提高效率。
创建视图
1、可以使用SSMS工具创建, 视图->新建视图->选表 选列 ->输入名字保存即可。
2、使用T-SQL创建
if exists(select * from sysobjects where name = 'newView') --如果存在删除
drop view newView
go
create view newView --创建视图
as
select 学号=id,姓名=name,年龄=age from student
go
select * from newView
关于order by
if exists(select * from sysobjects where name = 'newView') --如果存在删除
drop view newView
go
create view newView --创建视图
as
select top 10 学号=id,姓名=name,年龄=age from student
order by id desc --如果使用order关键字 则必须指定top
go
select * from newView
修改视图
alter view newView
as
select top 20 * from student
order by id desc --如果使用order关键字 则必须指定top
go
更新架构
--刚刚修改的视图用的是 * 查询的是全部列
--此时修改基础表架构
alter table student add mail varchar(20) --这时源表已经更新架构,但是视图并没有改变 需要调用系统存储过程更新一下
EXEC sp_refreshview studentView
--这时 新的列才会被加进来
更新视图
对视图进行增、删、改操作,其实就是修改源表。但是由于诸多限制(如由多表联查出的视图,只检索出个别字段,但是插入的时候有些源表上的值是非空的就会出问题),一般不修改视图。
所以更新源表即可更新视图。
数据库快照
数据库快照是某一时间点的源数据库的只读静态视图,可以用来恢复数据库。
使用数据库快照必须与源数据库在相同的服务器实例,并且不能对源数据库进行删除、分离、或还原操作。
使用数据库快照
--源表中数据
use webDB
go
select * from student
if exists(select * from sys.databases where name = 'webDB_DBSS')
drop database webDB_DBSS --存在则删除
go
create database webDB_DBSS --创建数据库快照
on
(
name = webDB,
filename='d:\webDB_DBSS.ss' --注意后缀.ss
) --如果有多个文件需要一一指出
as snapshot of webDB
go
--修改源数据库数据
use webDB
go
update student set name='伟大' where id = 10 --查询源数据库数据
select * from student where id = 10 --查询快照数据
use webDB_DBSS
go
select * from student where id = 10
修改源数据库,快照数据库并未发生改变。
--修改student表架构
alter table webDB.dbo.student add [address] varchar(20)
select * from webDB.dbo.student --快照中依然没有
select * from webDB_DBSS.dbo.student --删除源数据库student表
drop table webDB.dbo.newTable --查询数据库快照该表 依然存在
select * from webDB_DBSS.dbo.newTable
从快照恢复数据到快照创建时刻
restore database webDB
from database_snapshot='webDB_DBSS'
go select * from webDB.dbo.student --修改的值被改回 select * from webDb.dbo.newTable --被删除的表 改回
以上得知:任何创建快照之后的修改数据都将被改回!
11、SQL Server 视图、数据库快照的更多相关文章
- 关于SQL Server 镜像数据库快照的创建及使用
从SQL Server 2005 SP 起,SQL 开始支持数据库镜像.它的设计目的是试图为SQL Server 提供一个具有实时性数据同步的灾难恢复技术,即能够提供数据冗余备份,切换起来比较方便.每 ...
- SQL Server 从数据库快照还原数据库
语法: restore database db_name from database_snapshot = 'db_snapshot_name'; ------------------------- ...
- SQL Server 创建数据库快照
创建数据库快照: 必须在create database 命令中包括源数据库的每一个数据文件,原始逻辑名,新物理名与路径, 不能指定其他属性 create database db_snapshot_na ...
- Sql Server 2008R2 数据库发布与订阅
背景描述: 发布服务器A: (远程端) , 数据库服务名: GUANWANG1 订阅服务器B: (本机) , 数据库服务名: PC-LLRDBA 需要从服务器A中数据库发布,然后在B中订阅A发布 ...
- 通过 SQL Server 视图访问另一个数据库服务器表的方法
今天项目经理跑过来对我大吼大叫说什么之前安排让我做一大堆接口为什么没做,我直接火了,之前明明没有这个事情…… 不过事情还要解决,好在两个项目都是用的sqlserver,可以通过跨数据库视图来快速解决问 ...
- SQL SERVER 基于数据库镜像的主从同步(数据库镜像实践汇总)
SQL SERVER 基于数据库镜像的主从同步 Author:chaoqun.guo createtime:2019-03-26 目录 SQL SERVER 基于数据库镜像的主从同步... 1 ...
- SQL Server 2012 数据库笔记
慕课网 首页 实战 路径 猿问 手记 Python 手记 \ SQL Server 2012 数据库笔记 SQL Server 2012 数据库笔记 2016-10-25 16:29:33 1 ...
- 如何转换SQL Server 2008数据库到SQL Server 2005
背景介绍: 公司一套系统使用的是SQL SERVER 2008数据库,突然一天收到邮件,需要将这套系统部署到各个不同地方(海外)的工厂,需要在各个工厂部署该数据库,等我将准备工作做好,整理文档 ...
- 通过SQL Server 2008数据库复制实现数据库同步备份
SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行 实时数据同步,正常情况下只使用主 ...
随机推荐
- ALAsset和ALAssetRepresentation
ALAsset类代表相册中的每个资源文件,可以通过它获取资源文件的相关信息还能修改和新建资源文件,ALAssetRepresentation类代表相册中每个资源文件的详细信息,可以通过它获取资源的大小 ...
- 让LINQ中的查询语法使用自定义的查询方法
使用LINQ时有两种查询语法:查询语法和方法语法 查询语法:一种类似 SQL 语法的查询方式 方法语法:通过扩展方法和Lambda表达式来创建查询 例如: List<, , , }; //查询语 ...
- activiti入门3排他网关,并行网管,包含网关,事件网关(转)
网关用来控制流程的流向 网关可以消费也可以生成token. 网关显示成菱形图形,内部有有一个小图标. 图标表示网关的类型. 基本分支 首先 利用 流程变量 写个带有分支的一个基本流程 流程图: 部署 ...
- 疯狂java讲义笔记 2.3.7
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...
- Linux Shell编程(3)——运行shell脚本
写完一个脚本,你能够运行它用命令:sh scriptname, [5] 另外也也可以用bash scriptname. 来执行(不推荐使用:sh <scriptname, 因为这样会禁止脚本从标 ...
- linkedin和facebook的区别
摘录一段百科(http://www.baike.com/wiki/LinkedIn)的文字: Linkedin - 特点 Linked是一个“高效”.“安全”并且“有商务价值”的“白领SNS提供商”: ...
- 动态规划(斜率优化):BZOJ 3675 [Apio2014]序列分割
Description 小H最近迷上了一个分割序列的游戏.在这个游戏里,小H需要将一个长度为N的非负整数序列分割成k+l个非空的子序列.为了得到k+l个子序列, 小H将重复进行七次以下的步骤: 1.小 ...
- 综合查询员工和datetime.now和datetime.today区别
一:综合查询图 二:EmployeeListWindow.cs代码 using System; using System.Collections.Generic; using System.Compo ...
- zoj 3365 灵活数字规律
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3365 #include <cstdio> #incl ...
- M - 昂贵的聘礼 - poj1062
Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...