SqlServer零碎知识
作者:Dreamer
出处:http://www.dreamerlzy.com/blog/article/detail/sqlserver-piece-knowledge
说明:本文版权归作者所有,欢迎转载,但未经作者同意时,请在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
参考:
无
1、--获取当前数据库信息 大小 名字 日志大小 exec sp_spaceused 2、--获取当前数据库表 exec sp_tables 3、--获取当前帐号下所有数据库信息 exec sp_databases 4、--更改表名 exec sp_rename 'a','b' 5、--更改列名 exec sp_rename 'b.about','aaaa','column' 6、--查询所有存储过程 select * from sys.objects where type='p' 7、--数据库版本号 select @@version 8、--服务器名称 select @@servicename 9、--sql 求1-100的和 declare @i int,@sum int set @i=1 set @sum=0 while (@i<=100) begin set @sum=@sum+@i set @i=@i+1 end print @sum go 10、--sql case语句 select *,'是否显示'= case isshow when 'true' then '显示' when 'false' then '不显示' else '0.0' end from pas_newsinfo 11、--去除重复后查询数量 select count(distinct isshow) from pas_newsinfo 12、--查询是否为空 select * from Pas_aboutinfo where extr is not null 13、--公式表表达式 把一个结果集作为表 方便 后面使用 with ceshi as ( select tid,max(price) as price from PAS_PriceRecord group by tid ) select * from ceshi 14、--自连接(当同一张表中的字段有关联时 使用) select distinct s.* from student s, student s1 where s.id <> s1.id and s.sex = s1.sex; 15、---时间格式化 select datename(month,getdate()) select datepart(month,getdate()) select day('2012-3-30') ---当前日期的天 select getutcdate() select getdate() 16、---时间计算 select dateadd(year,1,getdate()) ---时间+ select datediff(day,'2012-11-29',getdate()) ---时间差 17、--查询数据类型长度 select col_length('PAS_PPT',col_name(object_id('PAS_PPT'),2)) 18、--字符的长度 select len('你乖哈') 19、--查询列名 select col_name(object_id('PAS_PPT'),2) 20、--视图 if exists(select * from sysobjects where name='ceshi') drop view ceshi go create view ceshi as select * from Pas_NewsInfo go select * from ceshi 21、--清除所有表中的数据 declare @trun_name varchar(8000) set @trun_name='' select @trun_name=@trun_name + 'truncate table ' + [name] + ' ' from sysobjects where xtype='U' and status > 0 exec (@trun_name) 该方法适合表不是非常多的情况,否则表数量过多,超过字符串的长度,不能进行完全清理. 22、--批量删除表 DECLARE @STRING VARCHAR(8000) WHILE EXISTS(SELECT * FROM sys.all_objects WHERE type = 'U' ) BEGIN SELECT @STRING='DROP table '+b.name+'.'+a.name FROM sys.all_objects a left join sys.schemas b on a.schema_id = b.schema_id WHERE a.type = 'U' and a.name not like '%wh_%' --SELECT @STRING EXEC(@STRING) END GO drop table in ( SELECT * FROM sys.all_objects WHERE type = 'U' and name not like '%wh_%' ) 23、清除数据库日志 -- sql2005 清空数据库日志 dump transaction kingho2013 with no_log -- sql 2008 和 2012 清空数据库日志文件 --清除单个数据库日志 USE [master] GO ALTER DATABASE kingho2013 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE kingho2013 SET RECOVERY SIMPLE --简单模式 GO