SQL Server之自动创建视图
本方法只适合特定模式的视图创建.
比如,创建需要整张表列名的视图,或者当表和需要的列名统计在一张数据表当中,如图所示:

首先要先获取要创建视图所需要的表,这里我获取的是整个数据库中的表,
IF OBJECT_ID('tempdb..#tablename') IS NOT NULL
BEGIN
DROP TABLE #tablename
END
SELECT name,ROW_NUMBER() over (order by name) id
INTO #tablename
FROM [sys].[tables] AS q
这里通过Row_NUMBER()来给每一列返回一个数字ID,在下面可以通过这个ID来循环获取表名.
接着来拼接视图的名称,,名称可以通过实际的需求来.
IF OBJECT_ID('tempdb..#viewname') IS NOT NULL
BEGIN
DROP TABLE #viewname
END
SELECT 'v_'+name AS name ,id
INTO #viewname
FROM #tablename
接下来就是核心的代码,之前就说过我们可以通过id来循环获取表名来创建视图,当然也可以通过这样的方法来获取列名,只不过我们要处理一下列名,将其处理成 a,b,c,d这样的格式.
DECLARE @j INT,@i INT,@name NVARCHAR(200),@viewname NVARCHAR(200)
SET @i=1
SET @j=1
DECLARE @B INT ,@A INT,@str NVARCHAR(200),@strw NVARCHAR(200),@last NVARCHAR(200)
SET @B=1
SET @A=1
SET @str=''
WHILE @j<=(select max(id) from (select name ,row_number() over (order by name) id from [sys].[tables])as q)
BEGIN SELECT @name = name FROM #tablename WHERE id = @i
SELECT @viewname=name FROM #viewname WHERE id = @i
IF OBJECT_ID('tempdb..#str') IS NOT NULL
BEGIN
DROP TABLE #str
END
SELECT name,ROW_NUMBER() OVER(ORDER BY name) id
INTO #str
FROM syscolumns WHERE id = OBJECT_ID(@name) ----获取数据表中的列名 WHILE @A<=(select max(id) from (select name ,row_number() over (order by name) id FROM syscolumns WHERE id = OBJECT_ID(@name))as q)
BEGIN
SELECT @strw=name from #str where id=@B
IF @str=''
BEGIN
SET @str = '['+@strw+']'
--SET @str = @strw
END
ELSE
begin
SET @str = @str+','+'['+@strw+']'
--SET @str = @str+','+@strw
end
SET @B = @B+1
SET @A = @A+1
END
PRINT @str
EXEC('create view '+ @viewname +' as (select '+@str+' from ['+@name+'])')SET @i=@i+1
SET @j=@j+1
SET @B=1
SET @A=1
SET @str=''
END
SQL Server之自动创建视图的更多相关文章
- SQL Server 2008如何创建定期自动备份任务
我们知道,利用SQL Server 2008数据库可以实现数据库的定期自动备份.方法是用SQL SERVER 2008自带的维护计划创建一个计划对数据库进行备份,下面我们将SQL SERVER 200 ...
- SQL Server镜像自动生成脚本
SQL Server镜像自动生成脚本 镜像的搭建非常繁琐,花了一点时间写了这个脚本,方便大家搭建镜像 执行完这个镜像脚本之后,最好在每台机器都绑定一下hosts文件,不然的话,镜像可能会不work 1 ...
- SQL Server定时自动抓取耗时SQL并归档数据发邮件脚本分享
SQL Server定时自动抓取耗时SQL并归档数据发邮件脚本分享 第一步建库和建表 USE [master] GO CREATE DATABASE [MonitorElapsedHighSQL] G ...
- SQL Server定时自动抓取耗时SQL并归档数据脚本分享
原文:SQL Server定时自动抓取耗时SQL并归档数据脚本分享 SQL Server定时自动抓取耗时SQL并归档数据脚本分享 第一步建库 USE [master] GO CREATE DATABA ...
- SQL Server 2012 自动增长列,值跳跃问题
介绍 从 SQL Server 2012 版本开始, 当SQL Server 实例重启之后,表格的自动增长列的值会发生跳跃,而具体的跳跃值的大小是根据增长列的数据类型而定的.如果数据类型是 整型(in ...
- SQL Server索引 - 索引(物化)视图 <第九篇>
一.索引视图基本概念 索引视图实际上是一种将一组唯一值“物化”为群集索引形式的视图,所为物化就是几乎和表一样,其数据也是会存储一份的(会占用硬盘空间,但是查询速度快,例如可以将count(),sum( ...
- 使用SQL Server Management Studio 创建作业备份数据库
在项目中,经常需要备份数据库,如果能做到只需点个按钮(“开始备份数据库”按钮),然后什么都不管,数据库就自动备份好了,或者服务器上的数据库隔一段时间自动备份一次,那该多好啊. Sql server 的 ...
- sql server中如何修改视图中的数据?
sql server中如何修改视图中的数据? 我做个测试,视图的数据有标记字段时,如果是这种方式(0 as FlagState),是无法修改的 --创建视图语句 --- create view V_E ...
- 利用Microsoft Sql Server Management studio 创建数据库的示例
利用Microsoft Sql Server Management studio 创建数据库的示例方法如下: 一.打开安装好的Microsoft Sql Server Management stu ...
随机推荐
- EL表达式详解(常用表达式以及取值)
EL表达式 学习总结 一. El表达式概念 二. El中的表达式 1. 算术表达式 2. 比较表达式 3. 逻辑表达式 4. 三元表达式 5. 判空表达式 三.EL 从四个作用域中取值 1. 概念 2 ...
- [ Terminal ] 在 Windows Terminal 中使用 Git Bash
https://www.cnblogs.com/yeungchie/ Git 自带的 git-bash 太简陋了,ConEmu 又太卡了,还是这个 Windows Terminal 最好用. 安装 W ...
- flex 布局 自己做的demo
.row {/*横*/ display: -webkit-box;// display: -webkit-flex; /* Safari */ display: -moz-box; display: ...
- windows批处理执行图片爬取脚本
背景 由于测试时需要上传一些图片,而自己保存的图片很少. 为了让测试数据看起来不那么重复,所以网上找了一个爬虫脚本,以下是源码: 1 import requests 2 import os 3 4 c ...
- python基础-基本数据类型(三)
一.散列类型 散列类型用来表示无序的集合类型 1.集合(set) Python中的集合与数学符号中的集合类似,都是用来表示无序不重复元素的集合. 1.1 集合的定义 集合使用一对{}来进行定义,集合中 ...
- zookeeper篇-初识zookeeper
点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 文章不定期同步公众号,还有各种一线大厂面试原题.我的学习系列笔记. 什么是zookeeper? 中间件 作用于分布式系统 支持java.c语 ...
- pwn 之 沙箱机制
0x00: 简介 沙箱机制,英文sandbox,是计算机领域的虚拟技术,常见于安全方向.一般说来,我们会将不受信任的软件放在沙箱中运行,一旦该软件有恶意行为,则禁止该程序的进一步运行,不会对真实系统造 ...
- SpringMVC 配置 & 初识 & 注解 &重定向与转发
初识 在web.xml 中注册DispatcherServlet <servlet> <servlet-name>springmvc</servlet-name> ...
- [题解] 序列(sequence)
题目大意 给定一个长度为 \(N\) 的非负整数序列 \(A_1,A_2, \ldots ,A_N\),和一个正整数 \(M\).序列 \(A\) 满足 \(\forall 1 \le i \ ...
- 基于Docker&Kubernetes构建PaaS平台基础知识梳理
点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 基于Docker&Kubernetes构建Paa ...