• 数据分析(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'
    );
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    代码的解释如下:
    这个代码是一个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水平能快速进步!

  • 相关阅读:
    微信小程序|使用小程序制作一个核酸检测点查询工具
    java使用bouncycastle加解密
    如何实现超大场景三维模型数据坐标转换
    区域自动滚动,循环滚动
    We have awesome remote U.S. jobs waiting for engineers like you.
    STC8H开发(十五): GPIO驱动Ci24R1无线模块
    彻底搞明白概率论:事件间的关系与运算;频率与概率
    特斯拉Dojo超算:AI训练平台的自动驾驶与通用人工智能之关键
    Skywalking系列学习之Trace Profiling源码分析
    Qt QDialog模式对话框传递数据给主窗口(主窗口->子窗口)
  • 原文地址:https://blog.csdn.net/m0_52792591/article/details/132783070