SQL语句

日常总结,持续更新...
1、获取上个月的年月
Select Convert(Char(6),Dateadd(m,-1,Getdate()),112) 
获取前一天 2012-07-18
Select Convert(Char(10),Dateadd(d,-1,GETDATE()),120) 

2、获取当前月的年月
Select Convert(Int,DateName(year,Getdate())+DateName(month,Getdate()))   
DatePart(datepart,date) 返回一个整数
DateName(datepart,date)返回一个字符串

3、随机选出10条数据
Select Top 10 * FROM 表名 Order By Newid()

4、删除重复记录
Delete From 表名  Where Id Not In (Select Max(id) From 表名  Group By 重复字段名)

5、BCP导出数据(选项很多,不赘述)
Exec master..xp_cmdshell 'Bcp "Select * From 库名.dbo.表名 where 条件" Queryout d:\a.txt -c -T'

6、BCP导入数据
Exec master..xp_cmdshell 'Bcp 库名.dbo.表名  in D:\c.txt -c -T'

7、跨服务器查询
Select  * From OPENDATASOURCE(
                'SQLOLEDB',
                'Data Source=xxx.xxx.xxx.xxx,xxx;User ID=xx;Password=xx'
                ).库名.dbo.表名
--2008
select * from openrowset('MSDASQL','DRIVER={SQL Server};SERVER=服务器IP;UID=帐号;PWD=密码',库名.架构名.表名)

8、删除主键约束
Alter Table 表名 Drop Constraint 约束名
 
9、将一个表的字段值修改为另一个表对应字段的值
多映射修改某个表的字段值
Update 表A
Set 表A.Msg= B.Msg
From 表A, (Select Id,Msg From 表B) As B
Where 表A.Id = B.Id

Update 表A
Set 字段=表B.字段
From 表A A
JOIN 表B B
ON A.字段=B.字段
 
10、获取主键
 Exec sp_pkeys 表名

11、获取索引
Exec sp_helpindex 表名

12、将某个表的OWNER更改为DBO
exec   sp_changeobjectowner   '表名', 'dbo '
 13、查看数据库日志文件的大小
dbcc sqlperf(logspace)  

14、获取某个表的字段名
Select A.name From Syscolumns A Inner Join Sysobjects B On A.id=B.id And B.type='U' And B.name='tbl_orders_201210'
将字段整合成一个字符串,以逗号隔开
  Select @RowNames = IsNull(@RowNames + ',' , '' ) + IsNull( Name , '' ) From ##mytemp
  Set @RowNames=SubString(@RowNames,2,Len(@RowNames))

15、判断某个表是否存在
If Object_ID(TableName) is not null

16、判断创建的服务器链接是否存在
If Exists(Select Top 1 srvid From master.dbo.sysservers Where srvname='srv_lnk')
--查看链接服务器
EXEC sp_helpserver 

17、合并字段
 select 分组列,   stuff((select ',' +合并列 from 表 t where 分组列 = 表.分组列 for xml path('')) , 1 , 1 , '')
from 表 group 分组列

本文出自 “杨金澎” 博客,谢绝转载!

你可能感兴趣的:(sql,语句)