在PostgreSQL中查找NOT NULL的列

All*_*nja 34 sql postgresql information-schema

我为每个表分配了一个可计算可空列的赋值.简单:

 SELECT table_name, count(*) FROM INFORMATION_SCHEMA.COLUMNS
 WHERE is_nullable='NO'
 GROUP BY table_name;
Run Code Online (Sandbox Code Playgroud)


现在我必须修改它来计算"具有属性"NOT NULL""的列.以下代码是否会执行此操作或仅检查天气列名称是否为空?

CREATE TEMP TABLE A AS 
SELECT DISTINCT column_name, table_name AS name FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_name IS NOT NULL
GROUP BY table_name, column_name;

SELECT name, count(*) FROM A
GROUP BY name;
Run Code Online (Sandbox Code Playgroud)

如果没有......有什么建议吗?

Mik*_*ll' 43

没有.

这个查询

SELECT DISTINCT column_name, table_name
FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_name IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

将返回"column_name"列中具有值的所有行.

该表中的所有行将始终在"column_name"列中具有值.

您只需要知道有多少列可以为空并且有多少列是不可空的?

SELECT is_nullable, COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY is_nullable;
Run Code Online (Sandbox Code Playgroud)

按表名计算?我想你可以用它.

SELECT table_name, is_nullable, count(*)
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY table_name, is_nullable
ORDER BY table_name, is_nullable;
Run Code Online (Sandbox Code Playgroud)

  • 对于那些希望列出具有“NOT NULL”约束的所有列的谷歌员工:“SELECT table_name, column_name FROM information_schema.columns WHERE table_schema = 'public' AND is_nullable = 'NO';`。根据需要更改`table_schema = 'public'`。 (5认同)