SQL语句中删除表数据drop、truncate和delete的用法

一、SQL中的语法

   1、drop table 表名称                         eg: drop table  dbo.Sys_Test
   2、truncate table 表名称                     eg: truncate  table dbo.Sys_Test                  
   3、delete from 表名称 where 列名称 = 值      eg: delete from dbo.Sys_Test where test='test'

二、drop,truncate,delete区别

    1、drop (删除表):删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表。

       drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger)索引(index);依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid。

    2、truncate (清空表中的数据):删除内容、释放空间但不删除定义(保留表的数据结构)。与drop不同的是,只是清空表数据而已。

       注意:truncate 不能删除行数据,要删就要把表清空。

    3、delete (删除表中的数据):delete 语句用于删除表中的行。delete语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存

       以便进行进行回滚操作。

       truncate与不带where的delete :只删除数据,而不删除表的结构(定义)

    4、truncate table 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用delete。

       如果要删除表定义及其数据,请使用 drop table 语句。  
    5、对于由foreign key约束引用的表,不能使用truncate table ,而应使用不带where子句的delete语句。由于truncate table 记录在日志中,所以它不能激活触发器。

    6、执行速度,一般来说: drop> truncate > delete。

    7、delete语句是数据库操作语言(dml),这个操作会放到 rollback segement 中,事务提交之后才生效;如果有相应的 trigger,执行的时候将被触发。

             truncate、drop 是数据库定义语言(ddl),操作立即生效,原数据不放到 rollback segment 中,不能回滚,操作不触发 trigger。 

### DELETE 语句 DELETE 语句用于删除中的行。可以通过 WHERE 子句来进行条件删除,精准删除某条记录。执行删除的过程是每次从删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行回滚操作,可 rollback(撤销事务),用其删除残留会比 DROP 多,且不会删除结构名。语法如下: ```sql DELETE FROM 名 (WHERE 条件) ; ``` 例如,要从名为 `customers` 的删除 `customer_id` 为 1 的记录: ```sql DELETE FROM customers WHERE customer_id = 1; ``` ### DROP 语句 DROP 语句可用于删除数据数据库,或删除数据字段。 - **删除数据库**: ```sql drop database 数据库名称 ``` 例如,删除名为 `test_db` 的数据库: ```sql DROP DATABASE test_db; ``` - **删除数据**:的结构、属性、索引也会被删除。 ```sql use 数据库名称 drop table 数据1名称,数据2名称 ``` 例如,在名为 `my_db` 的数据库中删除 `orders` : ```sql USE my_db; DROP TABLE orders; ``` - **删除数据字段(列)**: ```sql use 数据库名称 alter table 数据名称 drop column 字段名(列名称) ``` 例如,在 `products` 删除 `description` 列: ```sql USE my_db; ALTER TABLE products DROP COLUMN description; ``` ### TRUNCATE 语句 TRUNCATE 与不带 WHERE 的 DELETE 类似,只删除数据,而不删除的结构(定义)。但它比 DELETE 操作更快,因为它是一次性删除所有数据且不写事务日志,不能回滚。 ```sql TRUNCATE TABLE 名; ``` 例如,清空 `employees` 数据: ```sql TRUNCATE TABLE employees; ``` ### REMOVE 语句 在标准 SQL 中并没有 REMOVE 语句用于数据或对象的删除操作。不过,在某些数据库管理系统(如 PostgreSQL 中的 `UNLOGGED` )或特定的应用场景里可能会有自定义的 `REMOVE` 操作,但这不是标准 SQL 的一部分,不同系统的实现功能会有差异。 ### CLEAR 语句 在标准 SQL 里也没有 CLEAR 语句用于数据或对象的删除操作。在一些数据库客户端工具或者特定的编程环境中,`CLEAR` 可能会有清除缓冲区、屏幕输出等其他用途,并非标准的 SQL 数据删除语句
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值