SqlServer零碎知识
作者:Dreamer
出处:https://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