1.查询结果根据条件翻译成其余值sql
select SNAME,FENSHU=case when FENSHU>=90 then '优秀' when FENSHU>=80 then '良好'when FENSHU>=60 then '及格' else '不及格' end from S_STUDENT
select SNAME,FENSHU=case FENSHU when 90 then '优秀' when 80 then '良好' when 60 then '及格' else '不及格' end from S_STUDENT
2.sql 动态组合查询条件 where 1=1 效率数据库
通常不会影响效率,会自动优化优化
固然也可替换:ui
bool hasWhere = false; StringBuilder strSql = new StringBuilder(); strSql.Append("select * FROM dt_users_log "); if (txtUserID.Text.Trim() != string.Empty) { hasWhere = AppendWhere(strSql, hasWhere); strSql.Append("user_name=@user_id "); } if (DatePicker1.Text.Trim() != string.Empty && DatePicker2.Text.Trim() != string.Empty) { hasWhere = AppendWhere(strSql, hasWhere); strSql.Append("login_time between @start_time and @end_time "); } private bool AppendWhere(StringBuilder sb, bool hasWhere) { if (!hasWhere) { hasWhere = true; sb.Append("where "); return hasWhere; } else { hasWhere = false; sb.Append("and "); return hasWhere; } }
3.批量插入spa
declare @startTime datetime declare @idx int set @idx = 1 set @startTime = GETDATE() while @idx < 18 begin insert into TTest01(c1, c2, C3) select C1,C2,c3 from TTest01 set @idx = @idx + 1 end print datediff(ms, @startTime, GETDATE())
4.清理日志 收缩mdf ldf 文件翻译
sql server 200五、2008清理数据库日志代理
USE 数据库名 ALTER DATABASE 数据库名 SET RECOVERY SIMPLE ALTER DATABASE 数据库名 SET RECOVERY FULL DBCC SHRINKDATABASE(数据库名,0)
这个查询语句能够随时执行,不影响数据库的运行。
清理ldf的操做能够使用sql server代理,天天自动执行一次,就不怕文件增加撑爆硬盘了。
通常mdf用不着收缩,收缩多了容易产生文件碎片,由于delete数据以后,mdf文件中可用页面空间会保留在那里,等下次有新数据进来时,会继续使用。若是实在要清理,能够参考下面的语句:
sql server 2000、200五、2008 收缩mdf文件
DBCC SHRINKDATABASE(数据库名) DBCC SHRINKFILE(1,0) DBCC UPDATEUSAGE(0)
执行上述操做后,你会发现mdf的文件减小了,ldf的文件增大了,再用上面1的日志清理操做一次便可。