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.