Sql server (我计划删除哪些记录,以确保联接按我认为的方式工作)
运行此代码时,首先运行select以确保其正确性,然后注释掉select行并取消注释删除或更新部分。通过这种方式,您不会在检查之前意外运行删除或更新。此外,还可以避免忘记注释掉select导致更新更新数据库表中的所有记录的问题,如果使用此语法并取消select的注释以运行它,则可能会发生这种情况:Sql server (我计划删除哪些记录,以确保联接按我认为的方式工作),sql-server,tsql,optimization,keyboard-shortcuts,Sql Server,Tsql,Optimization,Keyboard Shortcuts,运行此代码时,首先运行select以确保其正确性,然后注释掉select行并取消注释删除或更新部分。通过这种方式,您不会在检查之前意外运行删除或更新。此外,还可以避免忘记注释掉select导致更新更新数据库表中的所有记录的问题,如果使用此语法并取消select的注释以运行它,则可能会发生这种情况: select t1.field1,t2.field2 update t set field1 = t2.field2 --select t1.field1,t2.field2 from mytab
select t1.field1,t2.field2
update t
set field1 = t2.field2
--select t1.field1,t2.field2
from mytable t1
join myothertable t2 on t1.idfield =t2.idfield
where t2.field1 >10
从上面的示例中可以看到,如果取消对select的注释而忘记对其重新注释,那么您只需更新整个表,然后在您认为只需运行更新时运行select。本周有人在我的办公室里这样做,这样所有客户中只有一个人可以登录到客户网站。因此,请避免这样做。社区拥有的wiki答案-请随意编辑或添加评论: 键盘快捷键
- F5、CTRL+E或ALT+X-执行当前选定的TSQL代码
- CTRL+R–显示/隐藏结果窗格
- CTRL+N–打开新的查询窗口
- CTRL+L–显示查询执行计划
- CTRL+K+C和CTRL+K+U-注释/取消注释选定的代码块(由未经许可的用户建议)
- CTRL+SHIFT+U和CTRL+SHIFT+L-将所选文本更改为大写/小写
- SHIFT+ALT+选择文本-选择/剪切/复制/粘贴矩形文本块
- -智能感知(Galwegian建议)
- -TSQL的格式(由Galwegian建议)
- -开源格式外接程序
- 使用逗号前缀样式(由Cade Roux建议)
- 使用键盘加速器(kcrumley建议)
SELECT
t.a
,t.b
,t.c
,t.d
FROM t
它使编辑选择列表、参数列表、按顺序列表、按组列表等变得非常容易。我发现,在剪切和粘贴操作后,我花更少的时间在列表末尾添加和删除逗号-我想这会更容易,因为您几乎总是在末尾添加内容,并使用后缀逗号,这需要您进一步移动光标
试试看,你会惊讶的——我知道我是。键盘加速器。一旦你弄清楚你经常写什么样的查询,就可以编写实用程序存储过程来自动完成任务,并将它们映射到键盘快捷键。例如,讨论了如何避免每次只想快速查看某个表中的示例数据时键入“selecttop10*fromsomebigtable”。我得到了这个过程的一个扩展版本,映射到CTRL+5。
我还有一些:
。。。还有一些现在还没想到的。其中一些事情可以通过SSMS中现有的接口来完成,但是SSMS的窗口和小部件的加载速度可能会有点慢,特别是当您在互联网上查询服务器时,我更喜欢不用把手从键盘上拿下来。F5运行当前查询是一个轻松的胜利,之后,通用MS编辑器命令CTRL+K+C注释掉所选文本,然后CTRL+K+U取消注释 突出显示查询中的实体并按ALT+F1将运行sp_帮助,为您提供任何列、索引、参数等的详细信息。我强烈推荐RedGate的SQL提示符。自动发现(表、存储过程、函数和本机函数上的intellisense)简直太棒了 不过这是有代价的。这个东西没有免费软件版本。用于子查询 对象资源管理器>在表上单击鼠标右键>将表作为脚本>选择到>剪贴板 然后,您可以将其粘贴到您想要的部分作为子查询 模板/代码片段 仅使用代码片段创建自己的模板。然后将模板作为新文档打开,只需将其拖动到当前查询以插入代码段 代码段可以是一组带有注释的标题,也可以是一段简单的代码 隐式交易 如果您不记得在删除状态之前启动事务,您可以转到选项并在所有查询中默认设置隐式事务。它们始终需要显式提交/回滚 隔离水平 转到“选项”并将隔离级别设置为默认为“读取未限制”。这样,您就不需要在所有临时查询中键入NOLOCK。在编写新视图或存储过程时,不要忘记放置表提示 默认数据库 您的登录名有一个由DBA设置的默认数据库(对我来说,通常几乎每次都是不需要的数据库) 如果您希望它是一个不同的一个,因为你目前正在进行的项目 在“已注册服务器”窗格中,右键单击>属性>连接属性选项卡>连接到数据库 多重
SELECT
t.a
,t.b
,t.c
,t.d
FROM t
CREATE PROC upsert_Table1(@col1 int, @col2 varchar(200), @col3 float, etc.)
AS
BEGIN
UPDATE table1 SET col1 = @col1, col2 = @col2, col3 = @col3, etc.
IF @@error <> 0
INSERT Table1 (col1, col2, col3, etc.)
VALUES(@col1, @col2, @col3, etc.)
END
GO
CREATE PROC delete_Table1(@col1)
AS DELETE FROM Table1 WHERE col1 = @col1