本来想把这些新增的语法按照某一原则有序的说明一下,可由于本人水平有限,只能一个一个逐步F10了,只要能把我自认为比较实用的列出来就行了啊,呵呵

1. 用varchar(max),nvarchar(max),varbinary(max)数据类型代替text ntext image 数据类型

       2.  公用表表达式(CTE),可以认为是在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集。

语法:with  tablename(columns(可选)) as (query T-SQL) select/update...   tablename

eg.  with t as
                      (
                             select  * from test 
                      )
                   select * from t
            注意:

1)公用表表达式 (CTE) 后边必须直接跟实用CTE的语句,否则CTE将会失效。

2)CTE定义时的查询语句如果要使用 order by 语句,前面要跟 top

eg.  select top(select count(1) from test) * from test order  by weight desc

3)  联机文档中说的“CTE 可在同一查询中引用多次”,其意思是在CTE后面跟的sql语句中可以引用多次,但在这个语句后CTE便会里面失效。

eg.   with t as
                           (
                             select  * from test 
                           )
                       select * from t inner join t t1 on t.name=t1.name    /*   合法语句   */

select * from t    /*   t已经失效   */

 4)CTE可以引用其自身,从而创建递归 CTE。主要是用来获取分层数据的。递归 CTE与程序中的递归算法很类似,主要都包括两部分:

初始值和递归方法。这里的初始值指的是必须预先定义一个CTE作为起始数据,以后的递归调用都是从这发起的;递归方法就是引用

CTE方法进行操作的过程。

当然,递归 CTE不会无休止的执行下去,当引用CTE不能获取到数据时递归便会停止。

      eg.

with cte as
                            (
                              select id,name from test where id=2
                              select id,cte.name + '>' + test.name from test left join cte on test.parentid=cte.id
                            )
                     select * from cte    /* 这个语句返回的是 id为2的数据的子节点数据,而且其name都用'>'连接 如:' hacker>lily>sue' */

3. update语句

1)update top(N)

eg.  update top(2) test set weight=55   但这种形式无法将test排序之后再进行update,所以在这种情况下我们可以借助公用表表达式 (CTE)

如下:

with t as
                (
                      select top(select count(1) from test) * from test order  by weight desc 
                )
           update top(2) t set weight=55    /*  如此我们便可以通过order by来达成所要的效果   */

2)update output  返回受update语句影响的数据信息,可以进行日志记录(暂时还没发现其他用途)。

eg.

declare @table table (oldname nvarchar(50),newname nvarchar(50))
                update top(2) test set name='output'
                output DELETED.name,
                INSERTED.name
                into @table
                select * from @table

结果:oldname   newname

hacker      output
                    jack          output

3)update .write  用来更新varchar(max) nvarchar(max) 和varbinary(max)类型的数据。

.write('数据',0,null) 全部覆盖更新 (现在看来,这条完全可以 update set colum=value)
                 .write('数据',n,1)插入式更新 在第n个字符后插入数据.
                 .write('数据',n,m) 局部覆盖 插入式更新  在第n个字符后,从第n+1字符 至 第m个字符被覆盖更新

 4. INTERSECT : 返回数据集的交集,用法与UNION类似。

INTERSECT会除去数据集中的重复项,INTERSECT ALL则会保留重复项。

EXCEPT : 从左查询中返回右查询没有找到的所有非重复值。

注意:INTERSECT比EXCEPT 的优先级高,当同一条sql语句中二者都存在时,会先执行INTERSECT

5. SOME、ANY关键字,联机文档上的例子如下:

CREATE PROCEDURE ManyDaysToComplete @OrderID int, @NumberOfDays int
             AS
             IF
             @NumberOfDays < SOME
                 (
                   SELECT DaysToManufacture
                   FROM Sales.SalesOrderDetail
                   JOIN Production.Product
                   ON Sales.SalesOrderDetail.ProductID = Production.Product.ProductID
                   WHERE SalesOrderID = @OrderID
                 )
             PRINT 'At least one item for this order cannot be manufactured in specified number of days.'
             ELSE
             PRINT 'All items for this order can be manufactured in the specified number of days or less.' ;

6.外连接的另类用法

以前内连接我们可以使用where来代替,但是外连接就没有这样的语法了.2005新推出的*=和=*让我们做到了这点.

select a.*,b.*
             from Products a,Categories b
             where a.CategoryID*=b.CategoryID

转载于:https://www.cnblogs.com/hacker012/archive/2011/06/14/2080680.html

SQL2005之后MS SQL版本 T-SQL 新增语法、函数(二)相关推荐

  1. aws rds监控慢sql_探索AWS RDS SQL Server上SQL Server集成服务(SSIS)

    aws rds监控慢sql In the previous article, Deploy tabular databases in SSAS on AWS RDS SQL Server, we ex ...

  2. 不同版本的SQL Server之间数据导出导入的方法及性能比较

    原文:不同版本的SQL Server之间数据导出导入的方法及性能比较 工作中有段时间常常涉及到不同版本的数据库间导出导入数据的问题,索性整理一下,并简单比较下性能,有所遗漏的方法也欢迎讨论.补充. 0 ...

  3. .NET Core开发日志——Linux版本的SQL Server

    SQL Server 2017版本已经可以在Linux系统上安装,但我在尝试.NET Core跨平台开发的时候使用的是Mac系统,所以这里记录了在Mac上安装SQL Server的过程. 最新的SQL ...

  4. SQL Server 2008中新增的变更数据捕获(CDC)和更改跟踪

    SQL Server 2008中新增的变更数据捕获(CDC)和更改跟踪 SQL Server 2008中SQL应用系列--目录索引 本文主要介绍SQL Server中记录数据变更的四个方法:触发器.O ...

  5. 关于 MySQL5.7.log 版本导出 SQL 语句再导入 8.0.13 版本出现 Incorrect datetime value: ‘0000-00-00 00:00:00‘ 错误的解决办法

    环境配置 导出数据库版本:5.7.12.log 导入数据库版本:8.0.13 问题: 导出 SQL 脚本,再在高版本数据库中导入时,出现 Incorrect datetime value: '0000 ...

  6. SqlServer还原数据库时提示:异常终止,不能在此版本的SQL Server中启动,因为它包含分区函数

    场景 在SqlServer Management中进行数据库还原时提示: 数据库不能在此版本的SQL Server中启动,因为它包含分区函数. 点击左下角的查看详细信息 实现 电脑上安装的是SQL S ...

  7. 优化的ms sql server分页sql语句

    优化的ms sql server分页sql语句 发布时间: 2009-8-15 00:00 |  发布作者: hjh |   |  查看: 3次 特点:一次查询,数据库Databnse只返回一页的数据 ...

  8. MS“未与信任SQL Server连接相关联”跟在使用ASP.NET网站管理工具出现“遇到错误。请返回上一页并重试。”的解决办法!...

    今天老师讲了一些关于成员权限跟注册登录这些控件的使用. 回来测试的时候,先是用aspnet_regsql让系统自动创建数据库,可是到了最后一步却出现了MS"未与信任SQL Server连接相 ...

  9. 报错:此版本的SQL Server Data Tools与此计算机中安装的数据库运行时组件不兼容...

    在Visual Studio 2012中使用Entity Framework,根据模型生成数据库时,报如下错误: 无法在自定义编辑器中打开Transact-SQL文件 此版本的SQL Server D ...

  10. 此版本的 SQL Server 不支持用户实例登录标志。该连接将关闭“的解决

    此版本的 SQL Server 不支持用户实例登录标志.该连接将关闭"的解决(转) 2008-10-04 13:31 错误提示: 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查 ...

最新文章

  1. Spark入门教程(二)Spark2.2源码编译及安装配置
  2. swiper用loop不出图片_swiper实现双向控制
  3. mac 下安装jenkins
  4. A fully managed website and blog hosting platform
  5. 剑指 Offer 55 - I. 二叉树的深度
  6. SAP编辑器ABAP代码添加模板
  7. Verilog初级教程(6)Verilog模块与端口
  8. android kmplayer,KMPlayer Pro — 安卓本地影音全能播放器
  9. 华为云官网前端的技术演进与低代码实践
  10. spring注解开发配置spring父子容器
  11. Joplin插件推荐-持续更新
  12. 移动端页面布局方式,简单记录一下
  13. 怎么解决这个问题?救救孩子吧
  14. 当代人工智能复习2022
  15. android 行高和字号之间关系,字号与行高
  16. 男厕所的小便斗 [ 光影人像 东海陈光剑 的博客 ]
  17. 苹果手机通讯录数据怎么恢复?简单教程
  18. 双色球1-7号球统计系统
  19. 外国人在北京买房无需再提供纸质证明
  20. 斗鱼直播Android开发二面被刷,工作感悟

热门文章

  1. 拓端tecdat|R语言回归和主成分PCA 回归交叉验证分析预测城市犯罪率
  2. 拓端tecdat|R语言中使用非凸惩罚函数回归(SCAD、MCP)分析前列腺数据
  3. mysql比较varchar值大小_Mysql varchar大小长度问题
  4. 怎么安装winubuntu双系统_U盘安装ubuntu双系统及如何恢复Windows MBR教程
  5. SpringBoot2.0.0启动流程
  6. Java事件处理机制的两个案例
  7. mysql 表复制 速度_提高MySql复制速度
  8. 每天一道机器学习算法面试题目
  9. 基于sklearn分析特征工程(特征预处理、特征选择、降维)
  10. python数字图像处理(9):直方图与均衡化