
- MySQL 基礎
- MySQL - 首頁
- MySQL - 簡介
- MySQL - 特性
- MySQL - 版本
- MySQL - 變數
- MySQL - 安裝
- MySQL - 管理
- MySQL - PHP 語法
- MySQL - Node.js 語法
- MySQL - Java 語法
- MySQL - Python 語法
- MySQL - 連線
- MySQL - Workbench
- MySQL 資料庫
- MySQL - 建立資料庫
- MySQL - 刪除資料庫
- MySQL - 選擇資料庫
- MySQL - 顯示資料庫
- MySQL - 複製資料庫
- MySQL - 資料庫匯出
- MySQL - 資料庫匯入
- MySQL - 資料庫資訊
- MySQL 使用者
- MySQL - 建立使用者
- MySQL - 刪除使用者
- MySQL - 顯示使用者
- MySQL - 修改密碼
- MySQL - 授予許可權
- MySQL - 顯示許可權
- MySQL - 收回許可權
- MySQL - 鎖定使用者帳戶
- MySQL - 解鎖使用者帳戶
- MySQL 表
- MySQL - 建立表
- MySQL - 顯示錶
- MySQL - 修改表
- MySQL - 重命名錶
- MySQL - 克隆表
- MySQL - 截斷表
- MySQL - 臨時表
- MySQL - 修復表
- MySQL - 描述表
- MySQL - 新增/刪除列
- MySQL - 顯示列
- MySQL - 重新命名列
- MySQL - 表鎖定
- MySQL - 刪除表
- MySQL - 派生表
- MySQL 查詢
- MySQL - 查詢
- MySQL - 約束
- MySQL - INSERT 查詢
- MySQL - SELECT 查詢
- MySQL - UPDATE 查詢
- MySQL - DELETE 查詢
- MySQL - REPLACE 查詢
- MySQL - INSERT IGNORE
- MySQL - INSERT ON DUPLICATE KEY UPDATE
- MySQL - INSERT INTO SELECT
- MySQL 運算子和子句
- MySQL - WHERE 子句
- MySQL - LIMIT 子句
- MySQL - DISTINCT 子句
- MySQL - ORDER BY 子句
- MySQL - GROUP BY 子句
- MySQL - HAVING 子句
- MySQL - AND 運算子
- MySQL - OR 運算子
- MySQL - LIKE 運算子
- MySQL - IN 運算子
- MySQL - ANY 運算子
- MySQL - EXISTS 運算子
- MySQL - NOT 運算子
- MySQL - 不等於運算子
- MySQL - IS NULL 運算子
- MySQL - IS NOT NULL 運算子
- MySQL - BETWEEN 運算子
- MySQL - UNION 運算子
- MySQL - UNION vs UNION ALL
- MySQL - MINUS 運算子
- MySQL - INTERSECT 運算子
- MySQL - INTERVAL 運算子
- MySQL 連線
- MySQL - 使用連線
- MySQL - INNER JOIN
- MySQL - LEFT JOIN
- MySQL - RIGHT JOIN
- MySQL - CROSS JOIN
- MySQL - FULL JOIN
- MySQL - 自連線
- MySQL - DELETE JOIN
- MySQL - UPDATE JOIN
- MySQL - UNION vs JOIN
- MySQL 觸發器
- MySQL - 觸發器
- MySQL - 建立觸發器
- MySQL - 顯示觸發器
- MySQL - 刪除觸發器
- MySQL - BEFORE INSERT 觸發器
- MySQL - AFTER INSERT 觸發器
- MySQL - BEFORE UPDATE 觸發器
- MySQL - AFTER UPDATE 觸發器
- MySQL - BEFORE DELETE 觸發器
- MySQL - AFTER DELETE 觸發器
- MySQL 資料型別
- MySQL - 資料型別
- MySQL - VARCHAR
- MySQL - BOOLEAN
- MySQL - ENUM
- MySQL - DECIMAL
- MySQL - INT
- MySQL - FLOAT
- MySQL - BIT
- MySQL - TINYINT
- MySQL - BLOB
- MySQL - SET
- MySQL 正則表示式
- MySQL - 正則表示式
- MySQL - RLIKE 運算子
- MySQL - NOT LIKE 運算子
- MySQL - NOT REGEXP 運算子
- MySQL - regexp_instr() 函式
- MySQL - regexp_like() 函式
- MySQL - regexp_replace() 函式
- MySQL - regexp_substr() 函式
- MySQL 函式 & 運算子
- MySQL - 日期和時間函式
- MySQL - 算術運算子
- MySQL - 數值函式
- MySQL - 字串函式
- MySQL - 聚合函式
- MySQL 其他概念
- MySQL - NULL 值
- MySQL - 事務
- MySQL - 使用序列
- MySQL - 處理重複資料
- MySQL - SQL 注入
- MySQL - 子查詢
- MySQL - 註釋
- MySQL - CHECK 約束
- MySQL - 儲存引擎
- MySQL - 將表匯出到 CSV 檔案
- MySQL - 將 CSV 檔案匯入資料庫
- MySQL - UUID
- MySQL - 公共表表達式
- MySQL - ON DELETE CASCADE
- MySQL - Upsert
- MySQL - 水平分割槽
- MySQL - 垂直分割槽
- MySQL - 遊標
- MySQL - 儲存函式
- MySQL - SIGNAL
- MySQL - RESIGNAL
- MySQL - 字元集
- MySQL - 校對
- MySQL - 萬用字元
- MySQL - 別名
- MySQL - ROLLUP
- MySQL - 今日日期
- MySQL - 字面量
- MySQL - 儲存過程
- MySQL - EXPLAIN
- MySQL - JSON
- MySQL - 標準差
- MySQL - 查詢重複記錄
- MySQL - 刪除重複記錄
- MySQL - 選擇隨機記錄
- MySQL - SHOW PROCESSLIST
- MySQL - 更改列型別
- MySQL - 重置自動遞增
- MySQL - COALESCE() 函式
- MySQL 有用資源
- MySQL - 有用函式
- MySQL - 語句參考
- MySQL - 快速指南
- MySQL - 有用資源
- MySQL - 討論
MySQL - 刪除檢視
MySQL 檢視是一個虛擬表,它由預定義的 SQL 查詢生成。它包含一個或多個數據庫表中的(全部或選擇性)記錄。
檢視不會物理地儲存在資料庫中,但如果不需要,它們仍然可以被刪除。即使它們用於檢視和修改資料庫表中的資料,當檢視被刪除時,該表中的資料保持不變。
MySQL DROP VIEW 語句
MySQL 中的 **DROP VIEW** 語句用於刪除現有檢視及其定義和其他資訊。一旦檢視被刪除,所有對它的許可權也將被移除。我們還可以使用此語句刪除索引檢視。
假設使用 DROP TABLE 命令刪除一個表,並且它有一個與之關聯的檢視,則必須使用 DROP VIEW 命令顯式刪除此檢視。
**注意** -
在嘗試執行查詢時,資料庫引擎會檢查該語句中引用的所有物件是否有效且存在。因此,如果資料庫中不存在檢視,則 DROP VIEW 語句將丟擲錯誤。
要刪除資料庫中的表,必須在該表上擁有 ALTER 許可權,並在表模式上擁有 CONTROL 許可權。
語法
以下是 DROP VIEW 語句的語法:
DROP VIEW view_name;
其中,view_name 是要刪除的檢視的名稱。
示例
假設我們使用以下 CREATE TABLE 查詢建立了一個名為 CUSTOMERS 的表:
CREATE TABLE CUSTOMERS ( ID INT NOT NULL, NAME VARCHAR(15) NOT NULL, AGE INT NOT NULL, ADDRESS VARCHAR(25), SALARY DECIMAL(10, 2), PRIMARY KEY(ID) );
讓我們使用以下 INSERT 查詢在上面建立的表中插入記錄:
INSERT INTO CUSTOMERS VALUES (1, 'Ramesh', '32', 'Ahmedabad', 2000), (2, 'Khilan', '25', 'Delhi', 1500), (3, 'Kaushik', '23', 'Kota', 2500), (4, 'Chaitali', '26', 'Mumbai', 6500), (5, 'Hardik','27', 'Bhopal', 8500), (6, 'Komal', '22', 'MP', 9000), (7, 'Muffy', '24', 'Indore', 5500);
建立檢視:
現在,讓我們使用如下所示的 CREATE VIEW 語句在此表上建立一個檢視:
CREATE VIEW testView AS SELECT * FROM CUSTOMERS;
您可以使用以下查詢驗證所有檢視的列表:
SHOW FULL TABLES WHERE table_type = 'VIEW';
檢視將如下建立:
sample 資料庫中的表 | 表型別 |
---|---|
testview | VIEW |
刪除檢視:
以下查詢刪除上面建立的檢視:
DROP VIEW testView;
驗證
要驗證我們是否已刪除檢視,請使用以下查詢顯示檢視列表:
SHOW FULL TABLES WHERE table_type = 'VIEW';
由於檢視已刪除,因此返回空集。
Empty set (0.12 sec)
IF EXISTS 子句
如果您嘗試刪除不存在的檢視,則會生成錯誤。讓我們來看一個示例,我們使用以下查詢刪除名為 NEW 的檢視:
DROP VIEW NEW;
將顯示以下錯誤(其中“tutorialspoint”是資料庫名稱):
ERROR 1051 (42S02): Unknown table 'tutorialspoint.new'
但是,如果您在 DROP VIEW 語句中使用 **IF EXISTS** 子句,如下所示,即使不存在具有給定名稱的 VIEW,查詢也將被忽略。
DROP VIEW IF EXISTS NEW;
從檢視中刪除行
除了刪除整個檢視之外,我們還可以使用帶有 WHERE 子句的 DELETE 語句刪除檢視的選定行。
語法
以下是 DELETE 語句的語法:
DELETE FROM view_name WHERE condition;
示例
在此示例中,讓我們首先使用以下查詢在 CUSTOMERS 表上建立一個 testView:
CREATE VIEW testView AS SELECT * FROM CUSTOMERS;
現在,使用以下查詢,您可以從在 CUSTOMERS 表上建立的 testView 中刪除記錄。對檢視中資料所做的更改最終將反映在基礎表 CUSTOMERS 中。
DELETE FROM testView WHERE Location = 'Indore';
關聯表 CUSTOMERS 將具有以下記錄:
ID | 姓名 | 年齡 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
使用客戶端程式刪除檢視
除了使用 MySQL 查詢從 MySQL 資料庫中刪除檢視之外,我們還可以使用客戶端程式對錶執行其他操作。
語法
以下是各種程式語言中從 MySQL 刪除檢視的語法:
MySQL PHP 聯結器 **mysqli** 提供了一個名為 **query()** 的函式,用於在 MySQL 資料庫中執行 DROP VIEW 查詢。
$sql="DROP VIEW view_name"; $mysqli->query($sql);
MySQL NodeJS 聯結器 **mysql2** 提供了一個名為 **query()** 的函式,用於在 MySQL 資料庫中執行 DROP VIEW 查詢。
sql="DROP VIEW view_name"; con.query(sql);
我們可以使用 **JDBC 型別 4** 驅動程式使用 Java 與 MySQL 通訊。它提供了一個名為 **execute()** 的函式,用於在 MySQL 資料庫中執行 DROP VIEW 查詢。
String sql = "DROP VIEW view_name"; statement.execute(sql);
**MySQL Connector/Python** 提供了一個名為 **execute()** 的函式,用於在 MySQL 資料庫中執行 DROP VIEW 查詢。
drop_view_query = "DROP VIEW view_name" cursorObj.execute(drop_view_query);
示例
以下是該操作在各種程式語言中的實現:
$dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'password'; $dbname = 'TUTORIALS'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); if ($mysqli->connect_errno) { printf("Connect failed: %s
", $mysqli->connect_error); exit(); } // printf('Connected successfully.
'); // drop a view; $sql = "DROP VIEW first_view"; if ($mysqli->query($sql)) { printf("View dropped successfully!.
"); } if ($mysqli->errno) { printf("View could not be dropped!.
", $mysqli->error); } $mysqli->close();
輸出
獲得的輸出如下:
View 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("--------------------------"); sql = "create database TUTORIALS" con.query(sql); sql = "USE TUTORIALS" con.query(sql); sql = "CREATE TABLE dispatches_data(ProductName VARCHAR(255),CustomerName VARCHAR(255),DispatchTimeStamp timestamp,Price INT,Location VARCHAR(255));" con.query(sql); sql = "insert into dispatches_data values('Key-Board', 'Raja', TIMESTAMP('2019-05-04', '15:02:45'), 7000, 'Hyderabad'),('Earphones', 'Roja', TIMESTAMP('2019-06-26', '14:13:12'), 2000, 'Vishakhapatnam'),('Mouse', 'Puja', TIMESTAMP('2019-12-07', '07:50:37'), 3000, 'Vijayawada'),('Mobile', 'Vanaja' , TIMESTAMP ('2018-03-21', '16:00:45'), 9000, 'Chennai'),('Headset', 'Jalaja' , TIMESTAMP('2018-12-30', '10:49:27'), 6000, 'Goa');" con.query(sql); //Creating Views sql = "CREATE VIEW testView AS SELECT * FROM dispatches_data;" con.query(sql); sql = "CREATE VIEW sample AS SELECT ProductName, Price FROM dispatches_data;" con.query(sql); sql = "CREATE VIEW demo AS SELECT * FROM dispatches_data WHERE Price>3000;" con.query(sql); //Displaying list of all views sql = "SHOW FULL TABLES WHERE table_type = 'VIEW';" con.query(sql, function(err, result){ if (err) throw err console.log("**Views before deleting:**"); console.log(result); console.log("--------------------------"); }); //Dropping views sql = "DROP VIEW demo;" con.query(sql); sql = "DROP VIEW sample;" con.query(sql); sql = "DROP VIEW testview;" con.query(sql); //retrieve the list of views sql = "SHOW FULL TABLES WHERE table_type = 'VIEW';" con.query(sql, function(err, result){ if (err) throw err console.log("**Views after deleting:**"); console.log(result); }); });
輸出
生成的輸出如下:
Connected! -------------------------- **Views before deleting:** [ { Tables_in_tutorials: 'demo', Table_type: 'VIEW' }, { Tables_in_tutorials: 'sample', Table_type: 'VIEW' }, { Tables_in_tutorials: 'testview', Table_type: 'VIEW' } ] -------------------------- **Views after deleting:** []
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class DropView { 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 View..... String sql = "DROP VIEW tutorial_view"; statement.executeUpdate(sql); System.out.println("View dropped Successfully...!"); ResultSet resultSet = statement.executeQuery("SELECT * FROM tutorial_view"); while (resultSet.next()) { System.out.print(resultSet.getString(1)); System.out.println(); } connection.close(); } catch (Exception e) { System.out.println(e); } } }
輸出
獲得的輸出如下所示:
Connected successfully...! View dropped Successfully...! java.sql.SQLSyntaxErrorException: Table 'tutorials.tutorial_view' doesn't exist
Python Program import mysql.connector #establishing the connection connection = mysql.connector.connect( host='localhost', user='root', password='password', database='tut' ) cursorObj = connection.cursor() drop_view_query = "DROP VIEW tutorial_view" cursorObj.execute(drop_view_query) connection.commit() print("View dropped successfully.") cursorObj.close() connection.close()
輸出
以下是上述程式碼的輸出:
View dropped successfully.