使用 DROP TABLE 命令从数据库中删除现有表以及 PostgreSQL 数据库中的数据。只有表的所有者才能销毁表。
语法
DROP TABLE [IF EXISTS] [<table1>, <table2>...] [CASCADE | RESTRICT];
以下代码将删除 employee
表:
DROP TABLE IF EXISTS employee;
使用 IF EXISTS 选项仅删除数据库中存在的表。如果指定的表在数据库中不存在,那么它会给出警告并跳过drop命令。
如果一个表正在其他表、视图等中使用,那么它不会从数据库中删除,因为默认模式是 RESTRICT。例如,以下部门表在员工表中作为外键被引用。
CREATE TABLE employee(
emp_id INT PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
gender CHAR(1),
dept_id INT NOT NULL,
FOREIGN KEY (dept_id) REFERENCES department(dept_id)
);
CREATE TABLE department (
dept_id INT PRIMARY KEY,
dept_name VARCHAR(100) NOT NULL
);
现在,尝试删除部门表将引发错误,如下所示。
使用CASCADE强制
删除表,即使它正在其他对象中使用。
DROP TABLE department CASCADE;
如果表被视图或外键约束引用,则使用 CASCADE 参数删除视图、过程等依赖对象,但对于外键,它只会从子表中删除外键约束,而不是子表本身。
指定两个或多个以逗号分隔的表以删除多个表。
DROP TABLE person, employee;
如果您想删除表中的所有数据而不删除表,请使用 DELETE 或 TRUNCATE TABLE 命令。