博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlserver不太常见的,可能常见但又疑问的tsql语句
阅读量:5790 次
发布时间:2019-06-18

本文共 2735 字,大约阅读时间需要 9 分钟。

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 crminner join 数据库2.dbo.sysobjects as cppon crm.name = cpp.namewhere 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 ) Ainner join (SELECT * FROM Contact as bb WHERE bb.CustomerId in(14775,14776,14778))B on A.Id=B.CustomerIdselect 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)

 9.mysql写法

UPDATE `visitlegalizelog`,`visituser` SET visitlegalizelog.Tel = visituser.Tel WHERE visitlegalizelog.PhoneMac = visituser.PhoneMac

  

转载于:https://www.cnblogs.com/AaronYang/p/3186682.html

你可能感兴趣的文章
Java判断是否为垃圾_Java GC如何判断对象是否为垃圾
查看>>
多项式前k项和java_多项式朴素贝叶斯softmax改变
查看>>
oracle体系结构
查看>>
XP 安装ORACLE
查看>>
八、 vSphere 6.7 U1(八):分布式交换机配置(vMotion迁移网段)
查看>>
我的友情链接
查看>>
JS中比较数字大小
查看>>
jQuery插件的开发
查看>>
基础,基础,还是基础之JAVA基础
查看>>
JS prototype 属性
查看>>
HTTP库Axios
查看>>
gen already exists but is not a source folder. Convert to a source folder or rename it 的解决办法...
查看>>
20个Linux服务器性能调优技巧
查看>>
填坑记:Uncaught RangeError: Maximum call stack size exceeded
查看>>
SpringCloud之消息总线(Spring Cloud Bus)(八)
查看>>
【348天】每日项目总结系列086(2018.01.19)
查看>>
【294天】我爱刷题系列053(2017.11.26)
查看>>
可替换元素和非可替换元素
查看>>
2016/08/25 The Secret Assumption of Agile
查看>>
(Portal 开发读书笔记)Portlet间交互-PortletSession
查看>>