如何在PostgreSQL中描述一个表?

498 阅读5分钟

要描述数据库中的表,我们不需要用户的任何权限或特许权。任何人都可以描述有关该表的信息。"postgresql describe table "是指检查表的结构。我们可以使用各种不同的例子,通过它们的使用线索来获得数据的描述。在阅读这篇文章时,你就会明白这一点。

用于此目的的基本语法是

\d table-name;
\d+ table-name;

让我们开始讨论关于表的描述。打开psql并提供密码以连接服务器。

假设我们想描述数据库中的所有表,无论是系统的模式还是用户定义的关系。这些都是在给定查询的结果中提到的。

>> \d

该表显示了模式、表的名称、类型和所有者。所有表的模式都是 "公共 "的,因为每个创建的表都存储在那里。表的类型列显示有些是 "序列";这些是由系统创建的表。第一个类型是 "视图",因为这种关系是为用户创建的两个表的视图。视图 "是任何表的一部分,我们想让它对用户可见,而另一部分则对用户隐藏。

"d "是一个元数据命令,用于描述相关表的结构。

同样地,如果我们想只提到用户定义的表的描述,我们在前面的命令中加上 "t"。

>> \dt

你可以看到,所有的表都有一个 "表 "的数据类型。视图和序列被从这一列中移除。要查看某个特定表的描述,我们用"\d "命令加上该表的名称。

在psql中,我们可以通过使用一个简单的命令来获得表的描述。这描述了表的每一列以及每一列的数据类型。假设我们有一个名为 "技术 "的关系,其中有4列。

>> \d technology;

与前面的例子相比,有一些额外的数据,但所有这些关于这个表都没有价值,它是用户定义的。这3列是与系统内部创建的模式有关的。

获得表的详细描述的另一种方法是使用同样的命令,并加上 "+"号。

>> \d+ technology;

这个表显示了列名和数据类型与每列的存储量。每一列的存储容量是不同的。普通 "表示数据类型对于整数数据类型有一个无限的值。而在字符(10)的情况下,表明我们提供了一个限制,所以存储量被标记为 "扩展",这意味着存储值可以被扩展。

表格描述的最后一行,"访问方法:堆",显示了排序过程。我们使用 "堆过程 "进行排序来获取数据。

在这个例子中,描述在某种程度上是有限的。为了增强效果,我们在给出的命令中替换了表名。

>> \d info

这里显示的所有信息都与之前看到的结果表类似。与此不同的是,这里有一些额外的功能。列 "Nullable "显示两个表列被描述为 "非空"。而在 "默认 "列中,我们看到了一个额外的特征,即 "总是作为身份生成"。在创建表时,它被认为是该列的默认值。

在创建一个表之后,一些信息被列出,显示了索引的数量和外键约束。索引显示 "info_id "是一个主键,而约束部分显示来自表 "employee "的外键。

到现在为止,我们已经看到了之前已经创建的表的描述。我们将使用 "create "命令创建一个表,看看列是如何添加属性的。

>> create table items ( id integer, name varchar(10), category varchar(10), order_no integer, address varchar(10), expire_month varchar(10));

你可以看到,每个数据类型都提到了列的名称。有些有大小,而其他的,包括整数,是普通的数据类型。 和创建语句一样,现在我们要使用插入语句。

>> insert into items values (7, ‘sweater’, ‘clothes’, 8, ‘Lahore’);

我们将通过使用select语句来显示表的所有数据。

select * from items;

不管关于表的所有信息是否显示,如果你想限制视图,只想显示特定表的列描述和数据类型,这就是公共模式的一部分。我们在希望显示数据的命令中提到表名。

>> select table_name, column_name, data_type from information_schema.columns where table_name =’passenger’;

在下面的图片中,提到了table_name和column_names,每一列前面都有数据类型,因为整数是一个恒定的数据类型,而且是无限的,所以它不需要有一个关键词 "variing "与之对应。

为了更加精确,我们也可以在命令中只使用列名,只显示表的列名。考虑本例中的表 "医院"。

>> select column_name from information_schema.columns where table_name = ‘hospital’;

如果我们在同一命令中使用 "*"来获取模式中存在的所有表的记录,我们将遇到大量的数据,因为所有的数据,包括特定的数据,都显示在表中。

>> select * from information_schema columns where table_name = ‘technology’;

这是存在的一部分数据,因为不可能显示所有的结果值,所以我们从一些数据中截取了一些数据来创建一个小视图。

为了查看数据库模式中所有表的数量,我们使用命令来查看描述。

>> select * from information_schema.tables;

输出显示了模式名称,也显示了表的类型以及表。

就像特定表的总信息一样。如果你想显示模式中存在的所有表的列名,我们应用下面附加的命令。

>> select * from information_schema.columns;

输出显示,有数以千计的行被显示为结果值。这显示了表名、列的所有者、列名和一个非常有趣的列,它显示了列在其表中的位置/位置,它是在哪里创建的。

总结

这篇文章 "如何在POSTGRESQL中描述一个表",解释得很简单,包括命令中的基本术语。描述包括表的列名、数据类型和模式。列在任何表中的位置是postgresql的一个独特功能,使它与其他数据库管理系统不同。