iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >PostgreSQL中的删除列操作是什么
  • 760
分享到

PostgreSQL中的删除列操作是什么

2024-04-02 19:04:59 760人浏览 泡泡鱼
摘要

本篇内容主要讲解“postgresql中的删除列操作是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Postgresql中的删除列操作是什么”吧!创建数据表

本篇内容主要讲解“postgresql中的删除列操作是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Postgresql中的删除列操作是什么”吧!

创建数据表

[local:/data/run/pg12]:5120 pg12@testdb=# create table t_drop(id int);
CREATE TABLE
[local:/data/run/pg12]:5120 pg12@testdb=# insert into t_drop select generate_series(1,10000000);
INSERT 0 10000000
[local:/data/run/pg12]:5120 pg12@testdb=# 
[local:/data/run/pg12]:5120 pg12@testdb=#  SELECT pg_size_pretty( pg_relation_size( 't_drop' ) );
 pg_size_pretty 
----------------
 346 MB
(1 row)

新增列

[local:/data/run/pg12]:5120 pg12@testdb=# \timing on
Timing is on.
[local:/data/run/pg12]:5120 pg12@testdb=# ALTER TABLE t_drop ADD COLUMN c1 text  DEFAULT md5( random()::text );
ALTER TABLE
Time: 45769.146 ms (00:45.769)
[local:/data/run/pg12]:5120 pg12@testdb=# SELECT pg_size_pretty( pg_relation_size( 't_drop' ) );
 pg_size_pretty 
----------------
 651 MB
(1 row)
Time: 0.840 ms
[local:/data/run/pg12]:5120 pg12@testdb=#

新增列后,占用空间达到了651MB.

删除列

[local:/data/run/pg12]:5120 pg12@testdb=# alter table t_drop drop c1;
ALTER TABLE
Time: 2.886 ms
[local:/data/run/pg12]:5120 pg12@testdb=# SELECT pg_size_pretty( pg_relation_size( 't_drop' ) );
 pg_size_pretty 
----------------
 651 MB
(1 row)
Time: 1.788 ms
[local:/data/run/pg12]:5120 pg12@testdb=#

删除列,但空间没有释放.

数据字典

[local:/data/run/pg12]:5120 pg12@testdb=# \d pg_attribute
              Table "pg_catalog.pg_attribute"
    Column     |   Type    | Collation | Nullable | Default 
---------------+-----------+-----------+----------+---------
 attrelid      | oid       |           | not null | 
 attname       | name      |           | not null | 
 atttypid      | oid       |           | not null | 
 attstattarget | integer   |           | not null | 
 attlen        | smallint  |           | not null | 
 attnum        | smallint  |           | not null | 
 attndims      | integer   |           | not null | 
 attcacheoff   | integer   |           | not null | 
 atttypmod     | integer   |           | not null | 
 attbyval      | boolean   |           | not null | 
 attstorage    | "char"    |           | not null | 
 attalign      | "char"    |           | not null | 
 attnotnull    | boolean   |           | not null | 
 atthasdef     | boolean   |           | not null | 
 atthasmissing | boolean   |           | not null | 
 attidentity   | "char"    |           | not null | 
 attgenerated  | "char"    |           | not null | 
 attisdropped  | boolean   |           | not null | 
 attislocal    | boolean   |           | not null | 
 attinhcount   | integer   |           | not null | 
 attcollation  | oid       |           | not null | 
 attacl        | aclitem[] |           |          | 
 attoptions    | text[]    | C         |          | 
 attfdwoptions | text[]    | C         |          | 
 attmissingval | anyarray  |           |          | 
Indexes:
    "pg_attribute_relid_attnam_index" UNIQUE, btree (attrelid, attname)
    "pg_attribute_relid_attnum_index" UNIQUE, btree (attrelid, attnum)
[local:/data/run/pg12]:5120 pg12@testdb=# select attrelid,attname,atttypid,attisdropped from pg_attribute where attrelid = 't_drop'::reGClass;
 attrelid |           attname            | atttypid | attisdropped 
----------+------------------------------+----------+--------------
   994249 | tableoid                     |       26 | f
   994249 | cmax                         |       29 | f
   994249 | xmax                         |       28 | f
   994249 | cmin                         |       29 | f
   994249 | xmin                         |       28 | f
   994249 | ctid                         |       27 | f
   994249 | id                           |       23 | f
   994249 | ........pg.dropped.2........ |        0 | t
(8 rows)
Time: 0.896 ms
[local:/data/run/pg12]:5120 pg12@testdb=#

查看数据字典,发现删除的c1列变为pg.dropped.2,逻辑标记为删除.
使用vacuum/vacuum full回收空间.

[local:/data/run/pg12]:5120 pg12@testdb=# vacuum t_drop;
VACUUM
Time: 2510.368 ms (00:02.510)
[local:/data/run/pg12]:5120 pg12@testdb=# SELECT pg_size_pretty( pg_relation_size( 't_drop' ) );
 pg_size_pretty 
----------------
 651 MB
(1 row)
Time: 0.718 ms
[local:/data/run/pg12]:5120 pg12@testdb=# vacuum full t_drop;
VACUUM
Time: 7996.658 ms (00:07.997)
[local:/data/run/pg12]:5120 pg12@testdb=# SELECT pg_size_pretty( pg_relation_size( 't_drop' ) );
 pg_size_pretty 
----------------
 346 MB
(1 row)
Time: 1.258 ms
[local:/data/run/pg12]:5120 pg12@testdb=#

但数据字典仍保留删除列的信息

[local:/data/run/pg12]:5120 pg12@testdb=# select attrelid,attname,atttypid,attisdropped from pg_attribute where attrelid = 't_drop'::regclass;
 attrelid |           attname            | atttypid | attisdropped 
----------+------------------------------+----------+--------------
   994249 | tableoid                     |       26 | f
   994249 | cmax                         |       29 | f
   994249 | xmax                         |       28 | f
   994249 | cmin                         |       29 | f
   994249 | xmin                         |       28 | f
   994249 | ctid                         |       27 | f
   994249 | id                           |       23 | f
   994249 | ........pg.dropped.2........ |        0 | t
(8 rows)
Time: 0.757 ms
[local:/data/run/pg12]:5120 pg12@testdb=#

新增列,查看数据字典

[local:/data/run/pg12]:5120 pg12@testdb=# ALTER TABLE t_drop ADD COLUMN c1 text  DEFAULT md5( random()::text );
ALTER TABLE
Time: 24483.254 ms (00:24.483)
[local:/data/run/pg12]:5120 pg12@testdb=# select attrelid,attname,atttypid,attisdropped from pg_attribute where attrelid = 't_drop'::regclass;
 attrelid |           attname            | atttypid | attisdropped 
----------+------------------------------+----------+--------------
   994249 | tableoid                     |       26 | f
   994249 | cmax                         |       29 | f
   994249 | xmax                         |       28 | f
   994249 | cmin                         |       29 | f
   994249 | xmin                         |       28 | f
   994249 | ctid                         |       27 | f
   994249 | id                           |       23 | f
   994249 | ........pg.dropped.2........ |        0 | t
   994249 | c1                           |       25 | f
(9 rows)
Time: 1.067 ms
[local:/data/run/pg12]:5120 pg12@testdb=#

到此,相信大家对“PostgreSQL中的删除列操作是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: PostgreSQL中的删除列操作是什么

本文链接: https://www.lsjlt.com/news/63044.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PostgreSQL中的删除列操作是什么
    本篇内容主要讲解“PostgreSQL中的删除列操作是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL中的删除列操作是什么”吧!创建数据表...
    99+
    2024-04-02
  • PythonPandas删除列操作
    使用del和drop方法删除DataFrame中的列,使用drop方法一次删除多列 数据准备: import pandas as pd   data = pd.read_excel(...
    99+
    2024-04-02
  • redis的删除操作命令是什么
    本篇内容介绍了“redis的删除操作命令是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!redis 删除操作命令redis中,我们想要删...
    99+
    2023-07-05
  • postgresql删除表的方法是什么
    要在 PostgreSQL 中删除整个表,您可以使用 DROP TABLE 语句。以下是一个示例: DROP TABLE table...
    99+
    2024-04-09
    postgresql
  • 删除pandas中产生Unnamed:0列的操作
    我们在数据处理,往往不小心,pandas会“主动”加上行和列的名称,我现在就遇到了这个问题。 这个是pandas中to_csv生成的数据各种拼接之后的最终数据(默认参数,index=...
    99+
    2024-04-02
  • PythonPandas删除列操作怎么实现
    在Pandas中,可以使用“drop() ”方法来删除DataFrame中的列:1、使用“import pandas as pd”导入Pandas模块;2、创建一个DataFrame;3、使用“drop()”方法删除指定列;4、可以传递一个...
    99+
    2023-12-19
    pythonpandas pythonpandas删除列
  • Pythondrop()删除行列的操作方法
    在进行特征工程、划分数据集的工作中,drop()函数都能派上用场。它可以轻松剔除数据、操作列和操作行等。 drop()详细的语法如下: 删除行是index,删除列是columns: ...
    99+
    2023-05-15
    Python drop()删除行列 drop()删除行列
  • Python列表对象中元素的删除操作方法
    目录1.列表元素删操作的方法2.调用remove方法一次删除一个指定的元素3.调用pop方法一次只删除一个指定索引的元素3.1.使用pop方法删除列表中索引为2的元素3.2.使用po...
    99+
    2022-12-21
    Python列表元素删除操作 Python列表操作 Python列表元素
  • mysql删除操作其实是假删除问题
    目录mysql删除操作其实是假删除我们可以通过一个例子来验证下看看效果总结mysql删除操作其实是假删除 在 InnoDB 中,你的 delete 操作,并不会真的把数据删除,mysql 实际上只是给删除的数据...
    99+
    2023-04-12
    mysql删除 mysql删除操作 mysql假删除
  • redis中删除操作命令
    目录Redis 删除操作命令redis 常用操作命令redis通用命令String类型的常用命令Hash类型List类型Set类型SortedSet类型总结redis 删除操作命令 redis中,我们想要删除一个数据,可...
    99+
    2023-02-22
    redis删除操作命令 redis删除命令 redis命令
  • MyBatis中怎么执行删除操作
    在 MyBatis 中执行删除操作通常是通过使用 delete 标签来实现的,具体步骤如下: 在 MyBatis 的 M...
    99+
    2024-03-07
    MyBatis
  • postgresql中timestamp的作用是什么
    在postgresql中,timestamp是一种数据类型,用于存储日期和时间信息。它可以存储从公元前4713年到公元后294276...
    99+
    2024-03-02
    postgresql
  • postgresql中group_concat的作用是什么
    在 PostgreSQL 中,没有内置的 GROUP_CONCAT 函数,但可以使用 STRING_AGG 函数来实现类似的功能。S...
    99+
    2024-04-09
    postgresql
  • postgresql中concat的作用是什么
    在 PostgreSQL 中,concat 函数的作用是将两个或多个字符串连接起来,形成一个新的字符串。concat 函数接受任意数...
    99+
    2024-04-09
    postgresql
  • PostgreSQL中​Declarations的作用是什么
    这篇文章主要介绍“PostgreSQL中Declarations的作用是什么”,在日常操作中,相信很多人在PostgreSQL中Declarations的作用是什么问题上存在疑惑,小编查阅了各式资料,整理出...
    99+
    2024-04-02
  • postgresql中explain的作用是什么
    在PostgreSQL中,EXPLAIN语句用于分析查询语句的执行计划,帮助开发人员和数据库管理员了解系统如何执行特定查询,并且可以...
    99+
    2024-03-06
    postgresql
  • mysql删除操作其实是假删除问题怎么解决
    本篇内容介绍了“mysql删除操作其实是假删除问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!mysql删除操作其实是假删除在 I...
    99+
    2023-07-06
  • Python drop()删除行列的操作方法有哪些
    在进行特征工程、划分数据集的工作中,drop()函数都能派上用场。它可以轻松剔除数据、操作列和操作行等。drop()详细的语法如下:删除行是index,删除列是columns:DataFrame.drop(labels=None, axis...
    99+
    2023-05-14
    Python drop()
  • Linux系统完全删除用户的操作办法是什么
    这篇文章将为大家详细讲解有关Linux系统完全删除用户的操作办法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Linux是一个多用户多任务的系统,系统管理员对于系统中不再需要的用户账号...
    99+
    2023-06-28
  • javascript创建表格,添加删除操作的方法是什么
    这篇文章主要讲解了“javascript创建表格,添加删除操作的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript创建表格,添加删...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作