6.3 SQL Server删除数据

SQL Server DELETE

SQL Server DELETE语句简介

要从表中完全删除一行或多行,可以使用DELETE语句。语法:

DELETE [ TOP ( expression ) [ PERCENT ] ]  
FROM table_name
[WHERE search_condition];

首先在FROM子句中指定要删除数据的表。
如下将会删除target_table表中所有数据:

DELETE FROM target_table;

其次,要指定将被删除的随机行的数量或百分比,可以使用TOP子句。
移除随机10条数据:

DELETE TOP 10 FROM target_table;  

由于该表按未指定的顺序存储其行,因此我们不知道将删除哪些行,但我们可以确定将删除的行数为10。
删除百分之10:

DELETE TOP 10 PERCENT FROM target_table;

实际上几乎不会删除所有行,而只是删除一行或者几行,这种情况下,需要通过WHERE子句指定条件。

SQL Server DELETE语句示例

假设有一张名为products的表。
以下DELETE语句从products表中删除21个随机行:

DELETE TOP (21)
FROM products;

随机删除百分之5的行:

DELETE TOP (5) PERCENT
FROM products;

删除满足条件的行:
假设存在UserInfo(用户信息)表

-- 删除用户表中的数据
delete from Userinfo
select * from UserInfo -- 查询用户表
-- 删除张三,李四两位用户
Delete from UserInfo where UserName='张三' or UserName= '李四'
-- in:在...里面
delete from UserInfo where UserName in('张三','李四')
-- 删除用户编号为:4,5,6 并且 性别 =3 的用户信息
delete from UserInfo where Id in('4','5','6') and Sex='3'
或者
delete from UserInfo where Id in(4,5,6) and Sex=3

注意:什么情况下,一定需要加引号?

  • 字符串,一定需要加引号,还有日期,时间,中文
  • 数字:可加可不加, 建议不要加

删除所有行:

DELETE FROM  products;

TRUNCATE

示例

TRUNCATE TABLE products;

TRUNCATE与DELETE的区别

  • truncate是真正意义上的清空,不能加任何查询条件,自增id会重置
  • delete只是删除数据,如果Id是自增,则自增种子不会从头开始。

请注意,如果要从大表中删除所有行,则应使用TRUNCATE TABLE语句,该语句速度更快、效率更高。

posted @ 2022-08-18 09:37  平元兄  阅读(1764)  评论(1编辑  收藏  举报