欢迎投稿

今日深度:

SQL Server 2008对T-SQL语言的增强(1)

SQL Server 2008对T-SQL语言的增强(1)


引自lee576的博客】本文包含如下内容:

◆T-SQL行构造器
◆FORCESEEK表提示
◆GROUPING SETS
◆兼容性级别
◆用户自定义表数据类型
◆表值参数
◆MERGE语句

本文适用于:Microsoft 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


www.htsjk.Com true http://www.htsjk.com/shujukukf/17287.html NewsArticle SQL Server 2008对T-SQL语言的增强(1) 引自lee576的博客】本文包含如下内容: ◆T-SQL行构造器 ◆FORCESEEK表提示 ◆GROUPING SETS ◆兼容性级别 ◆用户自定义表数据类型 ◆表值参数 ◆MERGE语句 本文...
评论暂时关闭