MySQL - 删除表
MySQL DROP TABLE 语句
MySQL DROP TABLE 语句是一种数据定义语言 (DDL) 命令,用于删除表的定义及其数据、索引、触发器、约束和权限规范(如果有)。简单来说,此语句将从数据库中删除整个表。
但是,使用 DROP TABLE 命令时,我们需要注意以下几点 -
使用此命令时应非常小心,因为一旦删除表,该表中的所有可用信息也将永远丢失。
要删除数据库中的表,必须具备指定表的 ALTER 权限以及表架构的 CONTROL 权限。
尽管它是一个数据定义语言命令,但它与 TRUNCATE TABLE 语句不同,因为 DROP 语句会从数据库中完全删除表。
语法
以下是 MySQL DROP TABLE 语句的语法 -
DROP TABLE表名;
从数据库中删除表
要从数据库中删除表,我们需要使用 MySQL 的 DROP TABLE 命令。但在删除表之前,必须确保该表存在于数据库中。如果我们尝试删除数据库中不存在的表,则会引发错误。
示例
首先,通过执行以下语句创建数据库 TUTORIALS -
CREATE DATABASE TUTORIALS;
使用以下查询将数据库更改为 TUTORIALS -
USE TUTORIALS;
使用以下 CREATE TABLE 语句创建表 CUSTOMERS -
CREATE TABLE CUSTOMERS ( ID INT NOT NULL, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
要验证上述创建的内容是否已在 TUTORIALS 数据库中创建,请执行以下 SHOW TABLES 命令 -
SHOW TABLES IN TUTORIALS;
正如我们在下面的输出中看到的,CUSTOMERS 表已在 TUTORIALS 数据库中创建。
| Tables_in_tutorials |
|---|
| customers |
现在,让我们使用 MySQL DROP TABLE 语句删除上面创建的 CUSTOMERS 表 -
DROP TABLE CUSTOMERS;
输出
执行上述查询将产生以下输出 -
Query OK, 0 rows affected (0.02 sec)
验证
由于我们已经删除了表 CUSTOMERS,如果我们尝试再次验证表列表,使用"SHOW TABLES"查询,它将显示一个空集,如下所示 -
Empty set (0.00 sec)
IF EXISTS 子句
为了避免在删除表之前不断检查数据库中是否存在表,我们可以将 IF EXISTS 子句与 DROP TABLE 语句结合使用。
在 DROP TABLE 查询中指定此子句时,它将自动验证当前数据库中是否存在该表。如果存在,则删除该表。如果不存在,则忽略该查询。
语法
以下是 DROP TABLE IF EXISTS 语句的基本语法 -
DROP TABLE [IF EXISTS] table_name;
示例
这里,我们仅使用 DROP TABLE 语句删除 CUSTOMERS 表,该表在上一个示例中已被删除。
DROP TABLE CUSTOMERS;
输出
由于我们没有在 DROP TABLE 命令中使用 IF EXISTS 语句,因此将显示如下错误 -
ERROR 1051 (42S02): Unknown table 'tutorials.customers'
示例
如果我们尝试使用 IF EXISTS 子句删除数据库中不存在的 CUSTOMERS 表,则该查询将被忽略,而不会发出任何错误 -
DROP TABLE IF EXISTS CUSTOMERS;
执行上述查询将产生以下输出 -
Query OK, 0 rows affected, 1 warning (0.01 sec)
使用客户端程序删除表
除了使用 MySQL 查询从 MySQL 数据库中删除表之外,我们还可以使用客户端程序对表执行 DROP TABLE 操作。
语法
以下是使用各种编程语言从 MySQL 中删除表的语法 -
要通过 PHP 程序从 MySQL 数据库中删除表,我们需要使用 mysqli 函数 query() 执行 Drop 语句,如下所示: −
$sql="DROP TABLE Table_name"; $mysqli->query($sql);
要通过 Node.js 程序从 MySQL 数据库中删除表,我们需要使用 mysql2 库中的 query() 函数执行 Drop 语句,如下所示:-
sql = "DROP TABLE Table_name"; con.query(sql);
要通过 Java 程序从 MySQL 数据库中删除表,我们需要使用 JDBC 函数 executeUpdate() 执行 Drop 语句,如下所示:-
String sql="DROP TABLE Table_name"; statement.execute(sql);
要通过 Python 程序从 MySQL 数据库中删除表,我们需要使用 MySQL Connector/Python 的 execute() 函数执行 Drop 语句,如下所示:-
sql="DROP TABLE Table_name"; cursorObj.execute(sql);
示例
以下是程序:-
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'root@123';
$dbname = 'TUTORIALS';
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if($mysqli->connect_errno ) {
printf("Connect failed: %s<br />", $mysqli->connect_error);
exit();
}
printf('Connected successfully.<br />');
if ($mysqli->query("Drop Table tutorials_tbl")) {
printf("Table tutorials_tbl dropped successfully.<br />");
}
if ($mysqli->errno) {
printf("Could not drop table: %s<br />", $mysqli->error);
}
$mysqli->close();
输出
获得的输出如下 -
Connected successfully. Table tutorials_tbl dropped successfully.
var mysql = require('mysql2');
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "Nr5a0204@123"
});
//连接到 MySQL
con.connect(function (err) {
if (err) throw err;
console.log("Connected!");
console.log("--------------------------");
//选择数据库
sql = "USE TUTORIALS"
con.query(sql);
sql = "DROP TABLE SalesSummary;"
con.query(sql, function(err, result){
if (err) throw err
console.log(result);
});
});
输出
生成的输出如下 -
Connected!
--------------------------
ResultSetHeader {
fieldCount: 0,
affectedRows: 0,
insertId: 0,
info: '',
serverStatus: 2,
warningStatus: 0,
changedRows: 0
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class DropTable {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/TUTORIALS";
String username = "root";
String password = "password";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connection = DriverManager.getConnection(url, username, password);
Statement statement = connection.createStatement();
System.out.println("Connected successfully...!");
//Drop a table....
String sql = "DROP TABLE customer";
statement.execute(sql);
System.out.println("Table Dropped successfully...!");
connection.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
输出
获得的输出如下所示 -
Connected successfully...! Table Dropped successfully...!
import mysql.connector
#建立连接
connection = mysql.connector.connect(
host='localhost',
user='root',
password='password',
database='tut'
)
table_name = 'tutorials_tbl_cloned'
#创建游标对象
cursorObj = connection.cursor()
drop_table_query = f"DROP TABLE {table_name}"
cursorObj.execute(drop_table_query)
print(f"Table '{table_name}' is dropped successfully.")
cursorObj.close()
connection.close()
输出
以下是上述代码的输出 -
Table 'tutorials_tbl_cloned' is dropped successfully.

