sql server 2008增强型t-sql语言研究

[ 来源:http://www.it55.com | 作者: | 时间:2007-08-14 | 收藏 | 推荐 ] 【

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

本文包含如下内容: 免费壁纸下载http://www.it55.com

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

免费壁纸下载http://www.it55.com

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

it55.com

1、T-SQL 行构造器 免费网页模版下载http://www.it55.com

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

免费矢量图片素材下载http://www.it55.com

 

http://www.it55.com/

CREATE TABLE #a
(
    Column1 nvarchar(max),
    Column2 nvarchar(max)
);
GO IT资讯之家 http://www.it55.com

INSERT INTO #a
VALUES (
('1', '1'),
('2', '2')
); it55.com

SELECT * FROM #a;
GO http://www.it55.com/

DROP TABLE #a;
GO 精美韩国模版下载http://www.it55.com


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

精美商业网页模版下载http://www.it55.com

[ WITH <common_table_expression> [ ,...n ] ]
INSERT
    [ TOP ( expression ) [ PERCENT ] ]
    [ INTO ]
    { <object> | rowset_function_limited
      [ WITH ( <Table_Hint_Limited> [ ...n ] ) ]
    }
{
    [ ( column_list ) ]
    [ <OUTPUT Clause> ]
    { VALUES ( ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n ] )
    | derived_table
    | execute_statement
    | <dml_table_source>
    | DEFAULT VALUES
    }
}
[; ] vd;k;l http://www.it55.com rdfg

<object> ::=
{
    [ server_name . database_name . schema_name .
      | database_name .[ schema_name ] .
      | schema_name .
    ]
        table_or_view_name
}

http://www.it55.com/

<dml_table_source> ::=
    SELECT <select_list>
    FROM ( <dml_statement_with_output_clause> )
                      [AS] table_alias [ ( column_alias [ ,...n ] ) ]
        [ WHERE <search_condition> ]
    [ OPTION ( <query_hint> [ ,...n ] ) ] 免费设计素材下载http://www.it55.com

2. FORCESEEK 提示

vd;k;l http://www.it55.com rdfg

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

http://www.it55.com在线教程

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
3. GROUPING SETS sflj http://www.it55.com kg^&fgd

新的 T-SQL 对 GROUP BY 子句增加了 GROUPING SETS, ROLLUP 和 CUBE 操作符。还有一个新的函数 GROUPING_ID(),它相比 GROUPING() 函数返回更多分组级别的信息。WITH ROLLUP, WITH CUBE 和 ALL 等非 ISO 标准语法已经不再有效。

免费网页模版下载http://www.it55.com

4. 兼容性级别

免费网页模版下载http://www.it55.com

新的 ALTER DATABASE SET COMPATIBILITY_LEVEL 语法替换了 sp_dbcomplevel 存储过程。它用来设置特定数据库的兼容性级别。其语法形式为:

免费矢量图片素材下载http://www.it55.com

ALTER DATABASE database_name
SET COMPATIBILITY_LEVEL = { 80 | 90 | 100 }
您可以为 database_name 为名称的数据库设置特定兼容性级别。80、90 和 100 分别代表 SQL Server 2000、SQL Server 2005 和 SQL Server 2008。 免费壁纸下载http://www.it55.com

5. 用户自定义表数据类型

免费网页模版下载http://www.it55.com

现在,SQL Server 提供一种新的用户自定义数据类型——自定义表数据类型(User-defined Table Types)。它可以作为参数提供给语句、存储过程或者函数。您还可以为它创建唯一约束和主键。 免费壁纸下载http://www.it55.com

请使用 CREATE TYPE 语句创建这种数据类型。如: 免费网页模版下载http://www.it55.com

USE AdventureWorks;
GO 精美商业网页模版下载http://www.it55.com

/**//* Create a user-defined table type */
CREATE TYPE LocationTableType AS TABLE
( LocationName VARCHAR(50)
, CostRate INT );
GO

http://www.it55.com在线教程

对于表类型,有如下约束:
1、用户自定义表类型不能作为表的列或者结构化用户自定义类型的域。
2、基于用户自定义表类型的别名类型。
3、不允许 NOT FOR REPLICATION 选项。
4、CHECK 约束需要一个计算列。
5、在计算列上的主键必须包含 NOT NULL 和 PERSISTED 约束。
6、不能在用户自定义表类型上创建非簇索引。除非索引是创建 PRIMARY KEY 或 UNIQUE 约束的返回值。
7、不能指定 DEFAULT 值。
8、一旦用户自定义表类型被创建,则它就无法更改。

(编辑:IT资讯之家 www.it55.com

返回顶部
共3页: 上一页 1 [2] [3] 下一页  

网友评论

[以下评论为网友观点,不代表本站。请自觉遵守互联网相关政策法规,所有连带责任均有评论者自负。]
[不超过250字]