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

SQL Server数据库技术(63)[MSSQL防范]

赞助商链接



  本文“SQL Server数据库技术(63)[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

11.2.1 DELETE 语法
DELETE 语句用来从表中删除数据,其语法为:





各参数阐明以下:

  • FROM
    此参数为可选选项,用于衔接DELETE 关键字和要删除数据的对象名称.
  • table_name
    指定要删除数据的表.
  • WITH ( [...n])
    指定一个或多个目标表答应的表提醒.
  • view_name
    指定用于删除数据的视图.
  • rowset_function_limited
    行调集函数限制,即便用OPENQUERY() 或OPENROWSET() 函数.
  • FROM
    指定一个额外的FROM 子句.这是DELETE 号令在Transact-SQL 语言中的扩大,它答应同时删除多个表中的数据.其所含的参数包含join_table、 join_type 等,与第10 章"数据查询"中FROM 子句中所讲的一致.
  • WHERE
    指定限制数据删除的条件.假如不指定WHERE 子句,就会删除表中的全部数据.在 WHERE 子句中指定两种情势的删除操作.一种是搜索删,除即便用搜索条件来限定要删除的数据行:另一种是定位删除,即便用CURRENT OF 子句来指定一个游标,删除操作会在游标的当前位置产生.定位删除比搜索删除更切确.
  • GLOBAL
    阐明要利用的游标是全局游标.假如不利用此选项,而又存在一个全局游标和一个部分游标同名的情形时,系统认为所挑选的游标是部分游标.
  • cursor_name
    指定翻开的游标名称.此游标必须是答应更新的.
  • cursor_variable_name
    指定游标变量的名称.此游标变量必须是答应更新的.
  • OPTION ( [,...n] )
    请拜见第10 章"数据查询"中OPTION 子句中所报告的参数.
  • table_hint
    表提醒用于指定一个表的扫描筹划,行将要用于查询优化器的一个或多个索引,或一个用于检索数据的锁定办法.此选项普通来说没必要利用,查询优化器会自动挑选一个最优的履行筹划.各表提醒之间应利用逗号离隔.
  • INDEX(index_val [,...n])
    指定索引提醒,即当履行号令时由sql server 利用的索引的名称或ID 号.每个表只能指定一个索引提醒.在表提醒中最多可以指定250 非簇索引.
  • FASTFIRSTROW
    等价于OPTION (FAST 1) ,即对第一行返回数据采取查询优化.
  • HOLDLOCK
    普通情形下,当履行SELECT 号令时,SQL Server 会在选取数据的历程中对该数据所属的数据页设定一个同享锁(Shared Lock, 关于锁的介绍请拜见本章后部份).当SQL Server 读到下一个数据页的数据时,上一个数据页的同享锁就会被解除.但假如利用了 HOLDLOCK 选项,则在整个SELECT 号令履行的历程中设定的同享锁会一向存在.此选项不能在带FOR BROWSE 子句的SELECT 语句中利用.此选项等价于SERIALIZABLE 选项.
  • NOLOCK
    普通情形下,当履行SELECT 号令时,SQL Server 会在选取数据的历程中对该数据所属的数据页设定一个同享锁(Shared Lock, 关于锁的介绍请拜见本章后部份).但假如利用了NOLOCK 选项,则SQL Server 不会指定同享锁,并且不管别的用户能否正在更改所读取的数据,SELECT 号令仍旧可以读取数据.因此,利用此选项大概会读取到别的用户还没有提交的数据.此选项等价于READUNCOMMITTED 选项.
  • PAGLOCK
    指定在SELECT 号令履行时利用对数据页做同享锁.这是SQL Server 的内定方法.
  • READCOMMITTED
    指定数据扫描履行时利用与运行在READ COMMITTED 孤独级上的事件相同的锁语义.即SELECT 号令不会返回还没有提交的数据.
  • READPAST
    跳过目前被锁定的行.此选项只用于在事件运行在READ COMMITTED 孤独级上的情形下.
  • READUNCOMMITTED
    此选项等价于NOLOCK 选项.
  • REPEATABLEREAD
    指定数据扫描履行时利用与运行在REPEATABLE READ 孤独级上的事件相同的锁语义.即用SELECT 号令读取的数据在整个号令履行历程中不会被更改.此选项会影响系统的效能,非必要情形最好不用此选项.
  • ROWLOCK
    指定利用同享的行数据锁,即便用行级别锁定.
  • SERIALIZABLE
    此选项等价于HOLDLOCK 选项.
  • TABLOCK
    指定用SELECT 号令读取数据时对所选取的表的全部数据做锁定,直到整个号令履行完毕.假如指定了HOLDLOCK 选项,则同享的表锁定会保持到事件完毕.
  • TABLOCKX
    指定用SELECT 号令读取数据时对所选取的表的全部数据做锁定,直到整个号令或事件履行完毕.
  • UPDLOCK
    指定在SELECT 号令履行时利用更新锁(Update Lock),而不利用同享锁,并且此更新锁将保持到号令履行完毕为止.
假如省略WHERE子句,则表示删除表中的全部数据,但表的定义仍在数据库中,也就是说,DELETE子句删除的是表中的数据,而不是关于表的定义. NOLOCK、READUNCOMMITIED或READPAST表提醒不能用于作为插入、删除或更新操作对象的表.

11.2.2 用DELETE 删除数据
(1) 删除一条记录
例11-5 删除编号为‘10031011 ’的员工记录
use pangu
delete from employee
where emp_id = ’10031011’
(2) 删除多条记录
例11-6 删除全部的部门信息记录
use pangu
delete from department_info /* 或利用 delete department_info */
这个例子删除了department_info 表中的全部数据使它成为空表
(3) 带子查询的删除语句
子查询一样可以嵌套在DELETE 语句中,用以构造履行删除操作的条件.
例11-7: 删除后勤部全部员工的记录.
use pangu
delete from employee
where dept_id =
(select dept_id
from department
where d_name = ’后勤部’)
例11-8 删除订货表前100 项记录中全部产品编号为1003002 的产品
use pangu
delete orders
from (select top 100 * from orders) as orders_ top100
where orders.p_id = orders_ top100.p_id

(4) 删除当前游标行数据
例11-9: 删除游标dinfo_cursor 所指定的数据行.
delete from department_info
where current of dinfo_cursor

11.2.3 TRUNCATE TABLE 命 令
假如要删除表中的全部数据,那么利用TRUNCATE TABLE 号令比用DELETE 号令快得多.因为DELETE 号令除了删除数据外,还会对所删除的数据在事件处理日记中作记录,以避免删除失利时可以利用事件处理日记来恢复数据;而TRUNCATE TABLE 则只做删除与表有关的全部数据页的操作.TRUNCATE TABLE 号令功效上相当于利用不带WHERE 子句的DELETE 号令.但是TRUNCATE TABLE 号令不能用于被别的表的外关键字依靠的表.
TRUNCATE TABLE 号令语法以下:
TRUNCATE TABLE table_name
注意:由于TRUNCATE TABLE号令不会对事件处理日记举行数据删除记录操作,因此不能激活触发器.
例11-10: 删除全部的部门信息记录.
use pangu
truncate table department_info
  以上是“SQL Server数据库技术(63)[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Windows 搭配 IIS7 PHP MySQL 环境
  • sqlserver索引的原理及索引成立的注意事项小结
  • SQL Join的一些总结(实例)
  • SQL的Join利用图解教程
  • SQL中JOIN和UNION辨别、用法及示例介绍
  • 关于SQL中CTE(公用表表达式)(Common Table Expression)的总结
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

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

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