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语句,该语句速度更快、效率更高。