1、通过sql语言查询表结构:(MSSQL2000中有效)

作用:可以快速生成数据词典。

  1. SELECT TOP 100 PERCENT c.colid AS 序号, o.name AS 表名, c.name AS 列名,   
  2.       t.name AS 类型, c.length AS 长度, c.isnullable AS 允许空,   
  3.       CAST(m.[value] AS Varchar(100)) AS 说明  
  4. FROM dbo.syscolumns c INNER JOIN 
  5.       dbo.sysobjects o ON o.id = c.id AND objectproperty(o.id, N'IsUserTable') = 1 AND   
  6.       o.name <> 'dtproperties' INNER JOIN 
  7.       dbo.systypes t ON t.xusertype = c.xusertype LEFT OUTER JOIN 
  8.       dbo.sysproperties m ON m.id = o.id AND m.smallid = c.colorder  
  9. ORDER BY o.name, c.colid 

说明:【sysproperties】表 原来【SQL2000】中的表【sysproperties】在【SQL2005】中已经不存在了,被是表【extended_properties】取代了

所以在SQL2005中改成:

  1. SELECT TOP 100 PERCENT c.colid AS 序号, o.name AS 表名, c.name AS 列名,   
  2.       t.name AS 类型, c.length AS 长度, c.isnullable AS 允许空,   
  3.       CAST(m.[value] AS Varchar(100)) AS 说明  
  4. FROM dbo.syscolumns c INNER JOIN 
  5.       dbo.sysobjects o ON o.id = c.id AND objectproperty(o.id, N'IsUserTable') = 1 AND   
  6.       o.name <> 'dtproperties' INNER JOIN 
  7.       dbo.systypes t ON t.xusertype = c.xusertype LEFT OUTER JOIN 
  8.       sys.extended_properties m ON m.major_id = o.id AND m.minor_id = c.colorder  
  9. ORDER BY o.name, c.colid  

2、通过作业定制定期数据库备份

定期备份数据库,减少人工操作,但是缺点是随着时间的增长,不断生成备份文件,造成文件容量不断增大,需要定期删除早期的不需要的备份。可以定制作业定期删除规定时间内的备份文件。参考之前整理的资料(数据库日常维护常用的脚本部分收录

根据需要修改备份存储路径、数据库名称、备份名称;作用备份语句:

  1. declare @filename nvarchar(100);  
  2. set @filename='E:\BackUP_data_bak\databaseName_data\databaseName_backup_'
  3. +convert(char(10),getdate(),112)+'.bak' print @filename;  
  4. backup database [DatabaseDB] 
  5. to disk=@filename with noinit,nounload,name=N'BackUP_databaseName',  
  6. noskip,stats=10,noformat;     /*DatabaseDB:要备份的数据库名称;BackUPDatabase:备份名称*/ 

 3、函数(工作中的需求)

根据给出的字符串得出相应的权重,给出的字符串如:'S41J11G41S21'

执行代码:

  1. select dbo.fun_GetPrizeValue('S41J11G41S21'

函数代码:

  1. create function [dbo].[fun_GetPrizeValue](@str varchar(15))  
  2. returns float 
  3. as   
  4. begin 
  5. declare @num int,@i int,@value float,@sum float,@m int 
  6. set @i=1  
  7. set @m=0  
  8. set @sum=0  
  9. if(@str=''set @num=0  
  10. else select @num=len(@str)  
  11. while @i<=(@num/3)  
  12. begin 
  13. select @value=case when substring(@str,@i+@m,2)= 'G2' then 9  
  14. when substring(@str,@i+@m,2)='G3' then 0.95  
  15. when substring(@str,@i+@m,2)='G4' then 0.8  
  16. when substring(@str,@i+@m,2)='S2' then 0.75  
  17. when substring(@str,@i+@m,2)='J1' then 0.7  
  18. when substring(@str,@i+@m,2)='G1' then 95  
  19. when substring(@str,@i+@m,2)='S4' then 0.6  
  20. else 0 end 
  21. set @sum=@value*convert(int,substring(@str,@i+2+@m,1))+@sum 
  22. set @i=@i+1  
  23. set @m=@m+2  
  24. end 
  25. return @sum 
  26. end 

 4、递归查询

当遇到一个树状结构存储的表时,即,一个表中存在两个字段:ID,ParentID时,通过给出一个ID,获得该ID的所有子信息,通过创建存储过程,并调用存储过程实现。可根据需要做相应的修改。

存储过程:

  1. create procedure [dbo].[sp_search](@id int)  
  2. as 
  3. declare @level int,@cur int 
  4. create table #stack  
  5. (depth_level int,  
  6. tb1_id int 
  7. )  
  8. create table #tmp  
  9. (seq_no int identity(1,1),  
  10. org_level int not null,  
  11. tb1_id int not null 
  12. )  
  13. select @level=1  
  14. select @cur=@id  
  15. insert into #stack(depth_level,tb1_id) select @level,tableNameID from tableName where tablenameID=@id  
  16. while (@level>0)  
  17. begin 
  18. if exists (select * from #stack where depth_level=@level)  
  19. begin 
  20. set rowcount 1  
  21. select @cur=tb1_id from #stack where depth_level=@level 
  22. set rowcount 0  
  23. insert into #tmp(org_level,tb1_ID)select @level,@cur  
  24. delete from #stack where depth_level=@level and tb1_id=@cur  
  25. insert into #stack select @level+1,tableNameID from tableName where   
  26. tableNameFatherID=@cur and tableNameFatherID<>tableNameID  
  27. if @@rowcount>0  
  28. select @level=@level+1  
  29. end   
  30. else 
  31. begin 
  32. select @level=@level-1  
  33. end 
  34. end 
  35. /*select * from #tmp*/  
  36. select * from tableName where tableNameID in (select tb1_id from #tmp) 

执行代码:

  1. exec dbo.sp_search 1 

 5、创建数据库SQL语言

  1. create database DatabaseDB  
  2. on primary 
  3. (  
  4. name='DatabaseDB_Data',--主数据文件的逻辑名  
  5. filename='D:\database\DatabaseDB_data.mdf',--主数据文件的物理名  
  6. size=10MB,--初始大小  
  7. filegrowth=10%--增长率  
  8. )  
  9. log on 
  10. (  
  11. name='DatabaseDB_Log',--日志文件的逻辑名  
  12. fileName='D:\database\DatabaseDB_data.ldf',--日志文件的物理名  
  13. size=1MB,  
  14. maxsize=20MB,--最大大小  
  15. filegrowth=10%