Maison > base de données > tutoriel mysql > le corps du texte

SQL Server 2008对T-SQL语言的增强

WBOY
Libérer: 2016-06-07 15:04:51
original
1344 Les gens l'ont consulté

Microsoft SQL Server 2008 对 T-SQL 语言 进行了进一步增强。为了让开发人员尽快了解这些变化,我们针对 2007 年 6 月 CTP 版本的 SQL Server 2008 中的 T-SQL 语言的新增功能进行了分析和尝试。本文描述自 SQL Server 2008 CTP1 以来这些语言增强和变化。

  Microsoft SQL Server 2008T-SQL 语言进行了进一步增强。为了让开发人员尽快了解这些变化,我们针对 2007 年 6 月 CTP 版本的 SQL Server 2008 中的 T-SQL 语言的新增功能进行了分析和尝试。本文描述自 SQL Server 2008 CTP1 以来这些语言增强和变化。

  本文包含如下内容:

  ? T-SQL 行构造器

  ? FORCESEEK 表提示

  ? GROUPING SETS

  ? 兼容性级别

  ? 用户自定义表数据类型

  ? 表值参数

  ? MERGE 语句

  本文适用于:Microsoft)R) SQL Server(TM) 2008 Developer Edition June 2007 CTP

  1、T-SQL 行构造器

  T-SQL 行构造器(Row Constructors)用来在 INSERT 语句中一次性插入多行数据。例如:

以下是引用片段:
  CREATE TABLE #a
  (
  Column1 nvarchar(max),
  Column2 nvarchar(max)
  );
  GO
  INSERT INTO #a
  VALUES (
  ('1', '1'),
  ('2', '2')
  );
  SELECT * FROM #a;
  GO
  DROP TABLE #a;
  GO

  经过增强后的 INSERT 语句的语法结构如下。

以下是引用片段:
[ WITH  [ ,...n ] ]
INSERT 
    [ TOP ( expression ) [ PERCENT ] ] 
    [ INTO ] 
    {  | rowset_function_limited 
      [ WITH (  [ ...n ] ) ]
    }
{
    [ ( column_list ) ] 
    [  ]
    { VALUES ( ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n ] )
    | derived_table 
    | execute_statement 
    | 
    | DEFAULT VALUES 
    } 

[; ]
 ::=

    [ server_name . database_name . schema_name . 
      | database_name .[ schema_name ] . 
      | schema_name . 
    ]
        table_or_view_name
}
 ::=
    SELECT 
    FROM (  ) 
                      [AS] table_alias [ ( column_alias [ ,...n ] ) ]
        [ WHERE  ]
    [ OPTION (  [ ,...n ] ) ]

  2. FORCESEEK 提示

  FORCESEEK 是一个新的表提示(Table Hints),它用来指定 SQL Server 查询优化程序如何更高效的执行查询。该提示指示优化程序对查询引用的表和视图通过索引检索来作为唯一的查询执行访问路径。也就是强制通过索引检索数据。例如:

以下是引用片段:
USE tempdb;
GO
DROP TABLE t;
GO
CREATE TABLE t(i int UNIQUE, j int, vc varchar(100));
CREATE INDEX t_vc ON t(vc);
GO
DECLARE @p1 int, @p2 int, @p3 int, @p4 int, @p5 int;
SELECT * FROM t WHERE i IN (@p1, @p2, @p3, @p4, @p5);
GO
DECLARE @p1 int, @p2 int, @p3 int, @p4 int, @p5 int;
SELECT * FROM t WITH (FORCESEEK) WHERE i IN (@p1, @p2, @p3, @p4, @p5);
GO
SELECT * FROM t WHERE vc LIKE 'Test%';
GO
SELECT * FROM t WITH (FORCESEEK) WHERE vc LIKE 'Test%';
GO
DECLARE @vc varchar(100);
SELECT * FROM t WHERE vc LIKE @vc;
GO
DECLARE @vc varchar(100);
SELECT * FROM t WITH (FORCESEEK) where vc like @vc;
GO

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal