数据分析(1)——如何用postgres快速找出数据库中所有表格包含空值的列

POSTGRES简介

postgres是一款开源的数据库,好处就在于不会被制裁,之前美国制裁委内瑞拉的时候,禁止委内瑞拉用oracle这款数据库,mysql最后委内瑞拉也用不了了,因为oracle把mysql收购了吗,这是不是也让大家想起了华为和中兴的事情,开源的数据库他的好处在于他的版权不属于任何商业公司,这样用起来也比较放心,至少不会被制裁。
postgres中Linux的教程比较多,对windows用户很不友好,所以写了这篇文章做了简单的介绍。这篇适用于windows系统

代码部分

废话不多说,直接看代码

在这里插入代码片
SELECT table_name, column_name
FROM information_schema.columns
WHERE table_name IN (
    SELECT table_name
    FROM information_schema.tables
    WHERE table_schema = 'public'
)
AND column_name IN (
    SELECT column_name
    FROM information_schema.columns
    WHERE table_name IN (
        SELECT table_name
        FROM information_schema.tables
        WHERE table_schema = 'public'
    )
    AND table_schema = 'public'
    AND is_nullable = 'YES'
);

代码的解释如下:
这个代码是一个SQL查询,用于从 PostgreSQL 数据库中查找包含空值的列,并列出这些列所在的表格和列的名称。以下是对代码的解释:

SELECT table_name, column_name: 这部分查询从 information_schema 视图中选择两个列,即 table_name(表格名称)和 column_name(列名称)。这两列将用于显示包含空值的列所在的表格和列的名称。

FROM information_schema.columns: 这部分指定了查询的数据来源,即 information_schema.columns 视图。information_schema 包含了 PostgreSQL 数据库的元数据信息,允许你查询数据库的结构和元数据。

WHERE table_name IN (…): 这是一个子查询,用于筛选包含空值的列所在的表格。它首先列出了所有位于 public 模式下的表格,以确定我们要在哪些表格中查找包含空值的列。

AND column_name IN (…): 这是另一个子查询,用于筛选包含空值的列。它会检查每个表格中的每一列,并仅选择那些具有以下条件的列:

列所在的表格在前面子查询中被确定为位于 public 模式下。
列被标记为可为空,即 is_nullable 等于 ‘YES’。
最终结果会显示包含空值的列所在的表格名称和列名称。

这个查询会帮助你快速找到数据库中包含空值的列,以便进一步处理或纠正这些数据。请确保在运行此查询之前,你具有足够的数据库权限来访问 information_schema 视图中的元数据信息。

information_schema 是一个系统模式(schema),它在 PostgreSQL 和许多其他关系型数据库管理系统中都存在。这个模式包含了数据库的元数据信息,允许用户查询数据库的结构、对象和其他关于数据库的信息。information_schema 不是用户创建的模式,而是数据库系统自动创建和维护的,用于存储有关数据库对象的元数据。

以下是一些常见的 information_schema 视图和其用途的示例:

tables: 该视图包含有关数据库中所有表格的信息,包括表格的名称、所属模式、创建日期等。

columns: 此视图包含有关表格中列的信息,例如列的名称、数据类型、是否可为空等。

views: 这个视图包含了数据库中所有视图的信息,包括视图的名称、所属模式、定义查询等。

routines: 该视图包含了存储过程、函数和触发器的信息,包括它们的名称、所属模式、参数等。

constraints: 这个视图包含有关表格约束(如主键、外键、唯一约束等)的信息。

sequences: 此视图包含有关数据库中所有序列的信息,包括序列的名称、当前值、增量值等。

information_schema 视图使用户能够查询数据库的元数据信息,这对于了解数据库结构、编写动态查询以及执行数据库维护任务非常有用。请注意,information_schema 视图通常只包含关于数据库对象的元数据信息,而不包含实际的数据。

结语

希望以后我的sql水平能快速进步!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是PostgreSQL数据库支持的所有数据类型的详细信息: | 数据类型 | 文释义 | 作用范围 | 限定 | | --- | --- | --- | --- | | smallint | 小整数 | -32768 到 +32767 的整数 | 2 字节 | | integer | 整数 | -2147483648 到 +2147483647 的整数 | 4 字节 | | bigint | 大整数 | -9223372036854775808 到 +9223372036854775807 的整数 | 8 字节 | | decimal | 定点数 | 用户指定位数的精度 | 可变 | | numeric | 数值 | 与 decimal 类似,但存储空间更小 | 可变 | | real | 单精度浮点数 | 6 位精度 | 4 字节 | | double precision | 双精度浮点数 | 15 位精度 | 8 字节 | | smallserial | 小整数自增序 | 自增的小整数 | 2 字节 | | serial | 整数自增序 | 自增的整数 | 4 字节 | | bigserial | 大整数自增序 | 自增的大整数 | 8 字节 | | boolean | 布尔值 | true 或 false | 1 字节 | | char(n) | 定长字符串 | n 个字符 | n 字节 | | varchar(n) | 可变长度字符串 | 最多 n 个字符 | 变长 | | text | 可变长度字符串 | 任意长度 | 变长 | | date | 日期 | 年月日 | 4 字节 | | time | 时间 | 时分秒 | 8 字节 | | timestamp | 时间戳 | 日期和时间 | 8 字节 | | interval | 时间间隔 | 一段时间 | 16 字节 | | uuid | UUID | 通用唯一识别码 | 16 字节 | | json | JSON | JSON 数据类型 | 变长 | | xml | XML | XML 数据类型 | 变长 | 注:以上数据类型的大小和限定是指默认情况下的大小和限定,实际使用时可能会受到其他因素的影响,如编码方式等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值