精华内容
下载资源
问答
  • 数据库中drop、delete与truncate的区别 drop直接删掉表; truncate删除表中数据,再插入时自增长id又从1开始 ;delete删除表中数据,可以加where字句。 (1) DELETE语句执行删除的过程是每次从表中删除一行,并且...

    数据库中drop、delete与truncate的区别

    drop直接删掉表; truncate删除表中数据,再插入时自增长id又从1开始 ;delete删除表中数据,可以加where字句。

    (1) DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。

    (2) 表和索引所占空间。当表被TRUNCATE 后,这个表和索引所占用的空间会恢复到初始大小,而DELETE操作不会减少表或索引所占用的空间。drop语句将表所占用的空间全释放掉。

    (3) 一般而言,drop > truncate > delete

    (4) 应用范围。TRUNCATE 只能对TABLE;DELETE可以是table和view

    (5) TRUNCATE 和DELETE只删除数据,而DROP则删除整个表(结构和数据)。

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

    (7) delete语句为DML(data maintain Language),这个操作会被放到 rollback segment中,事务提交后才生效。如果有相应的 tigger,执行的时候将被触发。

    (8) truncate、drop是DLL(data define language),操作立即生效,原数据不放到 rollback segment中,不能回滚

    (9) 在没有备份情况下,谨慎使用 drop 与 truncate。要删除部分数据行采用delete且注意结合where来约束影响范围。回滚段要足够大。要删除表用drop;若想保留表而将表中数据删除,如果于事务无关,用truncate即可实现。如果和事务有关,或老师想触发trigger,还是用delete。

    (10) Truncate table 表名 速度快,而且效率高,因为:
    truncate table 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

    (11) TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。

    (12) 对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。

     

    转载于:https://www.cnblogs.com/zfc-java/p/7595322.html

    展开全文
  • 数据库中drop delete truncate 的区别

    千次阅读 2017-03-12 19:25:33
    当数据库的数据比较少时,delete 和truncate的性能并不明显,数据量比较大时,管理数据库中的表的部分数据需要注意使用不同的命令。 其中 Truncate 和 drop 都是DLL语句(Data Defined Language),delete语句是...

    转载 http://www.2cto.com/database/201504/390838.html

    当数据库的数据比较少时,delete 和truncate的性能并不明显,在数据量比较大时,管理数据库中的表的部分数据需要注意使用不同的命令。

    其中 Truncate 和 drop 都是DLL语句(Data Defined Language),delete语句是DML(Data maintain Language).


    (1) DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。

    (2) 表和索引所占空间。当表被TRUNCATE 后,这个表和索引所占用的空间会恢复到初始大小,而DELETE操作不会减少表或索引所占用的空间。drop语句将表所占用的空间全释放掉。

    (3) 一般而言,drop > truncate > delete

    (4) 应用范围。TRUNCATE 只能对TABLE;DELETE可以是table和view

    (5) TRUNCATE 和DELETE只删除数据,而DROP则删除整个表(结构和数据)。

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

    (7) delete语句为DML(data maintain Language),这个操作会被放到 rollback segment中,事务提交后才生效。如果有相应的 tigger,执行的时候将被触发。

    (8) truncate、drop是DLL(data define language),操作立即生效,原数据不放到 rollback segment中,不能回滚

    (9) 在没有备份情况下,谨慎使用 drop 与 truncate。要删除部分数据行采用delete且注意结合where来约束影响范围。回滚段要足够大。要删除表用drop;若想保留表而将表中数据删除,如果于事务无关,用truncate即可实现。如果和事务有关,或老师想触发trigger,还是用delete。

    (10) Truncate table 表名 速度快,而且效率高,因为:
    truncate table 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

    (11) TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。

    (12) 对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。


    展开全文
  • Delete:删除数据库记录 ①.数据操作语言(DML); ②.事务控制里,DML语句要么Commit,要么Rollback; ③.删除大量记录速度慢,只删除数据而不回收/释放高水位线(High Water Mark); //高水位线用于标识已使用过的数据块...

    Delete:删除数据库记录

    ①.数据操作语言(DML);

    ②.在事务控制里,DML语句要么Commit,要么Rollback;

    ③.删除大量记录速度慢,只删除数据而不回收/释放高水位线(High Water Mark);
    //高水位线用于标识已使用过的数据块与未使用的数据块二者间交界,扫描表数据的时候,高水位线以下的所有数据块都必须被扫描

    ④.可以带条件删除;

    注意:如果只是删除少量数据记录,可以使用这种方式!

    Truncate:删除所有的数据记录

    ①.数据定义语言(DDL);

    ②.不在事务控制里,DDL语句执行之前会提交前面所有未提交的事务;

    ③.清理大量数据时速度快,回收/释放高水位线(High Water Mark);
    //清理大量数据之前,可以先将不需要删除那一小部分数据导出来,然后再清除数据表所有的数据库记录,然后再把之前导出的数据重新导入到数据表中

    ④.不能带条件删除;

    注意:如果要删除大量数据记录,可以使用这种方式!

    Drop:删除数据库对象

    ①.数据定义语言(DDL);

    ②.数据库对象包括库,表,用户等;

    展开全文
  • DROP TABLE不同数据库中的写法整理 1,MySql中 DROP TABLE IF EXISTS [table_name] 2,Oracle中: BEGIN EXECUTE IMMEDIATE 'DROP TABLE [table_name]'; EXCEPTION WHEN OTHERS THEN NULL; END; 3,Sql ...
  • 删除数据库是将已经存在的数据库从磁盘空间上清除,清除之后,数据库中的所有数据也将一同被删除。 删除数据库 MySQL中,当需要删除已创建的数据库时,可以使用 DROP DATABASE 语句。其语法格式为: DROP ...

    当数据库不再使用时应该将其删除,以确保数据库存储空间中存放的是有效数据。删除数据库是将已经存在的数据库从磁盘空间上清除,清除之后,数据库中的所有数据也将一同被删除。

    删除数据库

    在 MySQL中,当需要删除已创建的数据库时,可以使用 DROP DATABASE 语句。其语法格式为:

    DROP DATABASE [ IF EXISTS ] <数据库名>
    

    语法说明如下:

    • <数据库名>:指定要删除的数据库名。
    • IF EXISTS:用于防止当数据库不存在时发生错误。
    • DROP DATABASE:删除数据库中的所有表格并同时删除数据库。使用此语句时要非常小心,以免错误删除。如果要使用 DROP DATABASE,需要获得数据库 DROP 权限。

    注意:MySQL 安装后,系统会自动创建名为 information_schema 和 mysql 的两个系统数据库,系统数据库存放一些和数据库相关的信息,如果删除了这两个数据库,MySQL 将不能正常工作。

    实例

    下面在 MySQL 中创建一个测试数据库 test_db_del 并 show 查看。

    mysql> CREATE DATABASE test_db_del;
    Query OK, 1 row affected (0.01 sec)
    
    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | db_test            |
    | db_test_db         |
    | mysql              |
    | performance_schema |
    | sys                |
    | test001            |
    | test002            |
    | test_create        |
    | test_create_char   |
    | test_db            |
    | test_db_d          |
    | test_db_ddd        |
    | test_db_del        |
    +--------------------+
    14 rows in set (0.00 sec)
    

    使用命令行工具将数据库 test_db_del 从数据库列表中删除并 show 查看

    mysql> DROP DATABASE test_db_del;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> SHOW DATABASES LIKE 'test_db_del';
    Empty set (0.00 sec)
    
    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | db_test            |
    | db_test_db         |
    | mysql              |
    | performance_schema |
    | sys                |
    | test001            |
    | test002            |
    | test_create        |
    | test_create_char   |
    | test_db            |
    | test_db_d          |
    | test_db_ddd        |
    +--------------------+
    13 rows in set (0.01 sec)
    

    此时数据库 test_db_del 不存在。再次执行相同的命令,直接使用 DROP DATABASE test_db_del,系统会报错,如下所示:

    mysql> DROP DATABASE test_db_del;
    ERROR 1008 (HY000): Can't drop database 'test_db_del'; database doesn't exist
    

    如果使用IF EXISTS从句,可以防止系统报此类错误,如下所示:

    mysql> DROP DATABASE IF EXISTS test_db_del;
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    

    所以创建和删除数据库的时候使用 if not existsif exists 是个好的习惯

    使用 DROP DATABASE 命令时要非常谨慎,在执行该命令后,MySQL 不会给出任何提示确认信息。DROP DATABASE 删除数据库后,数据库中存储的所有数据表和数据也将一同被删除,而且不能恢复。因此最好在删除数据库之前先将数据库进行备份。

    展开全文
  • 方法-:使用cmd模式下载删除mysql> drop database school;此命名删除了school数据库。...方法二:PHP脚本删除数据库在php,我们可以使用mysql_query函数来执行sql语句。 所以删除数据库时,我们可以直接...
  • 删除数据库是将已经存在的数据库从磁盘空间上清除,清除之后,数据库中的所有数据也将一同被删除。 MySQL 中,当需要删除已创建的数据库时,可以使用 DROP DATABASE 语句。其语法格式为:DROP DATABASE [ IF ...
  • 删除数据库是将已经存在的数据库从磁盘空间上清除,清除之后,数据库中的所有数据也将一同被删除。 MySQL中,当需要删除已创建的数据库时,可以使用DROP DATABASE语句。其语法格式为: DROP DATABASE [ IF ...
  • 主要用来对数据库的数据进行一些操作。DML 语句都是显式提交,执行完之后,处理的数据,都会放在回滚段(除了 SELECT 语句),等待用户进行提交(COMMIT)或者回滚 (ROLLBACK),当用户执行 COMMIT / ROLLBACK ....
  • 删除数据库是将已经存在的数据库从磁盘空间上清除,清除之后,数据库中的所有数据也将一同被删除。 MySQL 中,当需要删除已创建的数据库时,可以使用 DROP DATABASE 语句。其语法格式为: DROP DATABASE [ IF ...
  • 主要用来对数据库的数据进行一些操作。DML 语句都是显式提交,执行完之后,处理的数据,都会放在回滚段(除了 SELECT 语句),等待用户进行提交(COMMIT)或者回滚 (ROLLBACK),当用户执行 COMMIT / ROLLBACK ...
  • DML 语句都是显式提交,执行完之后,处理的数据,都会放在回滚段(除了 SELECT 语句),等待用户进行提交(COMMIT)或者回滚 (ROLLBACK),当用户执行 COMMIT / ROLLBACK 后,放在回滚段的数据就会被删除。...
  • ①属于DDL(数据定义语言)(数据库定义语言是不能能进行回滚操作的,回滚点是第一条DML(数据操纵语言)开始的)或者是自己自定义一个回滚点。 ②不能进行回滚操作,该操作是将表放到oracle数据库的回收站 ③...
  • 语法 db.collectionspace....做删除索引操作时,索引名必须集合存在。 索引名不能是空串,含点(.)或者美元符号($),且长度不超过127B。 返回值 无返回值,出错抛异常,并输出错误信息,可以通过getLastE
  • 1、使用mysqladmin删除数据库需要...在删除任何数据库时要注意,因为删除数据库时所有的数据在数据库中。下面是一个例子,用来删除前面的章节中所创建的数据库:[root@host]# mysqladmin -u root -p drop yiibaiEn...
  • mysql中,我们可以使用DROP DATABASE来删除数据库,并且数据库中所有表也随之删除。本文通过实例向各位码农介绍DROP DATABASE的使用方法,需要的朋友可以参考下
  • Mysql 删除数据库drop database方法-:使用cmd模式下载删除mysql> drop database school;此命名删除了school数据库。但如果school数据库不...方法二:PHP脚本删除数据库在php,我们可以使用mysql_query函数来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,128
精华内容 2,051
关键字:

在数据库中drop