当前位置: 首页 > 编程笔记 >

MySQL DROP TABLE会完全删除表还是仅删除结构?

仇建茗
2023-03-14
本文向大家介绍MySQL DROP TABLE会完全删除表还是仅删除结构?,包括了MySQL DROP TABLE会完全删除表还是仅删除结构?的使用技巧和注意事项,需要的朋友参考一下

DROP TABLE会完全删除该表,并且还会删除所有数据。如果要完全删除所有数据并需要表结构,则可以使用TRUNCATE TABLE命令。TRUNCATE命令将重新创建表。

让我们首先检查DROP TABLE。为此,我们将首先创建一个表-

mysql> create table DemoTable
   (
   Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   Name varchar(20)
   );

使用插入命令在表中插入一些记录-

mysql> insert into DemoTable(Name) values('Larry');

mysql> insert into DemoTable(Name) values('Chris');

使用select语句显示表中的所有记录-

mysql> select *from DemoTable;

这将产生以下输出-

+----+-------+
| Id | Name  |
+----+-------+
| 1  | Larry |
| 2  | Chris |
+----+-------+
2 rows in set (0.00 sec)

现在,使用DROP TABLE命令。执行DROP TABLE命令后,数据将被删除,并且将没有任何表结构。

mysql> DROP TABLE DemoTable;

如果尝试显示数据,将出现以下错误-

mysql> select *from DemoTable;
ERROR 1146 (42S02): Table 'hb_student_tracker.DemoTable' doesn't exist

您甚至都不会得到表结构-

mysql> desc DemoTable;
ERROR 1146 (42S02): Table 'hb_student_tracker.DemoTable' doesn't exist

让我们实现TRUNCATE命令。

mysql> create table DemoTable
   (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstName varchar(20)
   );

使用插入命令在表中插入一些记录-

mysql> insert into DemoTable(FirstName) values('Chris');

mysql> insert into DemoTable(FirstName) values('Robert');

使用select语句显示表中的所有记录-

mysql> select *from DemoTable;

这将产生以下输出-

+----+-----------+
| Id | FirstName |
+----+-----------+
| 1  | Chris     |
| 2  | Robert    |
+----+-----------+
2 rows in set (0.00 sec)

现在,实现TRUNCATE命令。执行TRUNCATE命令后,将从表中删除数据,并重新创建表结构。

mysql> TRUNCATE TABLE DemoTable;

现在您不会从表中获取任何数据,但是表结构将可见-

mysql> select *from DemoTable;
Empty set (0.00 sec)

以下是获取表结构的查询-

mysql> desc DemoTable;

这将产生以下输出-

+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| Id        | int(11)     | NO   | PRI | NULL    | auto_increment |
| FirstName | varchar(20) | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)
 类似资料:
  • 问题内容: 在文档(http://dev.mysql.com/doc/refman/6.0/en/drop- table.html )中未明确提及。我问是因为我刚刚在Rails项目中看到了一个奇怪的数据库迁移,其中开发人员在删除表之前删除了所有索引,这似乎是不必要的。 问题答案: 是的,它确实。 但是,如果您具有诸如RESTRICT之类的外键约束来确保与其他表的参照完整性,则需要在删除或截断表之前

  • 我正在为我的网站使用一个名为Kalium的wordpress主题以及一些修改过的部分:https://www.idee-creative.co.uk 我在每种页面类型上都添加了自定义字段,因此我可以轻松地添加自己的标题和描述标记,以便在每一页上都可以自定义它们。我使用的代码如下: 拉取自定义字段并将其显示在页面的标题中。 我遇到的问题是,当我查看页面的源代码时,Wordpress似乎添加了自己的标

  • < b >想改进这个问题?更新问题,使其成为关于堆栈溢出的主题。 我正在尝试从我的ubuntu 12.04中完全卸载mysql。但无法。 我尝试了很多命令。但没有任何效果。任何人都可以在这里帮忙! 我不明白该怎么做。我想删除有关MySQL的所有内容。每当我试图定位它时。我明白了。 我希望一切都被删除。mysql服务器、mysql客户端、mysqls库甚至配置。 请帮帮我!!!

  • 问题内容: 我从不同的文件夹中删除了詹金斯所有目录。但是,当我访问URL时,仍然显示jenkins登录。 我想完全卸载jenkins。已经尝试了许多来自Internet的命令,但是服务器上仍然有jenkins。 我只有通过腻子进行命令行访问,因此我尝试通过命令删除jenkins。 问题答案: 如果您的詹金斯人以服务而不是进程的形式运行,则应先使用 停止后,您可以按照与Linux风格相对应的命令按照

  • 问题内容: 我卸载了先前版本的node.js(0.8.11),并从node.js网站下载了最新版本0.10.24并进行了安装。但是,运行后,仍然表明我正在运行v0.8.11。显然,在卸载过程中遗留了一些东西,这导致我在尝试通过npm添加模块时遇到各种错误。我已经看到了针对OSX和Linux的解决方案,但找不到Windows的任何东西。我正在运行Windows 7 64位。 问题答案: 如何从Win

  • 我使用spring Boot2、jpa和Hibernate。Db是后置,我尝试删除一个带有子级的对象 如果我删除了Samplings,Samplings、testsamplings和Compressions也应该被删除。 从sample_letter=?的示例中删除和sampling_id=?和sampling_year=? 2018-10-03 22:21:05.832错误14511--[nio

  • 为了保证安全的删除, Android Studio会找到被删除字符, 结果会在工具栏展示,可以在删除之前对代码进行修正。 操作步骤: 菜单栏: Refactor —> Safe Delete...

  • 编辑:修改问题以更好地反映问题。此处最初发布的问题 我有一个父实体(< code >上下文)和一个子实体(< code >用户)。父级上的级联“删除”不会删除子级。代码如下: