zoukankan      html  css  js  c++  java
  • T-Sql常用语句

    1.用bcp导出txt数据

    DECLARE
    @bcp VARCHAR(100),
    @date VARCHAR(10)
    
    BEGIN
    SET @date = REPLACE(CONVERT(VARCHAR, GETDATE() - 2, 111), '/', '-');
    
    SET @bcp = 'bcp WebStat.dbo.[PV_HIS_' + @date + '] out pvtxtPV_HIS_' + @date + '.txt -c -T';
    
    --PRINT @bcp;
    -- 执行bcp命令
    EXEC xp_cmdshell @bcp;
    
    END;

    2.动态执行sql

    declare @sql varchar(4000)
    
    set @sql='select name' select @sql=@sql+',isnull(sum(case subject when '''+subject+''' then result end),0)['+subject+']'
    
    from (select distinct subject from CJ) as a select @sql=@sql+' from CJ group by Name'
    
    print @sql -- 打印
    
    declare @test varchar(300)
    
    set @test = 'select getdate()'
    
    print @test
    
    exec(@test) --执行sql语句

    3. 系统sql语句

    --0.查询数据库中所有对象
    
    select * from yourdb.sys.all_objects
    
    --查询数据库中所有的表
    
    select * from yourdb.sys.tables
    
    select * from yourdb.sys.databases

    --1 查询所有的数据库名称

    select Name FROM Master.dbo.SysDatabases order BY Name

    --2 获取所有表名

    --XType='U':表示所有用户表;

    --XType='S':表示所有系统表;

    select name from sysobjects where xtype='U' order by name

    --注意:一般情况只需要type = 'U',但有时候会有系统表混在其中

    --不知道什么原因,加上后面一句后就能删除这些系统表了

    SELECT name FROM sysobjects WHERE type = 'U' AND sysstat = '83'

    select * from sysobjects where [type]='u' and xtype='u';

    select * from systypes where xusertype=56

    --3 获取所有字段名:

    select name from syscolumns where id=OBJECT_ID('city') –或视图名

    SELECT syscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length

    FROM syscolumns, systypes

    WHERE syscolumns.xusertype = systypes.xusertype

    AND syscolumns.id = object_id('tableName')

    4.常用DDL语句

    --创建数据库
    Create database Users
     
    
    --创建表,添加主、外键
    
    Create table T_Students(
    
    Id int  IDENTITY(1,1) NOT NUL,
    
    StudentNo char(4),
    
    CourseNo char(4),
    
    Score int,
    
    Primary key(Id),
    
    Foreign key(CourseNo) References T_Course(CourseNo)
    
    );
     
    
    --修改表结构,添加字段
    Alter table T_Person add NickName nvarchar(50) null;
       
    
    --修改表结构,删除字段
    Alter table T_Person Drop column NickName;
     
    
    --删除数据表
    Drop table T_Person;
     
    
    --创建索引
    Create [Unique] Index <索引名> on <基本表名>(<列明序列>);
    1group by 功能:分组统计
    
     
    
    2、having子句,功能:指定组合或者聚合的搜索条件,通常与group by子句一起使用,完成分组查询后在进行筛选
    
     
    
    3、联合查询 union: 功能:将两个以上的查询结果集组合成一个单个的结果集,该集中包括所有集中的全部行数据
    
     
    
    4、连接查询,功能:将多个表中的数据查询出来放在一起
    
     
    
        1)内连接:使用 = < > 等进行表间某些数据库的比较操作,并列出这些表中与连接条件相匹配的数据行
    
        如:select * from TableA inner join TableB where A.aid = B.aid
    
        2)自然连接:指明要查询的列,并排序
    
        3)外连接:与内连接不同的是,内连接至少要有一个同属于两个表的行符合连接条件时才会返回行,
    
                   外连接会返回符合任意条件的行,它的表有主从之分,用主表中的每行去匹配从表中的行,
    
                   与内连接不同的是,外连接不会丢弃没有匹配的行,而是填充null给结果集。
    
    5、创建一个表的SQL语句
    
        create table tempTable(
    
            id int priamry key identity(1,1) not null,
    
            fieldA nvarchar(20),
    
            FK_ID int references OtherTable(id)
    
        )
    
    6、子查询:一个sql语句中嵌套另一个sql语句就叫嵌套查询,而被嵌入的这个语句就叫做子查询。
    
               子查询也称内部查询,而包含子查询的select语句被称为外部查询,子查询自身可以包含一个或多个子查询,也可以嵌套任意数量的子查询。
    
    7、创建视图:视图就是一个虚表
    
    create View view.tempView
    
    select app.AppManageID,app.CompanyName, app.Passport, app.WebURL, app.ShopType,app.CreateTime from           AppManage as app
    
    inner join PackageInfo as p on app.AppManageID=p.AppManageID

    4.表复制

    方法1:语句形式为:SELECT vale1, value2 into Table2 from Table1

    Table2可以不存在。

    方法2:语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1

    Table2必须存在。

    update 2014-10-10 21:13:25

    1. substring(string,startIndex, length)
    select substring ('2013-08-26 14:30:01.543' ,1 ,10 )
    结果:2013-08-26
     
    2.dateadd(yy/mm/dd年或月或日,日期加减,日期)
    select dateadd (dd ,-10 ,getdate ())
    结果:2013-08-26 14:37:42.543
     
    3.convert(varchar(50), string, 120)
    select convert (nvarchar (30 ),'2013-08-26 14:39:53.857',120)
    结果:2013-08-26 14:39:53.857
    转换日期和字符串的函数
     
    4. datename(day/month/weekday, 时间)
    select datename (weekday , getdate())
    结果:Thursday
     
     
    group by 有一个原则,
    就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面
     
     
    sql中char(9) char(10) char(13)分别代表哪个字符
    可以直接用语句查 select char(9) ,char(10), char(13)
    查出来全是空白~
    那就查ASCII表吧~
    char(9) 水平制表符
    char(10)换行键
    char(13)回车键

    char(9) :tab
    char(10) :换行
    char(13):回车
    一般char(10)char(13)连着用,表示0x0A0x0D,即一个完整的回车换行。
     
     
    sql 执行顺序:
    from -> where -> group by -> having -> select -> order by -> top
     
     
    如何收缩数据库?
     
    --1.
    --前期准备
    DUMP TRANSACTION webstat WITH NO_LOG
    bACKUP LOG webstat WITH TRUNCATE_ONLY
    
    --2.
    webstat :文件名称
    ——收缩数据库
    DBCC SHRINKFILE(N'webstat',916000)
    
    
    --3.
    ——查看收缩进度
    use master
    go
    select * from sysprocesses
    --cmd='DbccFilesCompact' (查session_id )
    
    SELECT session_id,percent_complete
    FROM sys.dm_exec_requests t WHERE session_id=59
    go
    
    DUMP TRANSACTION webstat WITH NO_LOG
    bACKUP LOG webstat WITH TRUNCATE_ONLY
    
    DBCC SHRINKFILE(N'web',916000)
    
    use master
    go
    
    SELECT session_id,percent_complete
    FROM sys.dm_exec_requests t WHERE session_id=53
    
    select * from sysprocesses
    t-sql 动态执行sql语句
     
    CREATE procedure [dbo].[pr_state]
    as
    begin
    DECLARE @SQLString NVARCHAR(500)
    DECLARE @datetime NVARCHAR(20)
    set @datetime =CONVERT(varchar(10), getdate()-1   ,120);
    SET @SQLString =N'
          insert into PV_HIS_JifenWall_Report(recorddate,type,count,usercount)
          select '''+@datetime+''' , PageQueryString,count(1) cnt,count(distinct UserAccount)  cntuseraccount
          from [dbo].[PV_HIS_'+ @datetime+ '] a with(nolock) where PageQueryString in
          (''CPAList'',''CPADownload'',''CPAInstall'',''CPAOpen'')
          group by PageQueryString'
    --print @SQLString
    EXEC sp_executesql @SQLString
    end
     
     
  • 相关阅读:
    System.Threading.Timer 无规律执行次数的问题
    C#通过URL获取顶级域名的方法
    C#变量声明添加?与@的用法
    基于system.diagnostics Trace的日志输出
    SSB(SQLservice Service Broker) 入门实例
    .NET 入门测试题二:流程控制
    .NET 入门测试题三:变量的更多内容
    .NET 入门测试题四:函数
    .NET 入门测试题一:变量与表达式
    WinCE切换GPRS
  • 原文地址:https://www.cnblogs.com/fanyong/p/3351702.html
Copyright © 2011-2022 走看看