mysql中drop delete和tuncate
时间: 2023-04-17 10:02:51 浏览: 152
1. drop:删除表或者数据库对象,包括表中的所有数据,同时也删除了表的结构,需要重新创建表结构。
2. delete:删除表中的数据,保留表的结构,可以使用where子句来指定删除的条件。
3. truncate:删除表中的所有数据,保留表的结构,不需要重新创建表结构,但是truncate操作不能回滚,一旦执行就无法恢复数据。
相关问题
tuncate一个库里的所有表
truncate是一种数据库操作,它可以清空指定的数据库表。如果要truncate一个库里的所有表,我们需要先选择这个库。然后,我们可以使用以下代码来清空所有表:
1.获取当前库中所有表名
```sql
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'your_database_name'
```
2.对每个表名执行truncate操作
```sql
TRUNCATE table_name
```
根据上述步骤,我们可以编写一个脚本来truncate一个库里的所有表。首先,我们需要使用SQL命令来获取库里的所有表名:
```sql
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'your_database_name'
```
该命令将返回一个表名列表。接下来,我们可以使用循环语句来针对每个表名执行truncate操作:
```sql
SET FOREIGN_KEY_CHECKS = 0; -- 提升操作速度
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE tableName varchar(250);
DECLARE cur CURSOR FOR
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'your_database_name'
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO tableName;
IF done THEN
LEAVE read_loop;
END IF;
SET @query = CONCAT('TRUNCATE ', tableName, ';');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END LOOP;
CLOSE cur;
END;
```
该脚本将遍历所有表名,并使用prepare语句和execute语句来构造和执行truncate操作。最后,我们需要关闭游标,并关闭消除连锁反应检查。这个脚本将会清空库里的所有表。
需要注意的是,truncate操作十分危险,操作之前一定要备份数据。此外,在truncate之后,我们需要重新插入数据才能使用。
阅读全文