当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:22:00  来源:本站整理

跟我学MS SQL Server(7)[MSSQL防范]

赞助商链接



  本文“跟我学MS SQL Server(7)[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
  (七)从子表里删除数据
  在这篇文章里我要描写一下若何从表格里删除列,要删除的这些列同时还要依靠于其他表格的尺度.要办理这个问题就需求一个很聪明并且完好服从SQL92子查询声明的利用程序.
  我必须提醒读者的是,固然查询大概会服从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的文档声明支持这个办法,固然它不符合SQL92.在经过测试和询问各种数据库平台的熟行之后,我发现把DELETE和JOIN声明结合利用在我测试过的任何平台上都行不通.

  从多个表格里一次删除
  以上的办理筹划还没有注释若何利用父表从多个子表里删除信息.但是SQL92标准里没有供应完成这项任务的尺度办理筹划.
  DELETE的声明不能把多个表格作为一个参数承受.作为一个具有破坏性的查询,这能保证在号令要被履行的地方不会呈现歧义.此外,这个限制避免了在单个声明内将AND和多个子查询联用.假如测试SELECT声明的后果用以查抄DELETE查询将要影响到的是哪些数据,你会发现SELECT会返回多个表格的清单,DELETE不会影响到的多个子查询不在此中.
  有很多大概的办法可以满意你的需求,比方在表格里成立一个字段,用以指明该项目能否为活动的.大概,你可以利用一些数据库里的预存程序在每个所需的DELETE查询里迭代
  以上是“跟我学MS SQL Server(7)[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 跟我学MS SQL Server(1)
  • 跟我学MS SQL Server(2)
  • 跟我学MS SQL Server(3)
  • 跟我学MS SQL Server(4)
  • 跟我学MS SQL Server(5)
  • <b>跟我学MS SQL Server(6)</b>
  • 跟我学MS SQL Server(7)
  • 跟我学MS SQL Server(9)
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .