SQL删除行语句-如何从带有示例查询的表中删除数据

2020年12月30日10:54:07 发表评论 32 次浏览

本文概述

对于在我的专业和个人项目中使用SQL有多喜欢, 我毫不犹豫。

它的直接性和简单性吸引了我希望在语言的语法方面拥有明确定义的界限, 这将使我"摆脱"语法。

SQL的结构简洁明了, 用户输入决定了返回的数据。因此, 我对在语法上有明确定义的界限的评论。

我在开发社区中庆祝了它的弹性(SQL于1974年创建, 1986年首次发布), 但我也知道, 在处理数据时, 即使基础知识也让人感到压力和恐惧。

我在这里(希望)对使用数据的那些基础知识之一有所了解:删除整行数据。

虽然我们不会为在SQL中建立表or用数据填充该表/更新该数据, 如果你想了解更多信息或只是需要复习, 我已经链接了其他文章。

好了, 现在有趣的部分-让我们开始从表中删除数据!

SQL删除行概述

这是表格, 恰当地命名Cute_Doggos, 我们将作为示例开始从以下位置删除数据:

名称 颜色 品种 年龄 重量 高度 最喜欢的食物 收藏玩具 不喜欢 过敏症
雏菊 标准腊肠犬 1年 14 6 鲑鱼粗磨 粘球 鸟儿飞过院子 猫, 浴室, 清洁
温斯顿 黑色/棕褐色 罗威纳犬 3岁 41 17 几乎任何东西 绳拖船 不在沙发上 倾听, 表现, 不流连忘返
萨米 淡蜂蜜 金毛寻回犬 9岁 46 19 牛肉粗磨 她的床 贪婪的小狗 没有人知道
佩内洛普 灰色和白色 沙哑 9个月 16 12 旧鞋 狗窝 没有人知道

你可能已经猜到了, 这是我凭空捏造的表中的虚构数据:)但是, 我希望它能很好地说明数据以达到我们的目的。

与大多数技术性方面一样, 检查官方文档也毫不费力。如果你希望这样做, Microsoft会提供一些深入的信息有关SQL Delete语句的信息.

本文的核心-删除数据。动作与名称本身一样简单, 这是基本语法:

删除自

表名

***使用这种语法, 你将删除整个表中的所有数据行。***

因此, 对于上面的示例表, 查询将如下所示:

从Cute_Doggos中删除

这可能是你的预期目的, 并且你编写SQL的时间越长, 就会发现使用此功能的delete语句的情况越多。

在填充测试数据后, 我已经多次使用此语句清除表。这种方法使我们可以保持列名, 数据类型, 索引和整体表结构不变, 而无需删除实际表。

附带说明一下, 如果你的预期目的是删除表中的所有行, 则更快的方法是使用截断表语句, 因为它使用的系统资源要少得多。

示例删除查询

在大多数情况下, 使用删除功能时, 你会希望你的方法更具针对性。为此, 我们将添加一个条件, 语法将如下所示:

删除自

表名

其中

条件存在

使用上面的dogs表, 我们的查询将如下所示:

从Cute_Doggos处删除dbo.Cute_Doggos.Height> 18

这将从我们的表中删除与我们的条件匹配的所有条目高度大于18。如果你使用的是Microsoft SQL Server管理器, 则将得到一个return语句, 如下所示:

(受影响的1行)

如果你想查看已删除的数据行(出于记录目的, 对用户的直观指示等), 我们可以使用OUTPUT 声明就是这样做的。

现在我们的表如下所示:

名称 颜色 品种 年龄 重量 高度 最喜欢的食物 收藏玩具 不喜欢 过敏症
雏菊 标准腊肠犬 1年 14 6 鲑鱼粗磨 粘球 鸟儿飞过院子 猫, 浴室, 清洁
温斯顿 黑色/棕褐色 罗威纳犬 3岁 41 17 几乎任何东西 绳拖船 不在沙发上 倾听, 表现, 不流连忘返
佩内洛普 灰色和白色 沙哑 9个月 16 12 旧鞋 狗窝 没有人知道

我们设置的条件完全是我们的选择, 如果对于你的需求而言这太窄了, 则还有其他选择。

假设你不在乎要删除的特定记录, 而只是在表中需要删除一定数量的记录。

从Cute_Doggos删除前2名

你可能会认为此查询将删除表中的前两个记录, 而且相距不远。唯一的问题是因为SQL以随机顺序存储记录, 所以此语法将删除2随机表中的记录。

如果你要删除一定比例的记录, SQL也可以这样做:

从Cute_Doggos中删除前25%

同样, 此查询将删除随机记录。在我们的示例中, 由于我们有4条记录, 因此该查询将删除1条随机记录(4 * 0.25 = 1)。

最后一点, 使用TOP时 关键字, 我们不能使用订购子句是由于记录存储的随机性。

包起来

现在你已经看到了DELETE 使用该语句, 你就可以大胆地从所有表中剔除所有数据!也许不这样做, 因为这将花费一个漫长的周末来恢复备份:)

无论如何, 现在你可以开始充分利用它了。

如果你觉得这篇文章有帮助, 请查看我的博客(我目前正在Gatsby / WordPress中对其进行重建, 因此请继续关注有关此的文章), 我经常发布有关Web开发, 生活和学习的文章。

当你在那里时, 为什么不注册我的时事通讯?你可以在博客主页面的右上角进行操作。我喜欢时不时地为开发人员发送有趣的文章(我的和其他文章), 资源和工具。

如果你对本文有疑问, 或者只是一般而言, 请告诉我-来打个招呼推特或你可以在新闻通讯下方找到的任何其他社交媒体帐户在我的博客主页上或在我的个人资料上的notlogy处注册:)

祝你有愉快的一天!快乐学习, 快乐编码, 朋友。

一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: