SQL DROP或DELETE视图
SQL允许您删除数据库中的现有视图并从视图中删除记录。SQL使用DROP语句来删除视图的所有记录以及其定义。使用DELETE语句,仅删除记录,而视图的定义保持不变。
请注意,如果从视图中删除记录,则该记录也将从对应的基表中删除。
DROP VIEW语句
DROP VIEW 语句用于删除现有视图以及其定义和其他信息。一旦视图被删除,它的所有权限也将被删除。我们也可以使用此语句删除索引视图。
假设使用DROP TABLE命令删除了一个带有相关视图的表,则必须使用DROP VIEW命令显式删除该视图。
- 在尝试执行查询时,数据库引擎会检查该语句中引用的所有对象是否有效且存在。因此,如果数据库中不存在视图,DROP VIEW语句将引发错误。
-
要在数据库中删除一个表,必须在该表上具有ALTER权限,并且在表模式上具有CONTROL权限。
语法
此DROP VIEW语句的基本语法如下所示−
示例
假设我们使用以下查询语句使用 CREATE TABLE 语句创建了一个名为CUSTOMERS的表:
现在,使用以下INSERT语句将值插入到这个表中 –
假设我们使用CREATE VIEW语句创建了3个视图,如下所示:
您可以使用以下查询来验证所有视图的列表-
这将显示以下视图列表-
TABLE_SCHEMA | TABLE_NAME |
---|---|
tutorials | CUSTOMERS_VIEW1 |
tutorials | CUSTOMERS_VIEW2 |
tutorials | CUSTOMERS_VIEW3 |
现在,让我们使用DROP VIEW语句从上面创建的视图中删除两个视图。
验证
一旦我们删除了所有的视图,如果您尝试检索视图列表,您将得到一个空集合,如下所示 –
以下是剩余的视图列表 –
TABLE_SCHEMA | TABLE_NAME |
---|---|
tutorials | CUSTOMERS_VIEW3 |
IF EXISTS子句
在删除现有视图时,可以在DROP VIEW语句中使用IF EXISTS子句。当在DROP VIEW查询中指定此子句时,将自动检查当前数据库中是否存在该视图,如果存在则删除它。如果数据库中不存在该视图,则查询将被忽略。
语法
以下是DROP VIEW IF EXISTS的基本语法−
示例
如果您尝试在数据库中删除一个不存在的视图,而不使用IF EXISTS子句,如下所示 –
将会生成一个错误−
但如果您使用与以下DROP VIEW语句一起使用的IF EXISTS子句,指定的视图将被删除;如果不存在具有给定名称的视图,则查询将被忽略。
将忽略该查询,并显示以下输出:
从视图中删除行
而不是删除整个视图,我们还可以使用DELETE语句删除视图中的选择行。
语法
以下是DELETE语句的语法-
示例
以下查询将从上述创建的CUSTOMERS表的third_view中删除一条记录。对视图中数据的更改最终将反映在基本表CUSTOMERS中。
最终,这将从基表CUSTOMERS中删除一行数据,并且这个变化也将在视图中体现出来。现在,查询基表,并且SELECT语句将产生以下结果。−
客户表显示如下-
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 35 | 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 |
7 | Muffy | 24 | Indore | 10000.00 |