Sql FAQ

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的日志清理操做一次便可。
相关文章
相关标签/搜索