网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.使用SQL语句快速获取SQL Server数.
.通过SQL Server对上传文件内容进.
.SQL Server数据库占用过多内存的.
.仅允许指定的机器连接SQL Server.
.讲解一个Informix数据库存储过程.
.SQL Server 2005数据库恢复脚本示.
.怎样在SQL Server 2005中用证书加.
.SQL Server中单引号的两种处理技.
.数据库差异备份与增量备份的不同.
.SQL Server 2000的视图中必须小心.
.小议主子表INT自增主键插入记录的.
.读取随机记录的例子 SQL语句.
.SELECT查询的应用(一).
.sql server 2000无法打开1433端口.
.不同于其它大部分的SQL数据库引擎.
.在sqlserver2005中安装sql serve.
.SQL Artisan组件之Query对象.
.讲解SQL Server数据库备份的多种.
.用dbschema工具导出Informix数据.
.SQL Server 数据库管理常用的SQL.

sql server 2005扩充技巧

发表日期:2007-9-15


实例:用SQLServer2005内置工具建立审查系统:能够得到,如谁访问了我们的数据、如何批准访问权、以及我们如何对访问进行监控,以防止某些人入侵、登录数据或做他们不该做的事情。引用这里

在SQL2005中处理交叉表: 关键字:PIVOT 和 UNPIVOT
示例: DECLARE @t TABLE ([日期] datetime,[时间] varchar(20),[售货金额] int)
insert into @t select '2006-01-02','早上',50
union all select '2006-01-02','中午',20
union all select '2006-01-02','晚上',30
union all select '2006-01-02','零晨',40
union all select '2006-01-03','早上',40
union all select '2006-01-03','中午',60
union all select '2006-01-03','晚上',50
union all select '2006-01-03','零晨',50
union all select '2006-01-04','早上',80
union all select '2006-01-04','中午',60
union all select '2006-01-04','晚上',20
union all select '2006-01-04','零晨',40
--查询
select * ,金额小计=(select sum(售货金额) from @t where 日期=PT.日期 ) from @t as TAB
PIVOT
( max([售货金额])
  for [时间] in ([早上],[中午],[晚上],[零晨])
) as PT
 --列不确定时: DECLARE @S VARCHAR(MAX)
SET @S=''
SELECT @S=@S+',['+时间+']' FROM @t
  GROUP BY 时间
SET @S=STUFF(@S,1,1,'')
EXEC('
select 日期,'+@S+',金额小计=(select sum(售货金额) from @t where 日期=PT.日期 ) from @t as TAB
PIVOT
( max(售货金额)
  for 时间 in ('+@S+')
) as PT
')

SQL2005中拆分列值,借用XML,简单。见示例: -- 示例数据
DECLARE @t TABLE(id int, [values] varchar(100))
INSERT @t SELECT 1, 'aa,bb'
UNION ALL SELECT 2, 'aaa,bbb,ccc'

-- 查询处理
SELECT A.id, B.value
FROM(
SELECT id, [values] = CONVERT(xml,
'<root><v>' + REPLACE([values], ',', '</v><v>') + '</v></root>')
FROM @t
)A
OUTER APPLY(
SELECT value = N.v.value('.', 'varchar(100)')
FROM A.[values].nodes('/root/v') N(v)
)B 结果:
1    aa
1    bb
2    aaa
2    bbb
2    ccc
引用 :http://blog.csdn.net/itblog/archive/2006/06/05/774358.aspx

SQL2005中合并列值,见示例 -- 示例数据
DECLARE @t TABLE(id int, value varchar(10))
INSERT @t SELECT 1, 'aa'
UNION ALL SELECT 1, 'bb'
UNION ALL SELECT 2, 'aaa'
UNION ALL SELECT 2, 'bbb'
UNION ALL SELECT 2, 'ccc'

SELECT *
FROM(
SELECT DISTINCT
id
FROM @t
)A
OUTER APPLY(
SELECT [values]= STUFF(REPLACE(REPLACE(
(
SELECT value FROM @t N
WHERE id = A.id
FOR XML AUTO
), '<N value="', ','), '"/>', ''), 1, 1, '')
)N

/**//*--结果
id          values
----------- ----------------
1           aa,bb
2           aaa,bbb,ccc 更多见:http://blog.csdn.net/itblog/archive/2006/06/05/774363.aspx


SQL2005新函数,排列函数:
示例1: 在结果集中显示行号 ROW_NUMBER ( )函数 语法:
ROW_NUMBER() OVER ( [ <partition_by_clause> ] <order_by_clause> )
SELECT ROW_NUMBER() OVER (ORDER BY id) AS 行号,* FROM sysobjects 返回结果集:
行号 对象名称 
1      sp_MSalreadyhavegeneration
2      sp_MSwritemergeperfcounter  
3      TABLE_PRIVILEGES

在2000版本中要这样实现 SELECT Identity(int,1,1) AS Num,* INTO #temptable FROM TableName
SELECT*FROM #temptable
DROP TABLE #temptable
示例2:RANK()函数保留列表中行的位置序号,对于每个重复值,这个函数跳过下面值,于是下一个不重复的值就保留在了正确的位置上了。
DENSE_RANK()函数工作方式是相同的,不过它不跳过每个连带之后的数字,这样就不会有数字消失了,不过排列序号位置出现连带的地方就丢失了。
举例(在做学生成绩排名之类的时非常有作用。这两个非常有用)

示例3:NTITLE(n)函数,将结果切分为有限数量的排列组。更多示例见联机丛书.


sql 2005 express版本,需要加增加图形管理器,下载,express版本中默认没有,sql2005 功能包 列表 
sql2005导入导出向导: C:\Program Files\Microsoft SQL Server\90\DTS\Binn\DTSWizard.exe 可自己在工具--外部工具中--添加引用.好比快捷方式。

上一篇:局域网内的ado 连接 sql server 人气:3663
下一篇:关于sql server下无限多级别分类查询解决办法 人气:2506
浏览全部sql server 2005的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐