视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
sqlserver不太常见的,可能常见但又疑问的tsql语句
2020-11-09 07:59:42 责编:小采
文档


2013年10月29日16:01:58 当数据有 time类型列时候,比如 打电话的通话时长,我们查询时候不方便,我们可以添加一个冗余列,直接统计秒 ,但是 后期知道的,现在我把例如 00:12:23 的时间换成秒 例如列 bridgeDuration是时长,我们换成秒,存到这里bridgeDura

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)

9.mysql写法

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

  

下载本文
显示全文
专题