Microsoft sql server 2008 對 T-SQL 語言進行了進一步增強。為了讓開發(fā)人員盡快了解這些變化,我們針對 2007 年 6 月 CTP 版本的 SQL Server 2008 中的 T-SQL 語言的新增功能進行了分析和嘗試。本文描述自 SQL Server 2008 CTP1 以來這些語言增強和變化。
本文包含如下內容:
· T-SQL 行構造器
· FORCESEEK 表提示
· GROUPING SETS
· 兼容性級別
· 用戶自定義表數(shù)據(jù)類型
· 表值參數(shù)
· MERGE 語句
本文適用于:Microsoft)R) SQL Server(TM) 2008 Developer Edition June 2007 CTP
1、T-SQL 行構造器
T-SQL 行構造器(Row Constructors)用來在 INSERT 語句中一次性插入多行數(shù)據(jù)。例如:
CREATETABLE#a
以下為引用的內容:
(
Column1nvarchar(max),
Column2nvarchar(max)
);
GO
INSERTINTO#a
VALUES(
('1','1'),
('2','2')
);
SELECT*FROM#a;
GO
DROPTABLE#a;
GO
經過增強后的 INSERT 語句的語法結構如下。
以下為引用的內容:
|
2. FORCESEEK 提示
FORCESEEK 是一個新的表提示(Table Hints),它用來指定 SQL Server 查詢優(yōu)化程序如何更高效的執(zhí)行查詢。該提示指示優(yōu)化程序對查詢引用的表和視圖通過索引檢索來作為唯一的查詢執(zhí)行訪問路徑。也就是強制通過索引檢索數(shù)據(jù)。例如:
USEtempdb;
以下為引用的內容:
GO
DROPTABLEt;
GO
CREATETABLEt(iintUNIQUE,jint,vcvarchar(100));
CREATEINDEXt_vcONt(vc);
GO
DECLARE@p1int,@p2int,@p3int,@p4int,@p5int;
SELECT*FROMtWHEREiIN(@p1,@p2,@p3,@p4,@p5);
GO
DECLARE@p1int,@p2int,@p3int,@p4int,@p5int;
SELECT*FROMtWITH(FORCESEEK)WHEREiIN(@p1,@p2,@p3,@p4,@p5);
GO
SELECT*FROMtWHEREvcLIKE'Test%';
GO
SELECT*FROMtWITH(FORCESEEK)WHEREvcLIKE'Test%';
GO
DECLARE@vcvarchar(100);
SELECT*FROMtWHEREvcLIKE@vc;
GO
DECLARE@vcvarchar(100);
SELECT*FROMtWITH(FORCESEEK)wherevclike@vc;
GO
3. GROUPING SETS
新的 T-SQL 對 GROUP BY 子句增加了 GROUPING SETS, ROLLUP 和 CUBE 操作符。還有一個新的函數(shù) GROUPING_ID(),它相比 GROUPING() 函數(shù)返回更多分組級別的信息。WITH ROLLUP, WITH CUBE 和 ALL 等非 ISO 標準語法已經不再有效。
4. 兼容性級別
新的 ALTER DATABASE SET COMPATIBILITY_LEVEL 語法替換了 sp_dbcomplevel 存儲過程。它用來設置特定數(shù)據(jù)庫的兼容性級別。其語法形式為:
ALTERDATABASEdatabase_name
以下為引用的內容:
SetcOMPATIBILITY_LEVEL={80|90|100}
您可以為 database_name 為名稱的數(shù)據(jù)庫設置特定兼容性級別。80、90 和 100 分別代表 SQL Server 2000、SQL Server 2005 和 SQL Server 2008。
5. 用戶自定義表數(shù)據(jù)類型
現(xiàn)在,SQL Server 提供一種新的用戶自定義數(shù)據(jù)類型——自定義表數(shù)據(jù)類型(User-defined Table Types)。它可以作為參數(shù)提供給語句、存儲過程或者函數(shù)。您還可以為它創(chuàng)建唯一約束和主鍵。
請使用 CREATE TYPE 語句創(chuàng)建這種數(shù)據(jù)類型。如:
USEAdventureWorks;
以下為引用的內容:
GO
/**//*Createauser-definedtabletype*/
CREATETYPELocationTableTypeASTABLE
(LocationNameVARCHAR(50)
,CostRateINT);
GO
對于表類型,有如下約束:
1、用戶自定義表類型不能作為表的列或者結構化用戶自定義類型的域。
2、基于用戶自定義表類型的別名類型。
3、不允許 NOT FOR REPLICATION 選項。
4、CHECK 約束需要一個計算列。
5、在計算列上的主鍵必須包含 NOT NULL 和 PERSISTED 約束。
6、不能在用戶自定義表類型上創(chuàng)建非簇索引。除非索引是創(chuàng)建 PRIMARY KEY 或 UNIQUE 約束的返回值。
7、不能指定 DEFAULT 值。
8、一旦用戶自定義表類型被創(chuàng)建,則它就無法更改。
9、如果沒有定義用戶自定義表類型上的計算列,則用戶自定義函數(shù)無法調用。
6. 表值參數(shù)
數(shù)據(jù)庫引擎現(xiàn)在支持一種新的參數(shù)類型來引用用戶自定義表類型(參考 5)。表值參數(shù)可以發(fā)送更多的 SQL Server 數(shù)據(jù)。
下面的示例展示了如何使用表值參數(shù)。
以下為引用的內容:
關鍵詞標簽:增強,語言,GO,SQL,...
相關閱讀
熱門文章
SqlServer2005對現(xiàn)有數(shù)據(jù)進行分區(qū)具體步驟sql server系統(tǒng)表損壞的解決方法MS-SQL2005服務器登錄名、角色、數(shù)據(jù)庫用戶Access、SQL Server、Oracle常見應用的區(qū)別
人氣排行
如何遠程備份(還原)SQL2000數(shù)據(jù)庫SQL2000數(shù)據(jù)庫遠程導入(導出)數(shù)據(jù)配置和注冊ODBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程SQL2000和SQL2005數(shù)據(jù)庫服務端口查看或修改SQL Server 2005降級到2000的正確操作步驟修改Sql Server唯一約束教程淺談JSP JDBC來連接SQL Server 2005的方法SQL Server創(chuàng)建表語句介紹
|