• 数据库常用语句 陀螺


    统计记录数Count()、DISTINCT

    select COUNT(name)

    from [DemoDB2008].[dbo].[tem]

    use master

    go

    select COUNT( distinct name)

    from [DemoDB2008].[dbo].[tem]

    where name='jim'

     

    统计字段不同值分别是什么

    select distinct ss_id from dbo.Url_Base with(nolock)

    查询的总量(无意义)

     

    ------------查询导进fff库的数量---------------

    declare @c1 int,@c2 int,@sum int,@jt varchar(40),@wxj varchar(40)

    set @jt='佳通'

    set @wxj ='无限极'

    select @c1= count(*) from

    ((select SN from ViewContentAndExt where SN like @jt+'%')

    except

    (select originalid from [12.111.0.1].Giti_VoC.dbo.article where originalid like @jt+'%')) as a

     

    select @sum =COUNT(*) from ViewContentAndExt where SN like @jt+'%'

    print 'meta库总计:'

    print @sum

     

    set @c2=@sum-@c1

    print '传输成功的:'

    print @c2

     

    print '传输失败的:'

    print @c1

     

    SELECT COUNT(Url)

      FROM [Url_Base] with(nolock)

     

      SELECT C_Id

      FROM [Url_Base] with(nolock)

      GROUP BY

      C_Id

     

         SELECT SS_Id

      FROM [Url_Base]

     with(nolock) where C_Id = 3

      GROUP BY

     SS_Id

     

      SELECT

      Url,

      COUNT( Url )

    FROM

     [Url_Base]

     with(nolock) where (C_Id = 3 and SS_Id =17 )

    GROUP BY

      Url

      HAVING

       COUNT( Url) > 1

     

     

    平均值计算函数AVG()

    select AVG(age)

    from [DemoDB2008].[dbo].[tem]

     

    内容统计函数SUM()

    select SUM(age)

    from [DemoDB2008].[dbo].[tem]

     

    修改

    Update [Url_Base] set SN = 'Exchange_20111226_'+SN
     where C_Id = 30

     

    最大值MAX()和最小值计算MIN()

    select MAX(age)

    from [DemoDB2008].[dbo].[tem]

     

    select MIN(age)

    from [DemoDB2008].[dbo].[tem]

     

    功能将字符串中的小写字母转换为大写字母。

    --upper
    select upper('he is a good person')

     

    定时查询数据库

    --例 等待1 小时2 分零3 秒后才执行SELECT 语句
    waitfor delay '01:02:03'
    select * from employee
    --例 等到晚上11 点零8 分后才执行SELECT 语句
    waitfor time '23:08:00'
    select * from employee

    创建临时表

    declare @temp_table table

    (

    bookID VARCHAR(10) primary key,

    book_price float default null,

    bookName varchar(50)

    )

    insert into @temp_table values('1',50,'c#')

    insert into @temp_table values('2',null ,'c')

    select bookID AS '书的编号',isnull(book_price,0) as '书的价格'

    from @temp_table

    删除特定数据,除**之外的数据

    delete from [MetaData].[dbo].[Url_Base] where SN not in('白沙','北京')

     

    delete from 表名 where 字段名 <>'白沙' and 字段名<>'北京'

     

    delete from [MataData_Office].[dbo].[Url_Base] where (SN >'00000000' and SN <'0000041100')

    删除重复数据

    http://www.cnblogs.com/zuoqs/archive/2009/12/06/1618226.html

    方法一:还是2000年的时候一位Oracle DBA叫罗敏发给技术部全体的(可惜原始邮件找不到了,要不然我当文物发给大家):
    delete from temp
    where id not in (
     select min(id) 
     from temp
     group by column1,column2,...,columnn)
     个人感觉这个方法思路比较清晰。不过效率相对来说不高。

    方法二:赵贲在网络上搜出来的:
     --删除相同城市下的相同行政区
     delete a from area a where a.id>(select min(id) from area b where a.area_id=b.area_id and a.city_id=b.city_id)
     
    方法三:使用sql 2005新增的row_number()功能和with关键字,我是从赵立东那里学来的。

    print('删除PriceInfo表中重复的记录')
    ;WITH a AS (
     SELECT ROW_NUMBER()OVER (PARTITION BY hotel_id,room_type_id,start_date,end_date
     ORDER BY hotel_id,room_type_id,start_date,end_date) AS rn ,* 
     FROM hotel_price
     )
    delete from a WHERE a.rn>1

     

    游标

    declare cursor_c cursor

    for select * from [DemoDB2008].[dbo].[tem]

    open cursor_c fetch next from cursor_c

    while @@fetch_status=0  

    begin

    fetch next from cursor_c

    end

    close cursor_c

     

     

    存储过程

    USE DemoDB2008;//数据库名称

    GO

    SET ANSI_NULLS ON

    GO

    SET QUOTED_IDENTIFIER ON

    GO

    create PROCEDURE dbo.sp_who//create 创建存储过程,alter 用于执行查询

    AS

        SELECT departmentName, [departmentRemark] FROM [DemoDB2008].[dbo].[Departments];//查询语句

    GO

    sp_who;//执行

    execute sp_who; //执行

    EXEC dbo.sp_who;GO//执行

    DROP PROCEDURE dbo.sp_who;//删除存储过程

    GO

    带函数的存储过程

    USE DemoDB2008;

    GO

    --IF OBJECT_ID ( 'dbo.usp', 'P' ) IS NOT NULL

    --    DROP PROCEDURE dbo.usp;

    --GO

    alter PROCEDURE dbo.usp

        @FirstName nvarchar(50), //定义两个变量

        @LastName nvarchar(50)

    AS

        SET NOCOUNT ON;

        SELECT [departmentID]

          ,[departmentName]

          ,[departmentRemark]

        FROM [DemoDB2008].[dbo].[Departments]

        WHERE [departmentID] = @FirstName and [departmentRemark]=@LastName ;

    GO

    新建查询语句

    dbo.usp 5,df;//执行时必须两个变量

    EXEC dbo.usp @LastName=df,@FirstName = 5;

    新建存储过程和视图

    检测各Job是否正常运行,为各Job提供依据

    服务器名:222.85.28.1

    库名:MetaData_1

    表名:url_base      url_ext    url_content

    存储过程名:P_CheckJob

     

    创建存储过程:

    USE [MetaData_Win7]

    GO

    /****** Object:  StoredProcedure [dbo].[P_CheckJob]    Script Date: 12/01/2011 15:11:37 ******/

    SET ANSI_NULLS ON

    GO

    SET QUOTED_IDENTIFIER ON

    GO

     

    ALTER procedure [dbo].[P_CheckJob]

    @SS_Id smallint,

    @c nvarchar(20),

    @day datetime

    as

    declare @count int,@sn varchar(50)

    set @sn=@c+'_'+CONVERT(nvarchar(8),@day,112)+'%'

    set @count=0

    select @count=count(*) from url_base with(nolock) where SS_Id=@SS_Id and SN like @sn

    print 'Base条数:'+cast(@count as varchar)

    select @count=count(*) from Url_Ext with(nolock) where  sn in (select SN from url_base with(nolock) where SS_Id=@SS_Id and SN like @sn)

    print 'Ext条数:'+cast(@count as varchar)

    select @count=count(*) from Url_Content with(nolock) where sn in (select SN from url_base with(nolock) where SS_Id=@SS_Id and SN like @sn)

    print 'Content条数:'+cast(@count as varchar)

    print '--------------'

    示例:创建存储过程后执行下面语句

    exec dbo.[P_CheckJob] 12,'**','20110914'          -------------------soso

    exec dbo.[P_CheckJob] 17,'**','20110914'      ------------------qihoo

    exec dbo.[P_CheckJob] 7,'**','20110914'            ------------------  baidunews

    exec dbo.[P_CheckJob] 2,'**','20110914'           -----------------------baidu

    exec dbo.[P_CheckJob] 20,'**','20110914'                  -----------------------google

    结果示例:

    Base条数:55

    Ext条数:55

    Content条数:55

    --------------

    Base条数:7

    Ext条数:7

    Content条数:7

    --------------

    Base条数:1758

    Ext条数:1758

    Content条数:1758

    --------------

    Base条数:4881

    Ext条数:4881

    Content条数:3391

    --------------

    Base条数:6153

    Ext条数:6153

    Content条数:6153

    --------------

    检测数据传输是否有问题(检测)

    服务器名:2.85.28.1

    库名:MetaData_1

    视图:ViewContentAndExt

    创建视图:

    USE [MetaData_1]

    GO

     

    /****** Object:  View [dbo].[ViewContentAndExt]    Script Date: 12/01/2011 15:19:54 ******/

    SET ANSI_NULLS ON

    GO

     

    SET QUOTED_IDENTIFIER ON

    GO

     

    create view [dbo].[ViewContentAndExt]

    as

    select Url_Ext.SN,Url_Ext.Page_Title,R_Id,Url,Author,Category_Value,Page_Desc,Page_DT,Page_Source,View_Count,Reply_Count,Same_Count,Page_Rank,Ext_1,Ext_2,Status_1,Status_2,Url_Content.Html_Source

    from Url_Content with(nolock) inner join Url_Ext with(nolock) on Url_Content.SN=Url_Ext.SN

    GO

    创建存储过程:CREATE是创建, ALTER是执行

    USE [MetaData_1]

    GO

    /****** Object:  StoredProcedure [dbo].[procDayStatistics]    Script Date: 12/01/2011 15:17:53 ******/

    SET ANSI_NULLS ON

    GO

    SET QUOTED_IDENTIFIER ON

    GO

    ALTER proc [dbo].[procDayStatistics] (@C nvarchar(30), @start datetime,@end datetime)

    as

    declare @sql nvarchar(4000),@append nvarchar(200),@colname nvarchar(8)

    set @sql='select '

    while(@start<@end)

    begin

    set @colname=CONVERT(nvarchar(8),@start,112)

    set @append=@C+'_'+ @colname+'%'

    set @sql=@sql+'count(case when sn like '''+@append+''' then sn end) as '''+@colname+''','

    select @start=DATEADD(day,1,@start)

    end

    set @colname=CONVERT(nvarchar(8),@start,112)

    set @append=@C+'_'+ @colname+'%'

    set @sql=@sql+'count(case when sn like '''+@append+''' then sn end) as '''+@colname+''' from ViewContentAndExt with(nolock)'

    print @sql

    exec(@sql)

     

    存储过程创建完成后执行:

    exec procDayStatistics '佳通','20110909','20110915'

    exec [192.111.0.16].Giti_VoC.dbo.procDayStatistics '佳通','20110909','20110915'

    exec dbo.procDayStatistics 'IE9','20111128','20111201'

    exec IE9_VOC.dbo.procDayStatistics 'IE9','20111128','20111201'

    结果示例:

    复制表结构

     1,右击数据表->编写表脚本为(S)->CREATE到(C)->剪贴板

     2,右击目标数据库->新建查询(Q),粘贴复制到的表结构->不要忘记修改数据库名称

  • 相关阅读:
    麻省理工18年春软件构造课程阅读13“调试”
    麻省理工18年春软件构造课程阅读15“相等”
    麻省理工18年春软件构造课程阅读12“接口与枚举”
    麻省理工18年春软件构造课程阅读11“抽象函数与表示不变量”
    麻省理工18年春软件构造课程阅读10“抽象数据类型”
    麻省理工18年春软件构造课程阅读09“避免调试”
    麻省理工18年春软件构造课程阅读08“可变性与不变性”
    麻省理工18年春软件构造课程阅读07“设计规格说明”
    麻省理工18年春软件构造课程阅读06“规格说明”
    麻省理工18年春软件构造课程阅读05“版本控制”
  • 原文地址:https://www.cnblogs.com/xjt927/p/2325853.html
Copyright © 2020-2023  润新知