• 数据库系列知识3


    2013年10月29日16:01:58

    当数据有 time类型列时候,比如 打电话的通话时长,我们查询时候不方便,我们可以添加一个冗余列,直接统计秒 ,但是 后期知道的,现在我把例如 00:12:23  的时间换成秒

    例如列  bridgeDuration是时长,我们换成秒,存到这里bridgeDurationInt

    UPDATE dbo.PhoneRecords SET bridgeDurationInt=(CAST(LEFT(bridgeDuration,2) AS int)*3600)+(CAST(RIGHT(LEFT(bridgeDuration,5),2) AS int)*60)+CAST(RIGHT(LEFT(bridgeDuration,8),2)  AS int)

     

     

    2013年9月24日16:47:55

    跨服务器查询,需要先添加服务器链接

    下面的ip地址可以换掉
    EXEC sp_droplinkedsrvlogin '192.168.10.150',NULL
    EXEC sp_dropserver '192.168.10.150'

    EXEC sp_addlinkedserver '192.168.10.150', ' ', 'SQLOLEDB', "10.50.1790.0"
    EXEC sp_addlinkedsrvlogin '192.168.10.150', 'false',null, 'it', 'its123'

     

     

    2013年9月16日9:58:40 增加

    查看sql server中对象的数量:
    表有多少个
    select count(1) from sysobjects where xtype='U'
    视图:
    select count(1) from sysobjects where xtype='V'
    存储过程
    select count(1) from sysobjects where xtype='P'

     

    我自己写了个小例子,做发布和订阅的时候,对比两个数据库中的表,同名字的给选择出来

    select * from 数据库1.dbo.sysobjects as crm
    inner join 数据库2.dbo.sysobjects as cpp
    on crm.name = cpp.name
    where crm.xtype='U'  and cpp.xtype='U' 

     

     

     

     

     

     

     

     

     

     

     

     

     

    1.给某张表增加列

    例如

      alter table dbo.表名称
        add EmployeeName nvarchar(50) default '' not null, 
            EmployeeId    int default 0 not null

     

     

    2.复制出新表

    SELECT * INTO 新表 FROM 旧表

     当然  新表==  库名.架构名.表名称,旧表也是

    就可以实现 跨库复制表过来

     

    3.查看某张表中所有的列名称

    select Name from SysColumns  where id=Object_id('表名称') 

     

     

    4. 求某两列的百分比,分母可能为0的情况

    select conv=case when
    字段=0 then 0
    else
    1/cast(字段 as numeric(5,2))
    end
    from 表 where 其他条件

     

     

     

    5. 查出的结果,再添加一个自动增长列(排序列)

    假如取个临时表的名字叫#tempT

    select identity(int,1,1) as id,* into #tempT from (另一个select结果集,或者表名称)

     

    删除临时表

    if object_id('tempdb..#tempT') is not null 
    Begin
    drop table #tempT
    End

     

     

     

    6.数据库角色  权限说明

    db_owner 执行数据库中的所有维护和配置活动。 
    db_accessadmin 添加或删除 Windows 用户、组和 SQL Server 登录的访问权限。 
    db_datareader 读取所有用户表中的所有数据。 
    db_datawriter 添加、删除或更改所有用户表中的数据。 
    db_ddladmin 在数据库中运行任何数据定义语言 (DDL) 命令。 
    db_securityadmin 修改角色成员身份并管理权限。 
    db_backupoperator 备份数据库。 
    db_denydatareader 无法读取数据库用户表中的任何数据。 
    db_denydatawriter 无法添加、修改或删除任何用户表或视图中的数据。

     

    7.修改 sa用户的密码

    exec sp_password null,'000','sa' 

     

    8.SQLServer  Update多条件多表关联更新

    复制代码
    update Customer set employeeid=0,employeeName='' where Id in(14775,14776,14778)
    select employeeid,employeeName from dbo.Customer  as c where c.Id in(14775,14776,14778)
    update 
    A 
    set A.EmployeeId=B.EmployeeId,A.EmployeeName=B.EmployeeName from 
    (SELECT *  FROM dbo.Customer ) A
    inner join 
    (SELECT * FROM Contact as bb WHERE bb.CustomerId in(14775,14776,14778))B 
    on A.Id=B.CustomerId
    
    select employeeid,employeeName from dbo.Contact  as c where c.CustomerId in(14775,14776,14778)
    select employeeid,employeeName from dbo.Customer  as c where c.Id in(14775,14776,14778)
    复制代码

     

  • 相关阅读:
    1442. Count Triplets That Can Form Two Arrays of Equal XOR
    1441. Build an Array With Stack Operations
    312. Burst Balloons
    367. Valid Perfect Square
    307. Range Sum Query
    1232. Check If It Is a Straight Line
    993. Cousins in Binary Tree
    1436. Destination City
    476. Number Complement
    383. Ransom Note
  • 原文地址:https://www.cnblogs.com/llhhll/p/3407589.html
Copyright © 2020-2023  润新知