MySQL基础知识—删除表和表数据

delete语句

语法格式

delete from 表名 where 条件;

注意:没有条件的话整张表都会被删除。

使用delete语句删除后,硬盘上的物理空间不会被释放掉。

缺点:删除效率低

优点:支持回滚

示例

删除id为2的表行

mysql> select * from t_user;
+----+------+------------+
| id | name | birth      |
+----+------+------------+
|  1 | jack | 2000-10-11 |
|  1 | jack | 2000-10-11 |
|  2 | kd   | 1992-10-01 |
+----+------+------------+
3 rows in set (0.03 sec)

mysql> delete from t_user where id = 1;
Query OK, 2 rows affected (0.06 sec)
mysql> select * from t_user;
+----+------+------------+
| id | name | birth      |
+----+------+------------+
|  2 | kd   | 1992-10-01 |
+----+------+------------+
1 row in set (0.03 sec)

删除t_user表

mysql> delete from t_user;
Query OK, 1 row affected (0.07 sec)
mysql> select * from t_user;
Empty set

支持回滚

mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)

mysql> delete from t_user;
Query OK, 3 rows affected (0.00 sec)
mysql> select * from t_user;
Empty set

mysql> rollback;
Query OK, 0 rows affected (0.03 sec)

mysql> select * from t_user;
+----+------+------------+
| id | name | birth      |
+----+------+------------+
|  1 | kd   | 1992-01-01 |
|  2 | kd   | 1992-01-01 |
|  3 | kd   | 1992-01-01 |
+----+------+------------+
3 rows in set (0.03 sec)

删除表

drop table if exists t_student;

如果表存在的话,删除

结果:

mysql> drop table if exists t_student;
Query OK, 0 rows affected (0.23 sec)

mysql> desc t_student;
1146 - Table 'mysql.t_student' doesn't exist

快速删除表—truncate(DDL)

truncate语句删除表中的数据,物理删除

语法格式

truncate table 表名;

优点:删除效率高

缺点:无法回滚

mysql> select * from t_user;
+----+------+------------+
| id | name | birth      |
+----+------+------------+
|  1 | kd   | 1992-01-01 |
|  2 | kd   | 1992-01-01 |
|  3 | kd   | 1992-01-01 |
+----+------+------------+
3 rows in set (0.03 sec)

mysql> truncate table t_user;
Query OK, 0 rows affected (0.51 sec)
mysql> select * from t_user;
Empty set

mysql> rollback;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from t_user;
Empty set

猜你喜欢

转载自blog.csdn.net/kuangd_1992/article/details/120693362