PostgreSQL 删除列 PostgreSQL 添加列 PostgreSQL 更改列类型 PostgreSQL 删除列 在本节中,我们将讨论如何借助ALTER TABLE命令删除列。 PostgreSQL DROP COLUMN 命令 我们将在ALTER TABLE 命令中使用 DROP COLUMN 条件来删除表的列: ALTER TABLE table_name DROP COLUMN column_name; PostgreSQL会在从表中删除列时自动删除其所有的约束和索引,包括该列,并且每个删除列条件都以逗号 (,)分隔。 我们不能删除那些其他对象依赖它们的列,并且还用于其他数据库对象,如触发器、视图、存储过程等。 因此,为了删除这些列及其所有连接的对象,我们将在drop column命令中使用CASCADE选项,如下所示: ALTER TABLE table_name DROP COLUMN column_name CASCADE; 如果我们想删除一个不存在的列,PostgreSQL 会提出一个问题。我们将在 drop column 命令中添加 IF EXISTS 条件以克服此错误,如我们在以下命令中所见: ALTER TABLE table_name DROP COLUMN IF EXISTS column_name; 在上面的命令中,如果我们删除一个不存在的列,PostgreSQL 将发出通知而不是错误。 如果我们需要在单个命令中删除表的各个列,我们将使用以下命令: ALTER TABLE table_name DROP COLUMN column_name_1, DROP COLUMN column_name_2; PostgreSQL DROP COLUMN 命令示例 让我们看一些例子来理解ALTER TABLE DROP COLUMN命令的工作。 因此,我们将创建三个不同的表,例如Product、Categories 和 Brand。 在上图中,每个Product只包含一个品牌,并且每个品牌可以有多个产品。每个产品被分配到一个类别,每个类别可以有不同的产品。 以下命令用于创建三个表(类别、产品和品牌): 借助以下命令创建类别\表: CREATE TABLE Categories ( Cate_id serial PRIMARY KEY, Cate_name VARCHAR NOT NULL ); 输出 执行上述命令后,我们将得到以下消息;该分类\表已创建。 使用以下语句创建Product\表: CREATE TABLE Product ( Pro_id serial PRIMARY KEY, Pro_name VARCHAR NOT NULL, Brand_id INT NOT NULL, Cate_id INT NOT NULL, List_price DECIMAL NOT NULL, Model_year SMALLINT NOT NULL, FOREIGN KEY (Cate_id) REFERENCES Categories (Cate_id), FOREIGN KEY (Brand_id) REFERENCES Brand (Brand_id) ); 输出 执行上述命令后,我们将得到以下消息;该产品\已创建表。 使用以下命令创建品牌\表: CREATE TABLE Brand ( Brand_id serial PRIMARY KEY, Brand_name VARCHAR NOT NULL ); 输出 执行上述命令后,我们将得到以下消息;该品牌\表已创建。 此外,我们根据Product和Brand表创建一个视图,如下所示: CREATE VIEW Product_info AS SELECT Pro_id, Pro_name, Brand_name FROM Product p INNER JOIN Brand B ON B .Brand_id = p.Brand_id ORDER BY Pro_name; 输出 执行上述命令后,我们将得到以下消息;该产品的详细信息\视图已创建。 如果我们想删除Product表的cate_id列,我们将使用以下命令: ALTER TABLE Product DROP COLUMN cate_id; 输出 执行上述命令后,我们将得到以下消息;从Product\表中删除的cate_id\列。 如果我们想在 psql 中查看表,我们将使用以下命令 Javatpoint=# \d Product; 正如我们在上面的截图中看到,上面的命令删除Cate_id列,并包括Cate_id列到外键约束。 现在我们将尝试从Product\表中删除Brand_id列。 ALTER TABLE Product DROP COLUMN Brand_id; 一旦我们执行上述命令,PostgreSQL 将引发以下错误: 它指出,该产品的详细信息视图使用列Brand_id中的产品\表。 因此,我们将使用级联选项通过以下命令的帮助删除Brand_id列和Product_info视图: ALTER TABLE Product DROP COLUMN Brand_id CASCADE; 一旦我们执行了上面的命令,它就会发出下面的通知并删除特定的列。 在这里,我们将在单个命令中删除list_price 和 Model_year列,我们需要使用多个 DROP COLUMN条件,如下所示: ALTER TABLE Product DROP COLUMN List_Price, DROP COLUMN Model_year; 输出 执行上述命令后,我们将得到以下消息窗口:List_price 和 Model_year 列已从Product\表中删除。 如果我们想看看上面的操作是否正常,我们将使用Select命令: Select * from Product ; 输出 执行上述命令后,我们将得到以下输出: PostgreSQL 添加列 PostgreSQL 更改列类型