当前位置: 首页 > 图文教程 > 数据库 > 数据库技巧 > 收藏的SQLServer技巧集

数据库技巧
数据库设计经验谈
数据库设计的折衷方法
Access与sql server的语法区别总结
收藏的SQLServer技巧集
多种获取远程连接access数据库的方法
SQL中NTEXT字段内容显示<long text>的原因
SQL Prompt--绝好的SQL语法提示工具
海量数据库的查询优化及分页算法方案 2 之 改良SQL语句
海量数据库的查询优化及分页算法方案集合1/2
海量数据库的查询优化及分页算法方案集合2/2
取随机记录的语句
问个高难度的复杂查询(在一个时间段内的间隔查询)
Sql语句求最小可用id
Sql Server 和 Access 操作数据库结构Sql语句小结
ACCESS转化成SQL2000需要注意的几个问题小结
SQL Server数据库性能优化技术
数据库正规化和设计技巧
如何让你的SQL运行得更快
Select data from an Excel sheet in MSSQL
一个多表查询的SQL语句

数据库技巧 中的 收藏的SQLServer技巧集


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 50 ::
收藏到网摘: n/a

上次写了个ACCESS技巧集,反映良好,这次来个SQL语句特殊技巧吧
1.把某个字段重新生气序列(从1到n):
DECLARE @i int
Set @i = 0
Update Table1 Set @i = @i + 1,Field1 = @i
2.按成绩排名次
Update 成绩表
Set a.名次 = (
Select Count(*) + 1
From 成绩表 b
Where a.总成绩 < b.总成绩
)
From 成绩表 a
3.查询外部数据库
Select a.*
From OpenRowSet('Microsoft.Jet.OLEDB.4.0','c:\test.mdb';'admin';'',Table1) a
4.查询Excel文件
Select *
From OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...Sheet1$
5.在查询中指定排序规则
Select * From Table1 Order By Field1 COLLATE Chinese_PRC_BIN
为什么要指定排序规则呢?参见:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1633985
例,检查数据库中的Pub_Users表中是否存在指定的用户:
Select Count(*) From Pub_Users Where [UserName]='admin' And [PassWord]='aaa' COLLATE Chinese_PRC_BIN
默认比较是不区分大小写的,如果不加COLLATE Chinese_PRC_BIN,那么密码aaa与AAA是等效的,这当然与实际不符.注意的是,每个条件都要指定排序规则,上例中用户名就不区分大小写.

6.Order By的一个小技巧
Order By可以指定列序而不用指定列名,在下面的例子里说明它的用处(注意,第三列未指定别名)
Select a.ID,a.Name,(Select Count(*) From TableB b Where a.ID=b.PID) From TableA a Order By 3