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

news/2024/7/9 23:12:14 标签: 数据分析, 数据库, 数据挖掘, postgresql

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水平能快速进步!


http://www.niftyadmin.cn/n/5014291.html

相关文章

python将dataframe按需绘制折线图、柱状图、双坐标图

目录 绘制TI折线图绘制 import matplotlib.pyplot as plt# 设置中文显示 plt.rcParams[font.sans-serif] [SimHei] # 指定默认字体 plt.rcParams[axes.unicode_minus] False # 解决负号显示问题绘制TI折线图 def draw_TI(df_TI_night, output_TI_png, sector_id, terrain, …

Linux 中的 chrt 命令及示例

Linux 中的chrt命令因操作进程的实时属性而闻名。它设置或检索现有 PID 的实时调度属性,或使用给定属性运行命令。 句法: $ chrt [选项] 优先级命令 [参数 ...]$ chrt [选项] -p [优先级] pid$ chrt [options] priority command [argument ...] $ chrt [options] -p [priori…

C++和C#程序语言的区别

一直学习C++和C#,两者之间的区别总结一下 目录 一、两种语言概述 C++语言 C#语言 二、两种语言对比 2.1运行依赖

mysql课堂笔记 mac

目录 启动mac上的mysql 进入mysql mac windows 创建数据库 创建表 修改字段数据类型 修改字段名 增加字段 删除字段 启动mac上的mysql sudo /usr/local/mysql/support-files/mysql.server start 直接输入你的开机密码即可。 编辑 进入mysql mac sudo /usr/local…

生信教程|替代模型选择

摘要 由于教程时间比较久远,因此不建议实操,仅阅读以了解学习。 在运行基于可能性的系统发育分析之前,用户需要决定模型中应包含哪些自由参数:是否应该为所有替换假设单一速率(如序列进化的 Jukes-Cantor 模型&#xf…

【视频图像篇】FastStone Capture屏幕长截图软件

【视频图像篇】FastStone Capture屏幕长截图软件 FastStone Capture最常用的一款屏幕长截图软件—【蘇小沐】 文章目录 【视频图像篇】FastStone Capture屏幕长截图软件实验环境1、启动界面2、自定义工具栏3、自动保存 (一)长截图1、捕获滚动窗口2、捕获…

云原生架构如何助力大数据和AI技术在软件开发中的深度整合

文章目录 1. 云原生架构简介2. 大数据与云原生的融合a. 弹性计算和存储b. 容器化大数据应用c. 数据湖和数据仓库 3. AI与云原生的深度融合a. 弹性AI模型训练b. 容器化AI应用c. 自动化部署和监控 4. 对软件开发的影响a. 更快的开发周期b. 更低的成本c. 更高的灵活性和可伸缩性 5…

刷题leetcode-两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答…