Alguns SGBDs como Oracle, MySQL e MariaDB possuem um
DESCRIBE comando que retorna informações sobre tabelas e visualizações. Vai DESCRIBE table em que table é o nome da tabela ou exibição, e também pode ser seguido por um nome de coluna se você quiser apenas informações sobre uma coluna específica. PostgreSQL não tem um
DESCRIBE TABLE comando como tal, mas existem alternativas. O \d Comando
Se você estiver usando o
psql , uma maneira rápida de retornar informações da tabela é com o \d comando. Este comando mostra informações sobre tabelas, visualizações, visualizações materializadas, índices, sequências ou tabelas estrangeiras. Podemos, portanto, usar este comando como um DESCRIBE TABLE alternativo. Sintaxe
A sintaxe fica assim:
\d[S+] [ pattern ] Aqui,
pattern pode ser o nome da tabela (ou outro objeto) ou pode ser uma expressão regular. Se \d é usado sem um pattern argumento, é equivalente a \dtvmsE que mostrará uma lista de todas as tabelas visíveis, visualizações, visualizações materializadas, sequências e tabelas estrangeiras. Por padrão, apenas objetos criados pelo usuário são mostrados, mas você pode fornecer um padrão ou o
S modificador para incluir objetos do sistema. Exemplo
Aqui está um exemplo de uso de
\d para retornar informações sobre uma tabela chamada actor :\d public.actor Resultado:
Table "public.actor"
+-------------+-----------------------------+-----------+----------+-----------------------------------------+
| Column | Type | Collation | Nullable | Default |
+-------------+-----------------------------+-----------+----------+-----------------------------------------+
| actor_id | integer | | not null | nextval('actor_actor_id_seq'::regclass) |
| first_name | character varying(45) | | not null | |
| last_name | character varying(45) | | not null | |
| last_update | timestamp without time zone | | not null | now() |
+-------------+-----------------------------+-----------+----------+-----------------------------------------+
Indexes:
"actor_pkey" PRIMARY KEY, btree (actor_id)
"idx_actor_last_name" btree (last_name)
Referenced by:
TABLE "film_actor" CONSTRAINT "film_actor_actor_id_fkey" FOREIGN KEY (actor_id) REFERENCES actor(actor_id) ON UPDATE CASCADE ON DELETE RESTRICT
Triggers:
last_updated BEFORE UPDATE ON actor FOR EACH ROW EXECUTE FUNCTION last_updated() O comando também retorna índices, restrições, regras e gatilhos associados. Além disso, para tabelas externas, o servidor externo associado é mostrado.
Informações estendidas
Podemos anexar um sinal de mais (
+ ) para revelar informações estendidas, que incluem quaisquer comentários associados às colunas da tabela, a presença de OIDs na tabela, a definição de exibição se a relação for uma exibição e uma configuração de identidade de réplica não padrão e o nome do método de acesso se a relação tem um método de acesso. Exemplo:
\d+ public.actor Resultado:
Table "public.actor"
+-------------+-----------------------------+-----------+----------+-----------------------------------------+----------+--------------+-------------+
| Column | Type | Collation | Nullable | Default | Storage | Stats target | Description |
+-------------+-----------------------------+-----------+----------+-----------------------------------------+----------+--------------+-------------+
| actor_id | integer | | not null | nextval('actor_actor_id_seq'::regclass) | plain | | |
| first_name | character varying(45) | | not null | | extended | | |
| last_name | character varying(45) | | not null | | extended | | |
| last_update | timestamp without time zone | | not null | now() | plain | | |
+-------------+-----------------------------+-----------+----------+-----------------------------------------+----------+--------------+-------------+
Indexes:
"actor_pkey" PRIMARY KEY, btree (actor_id)
"idx_actor_last_name" btree (last_name)
Referenced by:
TABLE "film_actor" CONSTRAINT "film_actor_actor_id_fkey" FOREIGN KEY (actor_id) REFERENCES actor(actor_id) ON UPDATE CASCADE ON DELETE RESTRICT
Triggers:
last_updated BEFORE UPDATE ON actor FOR EACH ROW EXECUTE FUNCTION last_updated()
Access method: heap Retornar apenas tipos de objetos específicos
Conforme mencionado, if
\d é usado sem um pattern argumento, é equivalente a \dtvmsE que mostrará uma lista de todas as tabelas visíveis, visualizações, visualizações materializadas, sequências e tabelas estrangeiras. Podemos anexar qualquer uma das letras
E , i , m , s , t e v , que significa tabela estrangeira, índice, visão materializada, sequência, tabela e visão, respectivamente. Podemos especificar qualquer uma ou todas essas letras, em qualquer ordem, para obter uma listagem de objetos desses tipos. Aqui está um exemplo de anexação de
t para limitar os dados retornados a apenas tabelas:\dt actor Resultado:
List of relations +--------+-------+-------+----------+ | Schema | Name | Type | Owner | +--------+-------+-------+----------+ | public | actor | table | postgres | +--------+-------+-------+----------+
Coringas
Aqui está um exemplo de inclusão de um operador curinga, para que todas as tabelas que começam com
film são devolvidos:\dt film* Resultado:
List of relations +--------+---------------+-------+----------+ | Schema | Name | Type | Owner | +--------+---------------+-------+----------+ | public | film | table | postgres | | public | film_actor | table | postgres | | public | film_category | table | postgres | +--------+---------------+-------+----------+
O information_schema.columns Visualizar
Se você não estiver usando o
psql (e mesmo se você está usando psql ), então você sempre pode consultar o information_schema.columns visualizar. Essa visualização pode ser usada para retornar informações semelhantes às que obteríamos com DESCRIBE table em outros SGBDs. SELECT
column_name,
data_type,
character_maximum_length AS max_length,
character_octet_length AS octet_length,
is_nullable,
column_default
FROM
information_schema.columns
WHERE
table_schema = 'public' AND
table_name = 'actor'; Resultado:
+-------------+-----------------------------+------------+--------------+-------------+-----------------------------------------+
| column_name | data_type | max_length | octet_length | is_nullable | column_default |
+-------------+-----------------------------+------------+--------------+-------------+-----------------------------------------+
| actor_id | integer | NULL | NULL | NO | nextval('actor_actor_id_seq'::regclass) |
| first_name | character varying | 45 | 180 | NO | NULL |
| last_name | character varying | 45 | 180 | NO | NULL |
| last_update | timestamp without time zone | NULL | NULL | NO | now() |
+-------------+-----------------------------+------------+--------------+-------------+-----------------------------------------+ Essa exibição contém muito mais colunas e você pode adicionar/remover colunas conforme necessário.
O
information_schema views são praticamente padrão na maioria dos principais DBMSs e, portanto, podemos consultar essa view nesses DBMSs também.