0
点赞
收藏
分享

微信扫一扫

SqlServer数据库日常操作手册


添加字段

alter table PM_ChangeColor add Status nvarchar(50) default '申请中';

修改字段类型

Alter table PM_AfterDyePlan Alter column BlowingRate nvarchar(50)

删除字段

alter table PM_DyePlan drop column SolidWashingMethod

添加索引

CREATE NONCLUSTERED INDEX [index_PM_ChangeColor_Status] ON PM_ChangeColor
(
[Status] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

唯一索引

CREATE UNIQUE NONCLUSTERED INDEX [UQ_PM_ChangeColor_Status] ON PM_ChangeColor
(
[Status]
) ON [PRIMARY]

联合主键

--先设置非空约束
Alter table PM_BatchNoColorNoRemark alter column sMaterialLot nvarchar(50) not null
Alter table PM_BatchNoColorNoRemark alter column utmColorGUID uniqueidentifier not null
--增加主键
Alter table PM_BatchNoColorNoRemark add constraint pk_PM_BatchNoColorNoRemark primary key(sMaterialLot, utmColorGUID)

分组排名

select A.upbWorkingProcedureGUID,A.CreateDate,RANK() over(partition by A.upbWorkingProcedureGUID order by A.CreateDate) SortCode from PM_WorkPlanLog A

分组排序

select A.upbWorkingProcedureGUID,A.CreateDate,row_number() over(partition by A.upbWorkingProcedureGUID order by A.CreateDate) SortCode from PM_WorkPlanLog A

存储过程事务代码块

BEGIN TRY---------------------开始捕捉异常
BEGIN TRAN------------------开始事务
--程序逻辑
COMMIT TRAN -------提交事务
END TRY-----------结束捕捉异常
BEGIN CATCH------------有异常被捕获
IF @@TRANCOUNT > 0---------------判断有没有事务
BEGIN
ROLLBACK TRAN----------回滚事务
END
-----------执行存储过程将错误信息记录在表当中
END CATCH--------结束异常处理

跨库查询(优化版)

通过连接服务器跨库动态查询并插入临时表(提高效率),跨库查询直接拼接没有走索引,所以使用动态拼接sql让其走索引提升效率

DECLARE @V_Sql varchar(max) = ''

select A.*
into #result
from
(
select '001' as Id
union all
select '002' as Id
)A

select @V_Sql = 'select A.Id,A.Name from [127.0.01].[DB_NAME].[dbo].User A
where A.Id in (' + SUBSTRING(A.whereIn,0,LEN(A.whereIn)) +')
' from
(
SELECT
(
SELECT ''''+ A1.Id +''',' FROM #result A1 WHERE 1=1 FOR XML PATH(''),TYPE
).value('.','NVARCHAR(MAX)') as whereIn
)A

create table #tmp_table
(
Id varchar(50),Name varchar(50)
)

insert into #tmp_table(Id,Name)
exec (''+ @V_Sql + '')

举报

相关推荐

0 条评论