zoukankan      html  css  js  c++  java
  • Sql FAQ

    1.查询结果根据条件翻译成其他值

    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 效率

    一般不会影响效率,会自动优化

    当然也可替换:

    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.批量插入

    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 2005、2008清理数据库日志

    USE 数据库名
    ALTER DATABASE 数据库名 SET RECOVERY SIMPLE
    ALTER DATABASE 数据库名 SET RECOVERY FULL
    DBCC SHRINKDATABASE(数据库名,0)
    这个查询语句可以随时执行,不影响数据库的运行。
    清理ldf的操作可以使用sql server代理,每天自动执行一次,就不怕文件增长撑爆硬盘了。
    一般mdf用不着收缩,收缩多了容易产生文件碎片,因为delete数据之后,mdf文件中可用页面空间会保留在那里,等下次有新数据进来时,会继续使用。如果实在要清理,可以参考下面的语句:
    sql server 2000、2005、2008 收缩mdf文件
    DBCC SHRINKDATABASE(数据库名)
    DBCC SHRINKFILE(1,0)
    DBCC UPDATEUSAGE(0)
    执行上述操作后,你会发现mdf的文件减少了,ldf的文件增大了,再用上面1的日志清理操作一次即可。
  • 相关阅读:
    exit()和_exit()函数(转)
    C语言struct内存占用问题 (转)
    C语言中memset函数(转)
    STDIN_FILENO与stdin区别(转)
    stderr,strerror,errno,perror,论坛大神的回答!
    C++ 函数模版
    C++ 内置函数
    offsetof
    LockSupportDemo
    读写锁,await和signa
  • 原文地址:https://www.cnblogs.com/LifeKingcn/p/3481563.html
Copyright © 2011-2022 走看看