MySQL - 刪除表



MySQL DROP TABLE 語句

MySQL 的DROP TABLE語句是一個數據定義語言 (DDL) 命令,用於刪除表的定義及其資料、索引、觸發器、約束和許可權規範(如有)。簡單來說,此語句將從資料庫中刪除整個表。

但是,使用 DROP TABLE 命令時,需要注意以下幾點:

  • 使用此命令時應非常小心,因為一旦刪除表,該表中的所有資訊也將永遠丟失。

  • 要在資料庫中刪除表,必須對指定的表具有 ALTER 許可權,對錶模式具有 CONTROL 許可權。

  • 儘管它是一個數據定義語言命令,但它與 TRUNCATE TABLE 語句不同,因為 DROP 語句會將表完全從資料庫中刪除。

語法

以下是 MySQL DROP TABLE 語句的語法:

DROP TABLE table_name ;

從資料庫中刪除表

要從資料庫中刪除表,我們需要使用 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 資料庫中建立。

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"
});

  //Connecting to MySQL
  con.connect(function (err) {
  if (err) throw err;
  console.log("Connected!");
  console.log("--------------------------");

  //Selecting a Database
  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://: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
#establishing the connection
connection = mysql.connector.connect(
    host='localhost',
    user='root',
    password='password',
    database='tut'
)
table_name = 'tutorials_tbl_cloned'
#Creating a cursor object 
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.
廣告