PIVOT是SQL Server2005新添加的一个表运算符,作用在于将行转为列. 先来看看他的基本语法: 来自http://technet.microsoft.com/zh-cn/library/ms177410(v=sql.105).aspx SELECT <非透视的列>, [第一个透视的列] AS <列名称>, [第二个透视的列] AS <列名称>, ... [最后一个透视的列] AS <列名称>, FROM (<生成数据的 SELECT 查询&…
在Sql Server中不常用的表运算符之PIVOT中,介绍了PIVOT表运算符,现在来说说与之相对应的另一个表运算符UNPIVOT. 从名字可以看出,这个运算符的作用与PIVOT刚好相反,是将一行的多个列值旋转为多行,每一行是一个原列的值. 以Sql Server中不常用的表运算符之PIVOT中最后的表结果为例,来演示一下如何使用UNPIVOT运算符 上面这张表中显示了 C001,C002,C003这三个消费者在不同城市不同地区的订单数量,通过下面的查询将C001,C002,C003这三列旋转…
在Sql Server中不常用的表运算符之APPLY(1)中提到,SQL2005中新支持的APPLY的特性:1.可以直接将表表达式(表值函数或者子查询)作为APPLY语句的右表连接左表.2.由于使用APPLY是总是先计算左表达式表,所以右表表达式可以使用左表表达式中的列.3.APPLY主要用于将表值函数运用在右表表达式中表的每一行. 有时也APPLY将一个子查询作为左表表达式.假设我们有以下的两张表 order: customer: 选出customer C001最近的N个订单可以使用inner…
写在这个系列的前面: 就像他们的名字一样,作为一个表运算,他们用来运算左表和右表.JOIN也是一个表运算符,不过他太常用了. APPLY: 将右表表达式应用在左表的每一行上. APPLY是Sql2005对SQL语句的拓展,这意味着其他类型的数据库可能不支持这个表运算符.微软设计APPLY的初衷在于将表值函数运用在左表的每一行,并将结果与对应行关联起来. 网上大多数文章中提到的也是这样的用法,例如我们有一个Split(s,splitChar)表值函数,可以将一个字符串s用splitChar分割,返…
在SQL Server中,全局变量是一种特殊类型的变量,服务器将维护这些变量的值.全局变量以@@前缀开头,不必进行声明,它们属于系统定义的函数.下表就是SQL Server中一些常用的全局变量. 全局变量名称 描述 @@CONNECTIONS 返回 SQL Server 自上次启动以来尝试的连接数. @@CPU_BUSY 返回 SQL Server 自上次启动后的工作时间. @@CURSOR_ROWS 返回连接上打开的上一个游标中的当前限定行的数目, 确定当其被调用时检索了游标符合条件的行数.…
/* -- 本文件主要是汇总了 Microsoft SQL Server 中有关数据库与表的相关信息查询语句. -- 下面的查询语句中一般给出两种查询方法, -- A方法访问系统表,适应于SQL 2000/2005/2008/2008 R2,但是在微软的联机帮助中特意说明这些系统表 -- 在后续版本的 Microsoft SQL Server 将删除该功能.请避免在新的开发工作中使用该功能. -- -- B方法访问系统视图,为微软推荐使用方法,对于今后新版本 SQL Server 兼容性比较好.…
SQL Server中的临时表和表变量 作者:DrillChina出处:blog2008-07-08 10:05 在SQL Server的性能调优中,有一个不可比拟的问题:那就是如何在一段需要长时间的代码或被频繁调用的代码中处理临时数据集?表变量和临时表是两种选择.记得在给一家国内首屈一指的海运公司作SQL Server应用性能评估和调优的时候就看到过大量的临时数据集处理需求,而他们的开发人员就无法确定什么时候用临时表,什么时候用表变量,因此他们就简单的使用了临时表.实际上临时表和表变量都有特定…
sql server 中临时表与数据表的区别 1.如何判断临时表和数据表已生成 --如何判断临时表是否已创建--- if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Temp_Student')) begin print '存在临时表'; end else begin print '不存在临时表'; end --如何判断数据表是否已创建--- if exists(select * from sys.ta…
如果要删除数据表中所有数据只要遍历一下数据库再删除就可以了,清除所有数据我们可以使用搜索出所有表名,构造为一条SQL语句进行清除了,这里我一一给各位同学介绍.   使用sql删除数据库中所有表是不难的,就是遍历一下数据库中所有用户表,并将它清除,下边是具体的sql语句,在关键部分已经作了详细的注释:  代码如下 复制代码 --变量@tablename保存表名 declare @tablename nvarchar(100) --将用户表全部保存到临时表#tablename中 SELECT [na…
Sql Server中清空所有数据表中的记录 清空所有数据表中的记录: 代码如下:exec sp_msforeachtable  @Command1 ='truncate table ?'删除所有数据表: 代码如下:exec sp_msforeachtable 'delete   N''?'''清空SQL Server数据库中所有表数据的方法(有约束的情况) 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除…
在编写T-SQL语句的时候,SQL Server提供了三种方法临时存储某些结果集,分别是临时表.表变量和公用表表达式. 临时表 临时表需要在临时数据库TempDB中通过I/O操作来创建表结构,一旦用户退出SQL Server环境,临时表会自动被删除.临时表有两种,一种是本地临时表,仅在当前会话中可见,前缀是[#]:一种是全局临时表,在所有会话中都可见,前缀是[##]. 临时表的优缺点 临时表的优点是能够和普通的物理表一样长久存储数据,可以建立索引,能存储大量的数据. 临时表的缺点是使用不方便,在…
在SQL Server的性能调优中,有一个不可比面的问题:那就是如何在一段需要长时间的代码或被频繁调用的代码中处理临时数据集?表变量和临时表是两种选择.记得在给一家国内首屈一指的海运公司作SQL Server应用性能评估和调优的时候就看到过大量的临时数据集处理需求,而他们的开发人员就无法确定什么时候用临时表,什么时候用表变量,因此他们就简单的使用了临时表.实际上临时表和表变量都有特定的适用环境. 先卖弄一些基础的知识: 表变量变量都以@或@@为前缀,表变量是变量的一种,另外一种变量被称为标量(可…
我们在日常开发过程中,在进行数据库设计的时候,经常会遇到如果选择数据类型的问题,选择什么样的数据类型最合适,然后当我们在项目中建立对应实体的时候,如何选择对应的CLR类型.针对这些问题,于是这篇文章诞生了. SQL Server数据类型 占用字节数 表示范围 对应的CLR类型 數據類型選擇 适用场景 char char(n)   System.String char(2) 使用char(2)来表示类型或状态(建议用tinyint代替) varchar varchar(n) 1~8000 Syst…
在项目中遇到要取两个表差集的情况 假设有两个表tblNZPostCodes, NZPostcode  两个表中存储的都是新西兰的post code信息,字段一致,只是数据上有所差异. 1. Union  获取两个表的合集并且自动过滤重复数据 Select * from tblNZPostCodes Union Select * from NZPostcode 2. Union all 获取两个表的合集并且不过滤重复数据 Select * from tblNZPostCodes Union all…
在SQL Server中,全局变量是一种特殊类型的变量,服务器将维护这些变量的值.全局变量以@@前缀开头,不必进行声明,它们属于系统定义的函数.下表就是SQL Server中一些常用的全局变量. 全局变量名称 描述 @@CONNECTIONS 返回 SQL Server 自上次启动以来尝试的连接数. @@CPU_BUSY 返回 SQL Server 自上次启动后的工作时间. @@CURSOR_ROWS 返回连接上打开的上一个游标中的当前限定行的数目, 确定当其被调用时检索了游标符合条件的行数.…
不知道什么时候对数据独有情种,也许是因为所学专业的缘故,也许是在多年的工作中的亲身经历,无数据,很多事情干不了,数据精度不够,也很多事情干不了,有一次跟一个朋友开玩笑说,如果在写论文的时候,能有一份独一无二的数据,那么这已经超过别人一大截,但这毕竟死空中楼阁,事与愿违的事情见多了,也就不足为其,我深知数据的重要,但却因为得不到数据而烦恼,现在想想,这又是何必呢,也许自己有了数据,反而不会经常静下心去思考,人就是这样对自己身边拥有点的东西往往关心不足,考虑不周. 所谓的有得有失,我想我得到的就是自…
T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他   简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能.但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索引的概念,需要了解大量原理性的知识,包括B树,堆,数据库页,区,填充因子,碎片,文件组等等一系列相关知识,这些知识写一本小书也不为过.所以本文并不会深入讨论这些主题. 索引是什么 索引是对数据库表中一列或多列的值进行排序的…
1.1 简介 SQL Server 中,用户定义表类型是指用户所定义的表示表结构定义的类型.您可以使用用户定义表类型为存储过程或函数声明表值参数,或者声明您要在批处理中或在存储过程或函数的主体中使用的表变量. 若要创建用户定义表类型,请使用CREATE TYPE语句.为了确保用户定义表类型的数据满足特定要求,您可以对用户定义表类型创建唯一约束和主键. 1.2 使用例题 在创建用户定义表类型前先建立一个数据库表 USE [Contacting] GO SET ANSI_NULLS ON GO SE…
简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能.但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索引的概念,需要了解大量原理性的知识,包括B树,堆,数据库页,区,填充因子,碎片,文件组等等一系列相关知识,这些知识写一本小书也不为过.所以本文并不会深入讨论这些主题. 索引是什么 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息. 精简来说,索引是一种结构.…
转自:http://www.cnblogs.com/CareySon/archive/2011/12/22/2297568.html 简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能.但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索引的概念,需要了解大量原理性的知识,包括B树,堆,数据库页,区,填充因子,碎片,文件组等等一系列相关知识,这些知识写一本小书也不为过.所以本文并不会深入讨论这些主题.…
sql server中的uuid  建表: 1.自增长 studentno int primary key identity(1,1)——bigint也是可以的 2.创建uuidcustomerid uniqueidentifier primary key default newid()     获取UUID:select newid() 即可   1.获取32位的UUID -----批处理 declare @newid varchar(36)=newid() select SUBSTRING(…
简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,sql server仍然可以实现应有的功能,但索引可以在大多数情况下提升查询性能,在OLAP(On line Transaction Processing)中尤其明显,要完全理解索引的概率,需要了解大量原理性的知识,包括B数,堆,数据库页,区,填充因子,碎片,文件组等到一系列相关知识,这些知识写一本小书也不为过.所以本文并不会深入讨论这些主题. 索引是什么 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引…
简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能.但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索引的概念,需要了解大量原理性的知识,包括B树,堆,数据库页,区,填充因子,碎片,文件组等等一系列相关知识,这些知识写一本小书也不为过.所以本文并不会深入讨论这些主题. 索引是什么 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息. 精简来说,索引是一种结构.…
SQL Server中常用的SQL语句 转自:http://www.cnblogs.com/rainman/archive/2013/05/04/3060428.html 1.概述 名词 笛卡尔积.主键.外键 数据完整性 实体完整性:主属性不能为空值,例如选课表中学号和课程号不能为空 参照完整性:表中的外键取值为空或参照表中的主键 用户定义完整性:取值范围或非空限制,例如:性别(男女),年龄(0-130) 表连接 自然连接:与等值连接(a.id=b.id)相比,连接后的表只有一列id,而不是两列…
1.概述 名词 笛卡尔积.主键.外键 数据完整性 实体完整性:主属性不能为空值,例如选课表中学号和课程号不能为空 参照完整性:表中的外键取值为空或参照表中的主键 用户定义完整性:取值范围或非空限制,例如:性别(男女),年龄(0-130) 表连接 自然连接:与等值连接(a.id=b.id)相比,连接后的表只有一列id,而不是两列(a.id和b.id). 半连接:与等值连接(a.id=b.id)相比,连接后的表只有A表的列,被B表“多次匹配”列会显示为一行. 左外连接:left join 右外连接:…
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings name="  " connectionString="  "></connectionStrings >, connectionString代表数据库链接字符串,name代表你想要引用的时候查找的名称.(其实asp里的web.config配置方式也跟这…
前言 在操作数据库的时候经常会用到判断数据表.视图.函数/方法.存储过程是否存在,若存在,则需要删除后再重新创建.以下是MS SQL Server中的示例代码. 数据表(Table) 创建数据表的时候判断数据表是否存在,若存在则删除,会经常使用,特别是初始化的时候. --方法一 /*判断数据表是否存在,若存在则删除数据表*/ IF EXISTS (SELECT * FROM sys.objects WHERE name = 'Table_Name') DROP TABLE Table_Name;…
SQL Server 中截取字符串常用的函数: .LEFT ( character_expression , integer_expression ) 函数说明:LEFT ( '源字符串' , '要截取最左边的字符数' ) 返回从字符串左边开始指定个数的字符 ); 返回结果:SQL_ .RIGHT ( character_expression , integer_expression ) 函数说明:RIGHT ( '源字符串' , '要截取最右边的字符数' ) 返回字符串中从右边开始指定个数的…
在SQL SERVER中获取表中的第二条数据, 思路:先根据时间逆排序取出前2条数据作为一个临时表,再按顺时排序在临时表中取出第一条数据 sql语句如下: select top 1 * from(select top 2 * from NumberLog where UserName = '管理员' order by dateTime desc ) [table] order by dateTime asc…
原来使用SQL Server 2000数据库,通过DTS工具很方便地在SQL Server和DBF文件之间进行数据的导入和导出,现在安装了SQL Server2005之后,发现其提供的“SQL Server导入导出向导”中的数据源没有原来的丰富,缺少对DBF文件的支持. 1.右击数据库,选择“任务”>“导入数据”,打开“SQL Server导入和导出向导”对话框.2.在“数据源”中选择Microsoft OLE DB Provider for Visual FoxPro,单击“属性”按钮,打开“…