知识大全 从子表里删除数据

Posted 表格

篇首语:只有承担起旅途风雨,才能最终守得住彩虹满天。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 从子表里删除数据相关的知识,希望对你有一定的参考价值。

跟我学SQL:从子表里删除数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在这篇文章里我要描述一下如何从表格里删除列 要删除的这些列同时还要依赖于其他表格的标准 要解决这个问题就需要一个很聪明而且完全遵守SQL 子查询声明的应用程序   我必须提醒读者的是 尽管查询可能会遵守SQL的标准 但是众多的数据库生产商会以不同的句法支持实现SQL 以下这个解决方案应该适合于大多数数据库 但是 如果你的结果有出入 就还是应该查看一下文档 同时 由于这个查询要处理DELETE声明 所以你应该在将其应用于真实的生产环境以前在实验数据上进行测试     需要更多的背景信息?   查看这些文章就能快速上路   《SQL基础I查数据查询》涉及到了DELETE查询的使用   《使用SQL子选项来合并查询》说明子选项查询能够减少对数据库请求的数量 并提供了例子   《SQL基础 查询多个表》提供了更多关于子选项的信息 还讲到了使用单个查询就能访问多个表格的多种其他方法     宠物店的例子  要解释如何进行这种类型的列删除 我会使用如下这个数据库的表格 该数据库叫做PetStore 并包含有清单(inventory)信息 在叫做 品种(breed) 的表A里 我存储有每种动物的信息和宠物店库存的信息 在叫做 清单 的表B里 包含有商店里特定动物的信息     在这个例子里 我们先假设商店把整窝Shitzu小狗都卖完了 我可以使用breed表格里的breed_id字段来删除Shitzu清单里的所有项目 就像这样     DELETE FROM inventory WHERE breed_id IN  (SELECT breed_id FROM breed WHERE breed_name = Shitzu );    首先 我要指定需要删除记录的表格 在这里是清单表格 然后再将识别字段breed_id同子选项子句的结果反复比对 我知道要找的是Shitzus 所以就能直接删掉他们 而不用再在单独的请求里查询breed_id     我必须要警告你的是 以这种方式使用DELETE声明是危险的 只有在你对数据库的结构很熟悉的情况下才能使用这些声明 DELETE查询会从受影响的表格里删除掉全部列 你应该知道这对你所管理著的数据意味着什么 有个好办法是使用SELETE *这个短语替代DELETE关键字来对DELETE声明的子查询结果进行测试 这样就能保证结果里含有你要删除的所有东西 就像这样     SELECT * FROM inventory WHERE breed_id IN  (SELECT breed_id FROM breed WHERE breed_name = Shitzu );    DELETE和JOIN联用  有人问到了解决这个问题另一个可能的办法 把JOIN子句和DELETE声明联合使用 由于以前没有使用过这种方法 我就研究了一下 发现SQL Server的文档声明支持这个方法 尽管它不符合SQL 在经过测试和询问各种数据库平台的老手之后 我发现把DELETE和JOIN声明联合使用在我测试过的任何平台上都行不通     从多个表格里一次删除  以上的解决方案还没有解释如何使用父表从多个子表里删除信息 但是SQL 规范里没有提供完成这项任务的标准解决方案     DELETE的声明不能把多个表格作为一个参数接受 作为一个具有破坏性的查询 这能保证在命令要被执行的地方不会出现歧义 此外 这个限制防止了在单个声明内将AND和多个子查询联用 如果测试SELECT声明的结果用以检查DELETE查询将要影响到的是哪些数据 你会发现SELECT会返回多个表格的清单 DELETE不会影响到的多个子查询不在其中     有很多可能的方法能够满足你的需求 例如在表格里创建一个字段 用以指明该项目是否为活动的 或者 你可以使用一些数据库里的预存程序在每个所需的DELETE查询里迭代 cha138/Article/program/SQLServer/201311/22191

相关参考

知识大全 asp 删除数据库记录

  asp教程删除数据库教程记录其实在asp中是很非常容易做的事情了只要连接数据库了再利用sqldelete函数来删除就ok了下面来看看实例吧  id=saferequest("id")sql="de

知识大全 联合删除两张表的数据

  大家都知道DELETE后面不能跟多张表但有时删除数据时要同时维护多张表的数据这怎么办呢?  假设AB两张表它们通过ID进行关联A表中有时间字段而B表中没有现根据时间段删除数据  SQL  以下是引

知识大全 Oracle数据库重复数据删除的三种情况

Oracle数据库重复数据删除的三种情况  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在对数据

知识大全 保存数据当ADO循环删除数据时需要注意的问题

保存数据当ADO循环删除数据时需要注意的问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs

知识大全 教你删除Oracle数据库中重复没用的数据

教你删除Oracle数据库中重复没用的数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在对数

知识大全 删除数据-DELETE语句(1)

SQL实战新手入门:删除数据-DELETE语句(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 删除数据-DELETE语句(2)

SQL实战新手入门:删除数据-DELETE语句(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 ORACLE删除数据文件后无法启动

ORACLE删除数据文件后无法启动  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  查看数据库的状

知识大全 如何删除excel表中的重复数据

如何删除excel表中的重复数据?要具体的数据---筛选---高级筛选----列表区域(选择你要选择的区域)----复制到(选择你要选择的区域)---勾画下面【选择不重复记录】----确定在ORACL

知识大全 Oracle中如何删除重复数据

Oracle中如何删除重复数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我们可能会出现这种