数据分析(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水平能快速进步!

你可能感兴趣的:(数据分析,数据库,数据挖掘,postgresql)