sql点滴
子表查询,父表一定要加别名,否则数据会有问题,不报编译错
select * from table1 a where exist(select 1 from table2 where a.id=b.id)
存储过程结果集插入到现有表
insert into table1 exec procname args
联合已有表,紧跟在后面,对汇总很有用
select a from table1 union all select '合计'
结果集里的某列相加
declare @var nvarchar(1000)
set @var=''
select @var=@var+','+alarmname from notice where args=@args
print @var
shell命令
declare @cmd nvarchar(1000)
set @cmd='bcp "select cellphone,msg from atm.dbo.sendoutmsg" queryout '+@outfile+' -c -q -t "|" -U'+@sqluser+' -P'+@sqlpwd +' -S'+@server
EXEC master..xp_cmdshell @cmd ,NO_OUTPUT
(
@cmd 可以是:
dir c:\ c:\dir_out.txt
del c:\deposit.htm
copy c:\resource\deposit.htm c:\
move c:\倒入0911.xls d:\倒入0911.xls
)
大容量数据导入(以\r\n为数据行结尾,|为列分割符)
DECLARE @bulk_cmd varchar(1000);
SET @bulk_cmd = 'BULK INSERT dbo.tmpbasedevinfo from ''D:\dev_bmsg.txt''
with (FIELDTERMINATOR =''|'',
ROWTERMINATOR = '''+CHAR(10)+''')';
exec(@bulk_cmd);
判断文件是否存在
create table #tb(a bit,b bit,c bit)
insert into #tb exec master..xp_fileexist 'c:\furniture.txt'
if exists(select * from #tb where a=1)
PRINT 文件存在
else
PRINT 文件不存在
drop table #tb
相关文档:
/**
* @author 糊涂鬼
* 在建立连接之前需要一些准备工作:
* 在控制面板上通过“管理工具”的“数据源(ODBC)”打开“ODBC数据源管理器”对话框,
* 单击“系统DSN”选项卡,然后单击“添加”按钮,得到“创建数据源”对话框,
......
情景一:
表中数据
name score
aaa 11
aaa 19
bbb 12
bbb 18
ccc 19
ddd 21
期望查询结果如下
name score
aaa 30
bbb   ......
背景:
sql select top N 语句是一个非常重要的语句, 在实现分页查询中是不可或缺的. 由于分页查询通常涉及含有大量记录的表, 并且是为大量用户分享的任务,因此,对其进行优化是很有意义的。
实现sql top N 的功能有几种变种:
1. set rowcount @n; select ... order by somefields
2. select top (@n) .... order by ......
当索引所在页面的基于主关键字的逻辑顺序,和数据文件中的物理顺序不匹配时,碎片就产生了。所有的叶级页包含了指向前一个和后一个页的指针。这样就
形成一个双链表。理想情况下,数据文件中页的物理顺序会和逻辑顺序匹配。整个磁盘的工作性能在物理顺序匹配逻辑顺序时将显著提升。对某些特定的查询而言,
这将带来极佳的 ......