易截截图软件、单文件、免安装、纯绿色、仅160KB

用SQL Server 2005 CTE简化查询

SQL Server 2005引进了一个很有价值的新的Transact-SQL语言组件:一个通用表表达式(Common Table Expression,CTE),它是派生表和视图的一个便捷的替代。通过使用CTE,我们可以创建一个命名结果集来在SELECT、INSERT、UPDATE和DELETE语句中引用,而无须保存结果集结构的任何元数据。在本文中,我将阐述如何在SQL Server 2005中创建CTE——包括如何使用CTE来创建一个递归查询——并举几个例子来说明它们是如何使用的。注意,本文中所有例子都使用SQL Server 2005的AdventureWorks示例数据库。
在SQL Server 2005中创建一个基本CTE
我们可以在SELECT、INSERT、UPDATE或DELETE语句之前添加一个WITH子句来构成一个CTE。下面的语法显示了WITH子句的基本构造和CTE定义:
[WITH <CTE_definition> [,...n]]
<SELECT, INSERT, UPDATE, or DELETE statement that
calls the CTEs>
<CTE_definition>::=
CTE_name [(column_name [,...n ])] 
AS
(
CTE_query

如上面语句所示,你可以在可选的WITH子句中定义多个CTE。CTE定义包含CTE名称、CTE字段名称、AS关键字和括号中的CTE查询。注意,CTE字段名称的数目必须与CTE查询返回的字段数目相匹配。另外,如果CTE查询提供所有字段名称,那么字段名称是可选的。
现在我们已经对SQL Server的CTE语法有了基本的了解,下面让我们来看一个CTE定义的例子,以便更好地理解这个语法。下面的例子定义了一个命名为ProductSold 的CTE,接着在SELECT语句中引用了CTE:
WITH ProductSold (ProductID, TotalSold)
AS 
(
SELECT ProductID, SUM(OrderQty) 
from Sales.SalesOrderDetail
GROUP BY ProductID

SELECT p.ProductID, p.Name, p.ProductNumber, 
ps.TotalSold
from Production.Product AS p
INNER JOIN ProductSold AS ps 
ON p.ProductID = ps.ProductID
这里可以看到,WITH子句在引用CTE的SELECT语句之前。WITH子句的第一行包含了CTE的名称(ProductSold)以及在CTE 的两个字段名称(ProductID 和TotalSold)。接着是AS关键字,紧接着是括号中的CTE查询。这样,CTE查询返回了每个产品的销售总数。


相关文档:

SQL Server 中 int、bigint、smallint 和tinyint

使用整数数据的精确数字数据类型。
 bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。
              存储大小为 8 个字节。
 int 从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,64 ......

如何恢复MS SQL数据库的MDF文件

參考: http://blog.sina.com.cn/s/blog_59b11d010100af1n.html
如何恢复/修复MS SQL数据库的MDF文件
如果备份的数据库有2个文件,分别是.LDF 和 .MDF,打开企业管理器,在实例上右击---所有任务--附加数据库,然后选择那个.MDF文件,就可以了。
  或者在查询分析器中输入:
  sp_attach_db "数据库名称" ......

根据当前等待事件名查找造成该等待事件的SQL

例如查找关于对library ....等待事件有贡献的SQL
select sql_text from V$sqlarea  where (address,hash_value) in
(select sql_address,sql_hash_value from v$session  where event like 'library%');
此语句只能运行于10g版本以上,因为10g中v$session视图包含了等待事件的信息了,9i中没有 ......

几条有用的Sql语句

1. Sql  延时候执行
a. 三十秒后执行 WAITFOR DELAY  后面的语句
WAITFOR DELAY '00:00:30'
b. 10:00分开始执行后面的代码
WAITFOR TIME '10:00';
 
2.  收缩数据库,使其空余空间为0%
DBCC SHRINKDATABASE (DataBaseName,0)
3.  取得数据库文件所在的盘符
declare @dirverNam ......

几条常见的数据库分页 SQL 语句

 我们在编写MIS系统和Web应用程序等系统时,都涉及到与数据库的交互,如果数据库中数据量很大的话,一次检索所有的记录,会占用系统很大的资源,因此我们常常采用,需要多少数据就只从数据库中取多少条记录,即采用分页语句。根据自己使用过的内容,把常见数据库SQL Server,Oracle和MySQL的分页语句,从数据库表中的第 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号