十五、MySQL 删除表

十五、MySQL 删除表

MySQL 使用 DROP TABLE SQL 语句删除数据库中的一个表

要小心,因为执行删除命令后表中所有的数据都会消失,而且无法撤销

DROP TABLE SQL 语句语法

使用 DROP TABLE SQL 语句删除数据表的通用语法如下

1
DROP TABLE table_name ;

在命令提示窗口中删除数据表

可以在 mysql> 命令提示窗口中执行 DROP TABLE SQL 语句删除数据表

下面的代码演示了如何删除 test2 中的数据表 tbl_language

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
MariaDB [test2]> use test2;
Database changed
MariaDB [test2]> SHOW TABLES;
+----------------+
| Tables_in_test2 |
+----------------+
| customer |
| sites |
| tbl_language |
+----------------+
3 rows in set (0.00 sec)

MariaDB [test2]> DROP TABLE tbl_language;
Query OK, 0 rows affected (0.01 sec) # 即使删除成功,返回受影响的行数也为 0

MariaDB [test2]> SHOW TABLES;
+----------------+
| Tables_in_test2 |
+----------------+
| customer |
| sites | # 没看到 tbl_language 表说明删除成功
+----------------+
2 rows in set (0.00 sec)

MariaDB [test2]>

PHP 删除数据表

PHP 可以使用 PDO::exec() 函数来创建或者删除 MySQL 表

PDO::exec() 函数只有一个参数,就是想要执行的 SQL 语句

PDO::exec 语法格式

1
int PDO::exec ( string $statement )

返回受修改或删除 SQL 表影响的行数。如果没有受影响的行,则返回 0

参数

参数说明
statement要被预处理和执行的 SQL 语句,查询中的数据应该被妥善地转义

注意

我们从前面的命令行运行中知道

1
2
MariaDB [test2]> DROP TABLE tbl_language;
Query OK, 0 rows affected (0.01 sec)

即使删除成功,返回受影响的行数也为 0 ,所以无法根据 PDO::exec() 的返回值来判断是否删除表

范例

下面的 PHP 代码演示了如何用 PDO_MySQL 在数据库 test2 中删除 tbl_language

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php 
$sql= "DROP TABLE `tbl_language`";

try {

$dbh = new PDO('mysql:host=127.0.0.1;dbname=test2', 'root', '');

$rs = $dbh->exec($sql);

echo "成功删除 test2 数据库中的表 tbl_language \n";
}
catch (PDOException $e)
{
echo "错误!: " , $e->getMessage() , "\n";
}

运行以上 PHP 代码,输出结果如下

1
成功删除 test2 数据库中的表 tbl_language 

我们可以使用 mysql 客户端命令查看 test2tbl_language 还在不在

1
2
3
4
5
6
7
8
9
10
11
12
MariaDB [test2]> USE test2;
Database changed
MariaDB [test2]> SHOW TABLES;
+----------------+
| Tables_in_test2 |
+----------------+
| customer |
| sites |
+----------------+
2 rows in set (0.00 sec)

MariaDB [test2]>