zoukankan      html  css  js  c++  java
  • 数据库系列知识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)
    复制代码

     

  • 相关阅读:
    sql语句技巧
    逻辑查询处理的步骤
    left join 和 left outer join的区别
    SQL 笛卡尔积
    SQL 分类
    显示数据库中的表
    数据库备份 恢复
    增删主键及修改表名
    Securing Data笔记
    System Monitoring之"文件系统"
  • 原文地址:https://www.cnblogs.com/llhhll/p/3407589.html
Copyright © 2011-2022 走看看