检查SQL中是否存在该列

在SQL中,更准确地说,列是任何关系数据库或表的构建块。SQL中的列表示存储在其中的数据的实体类型。它包含关于数据的各种属性,例如数据类型、数据遵循的格式以及插入到该列中的数据应遵循的约束或规则。

但是,您可能认为找出表中是否存在列并不是什么大问题。尽管这种情况似乎不太常见,但没有什么比尝试选择值或将值插入到不存在的列中更令人恼火的了。

因此,验证表中是否存在给定列是很好的,特别是在处理一个非常大的新表时。

这正是我们将在这篇文章中讨论的内容。我们将探讨可用于检查给定列是否存在于数据库表中的所有方法。

SQL列

让我们回到SQL基础知识,讨论一下什么是列以及它需要什么。

在SQL中,列是存储特定类型数据的数据库表中的垂直结构。列由不同的特征组成,或者更恰当地说,由属性组成。这些定义了该列是什么以及它与其他列的区别。

它们包括以下内容:

  • 名称——表中的每个列都有一个唯一的名称,用于在SQL查询中引用它。
  • 数据类型-在SQL中,每列都有一个定义的数据类型,指定它可以保存的数据类型(例如,INTEGER, VARCHAR, DATE)。
  • 约束—您可以将列约束视为控制如何存储其中的数据的一些规则。例如,一些常见的约束包括NOT NULL,它阻止您存储空值或NULL值。
  • 默认值-可以为列分配默认值。这确保了如果在插入行时不提供值,则默认值将用作占位符,而不是添加NULL值。这在处理外部数据源和导入时非常有用。

在了解了列的基础知识之后,让我们继续学习如何在给定的表中验证它们的存在。

方法1:信息模式

如果您使用MySQL数据库,那么您可能熟悉“information_schema”数据库,或者更准确地说,熟悉系统目录。

这是一个数据库的数据库。它包含关于服务器中对象的所有元数据信息。

检查表中是否存在列的一种方法是查询信息模式,如下所示:

选择COLUMN_NAME

从INFORMATION_SCHEMA。列

WHERE TABLE_NAME = TABLE_NAME AND COLUMN_NAME = ' COLUMN_NAME ';

如果找到表名和匹配的列名,这将返回所选列的信息。

方法二:描述语句

在其他数据库中,例如MySQL和PostgreSQL,它们支持SHOW COLUMNS和DESCRIBE语句,允许我们显示关于表列的信息。

语法如下:

SHOW COLUMNS FROM table_name LIKE 'column_name'

这将显示与指定名称匹配的列。

方法三:Sys.columns

在SQL Server中,我们可以通过查询“sys. SQL”来检查一个列是否存在于表中。列”目录视图。这类似于SQL Server的“information_schema”。

查询语法如下:

选择的名字

从sys.columns

WHERE object_id = object_id ('table_name') AND name = 'column_name';

结论

在本文中,我们探讨了用于检查给定数据库表中是否存在列的各种技术。