O esquema de informações é um esquema integrado comum a todos os bancos de dados do Cloud Spanner. É possível executar consultas SQL em tabelas no INFORMATION_SCHEMA
para buscar metadados de esquema para um banco de dados.
Por exemplo, a consulta a seguir busca os nomes de todas as tabelas definidas pelo usuário em um banco de dados:
SELECT
table_name
FROM
information_schema.tables
WHERE
table_catalog = '' and table_schema = ''
Uso
- Os dados de
INFORMATION_SCHEMA
estão disponíveis apenas nas interfaces SQL (por exemplo,executeQuery
egcloud spanner databases execute-sql
). Os outros métodos de leitura única do Cloud Spanner não são compatíveis comINFORMATION_SCHEMA
. - É possível usar as consultas do
INFORMATION_SCHEMA
em uma transação somente leitura, mas não em uma transação de leitura e gravação. - É possível usar as consultas do
INFORMATION_SCHEMA
com inatividades fortes e limitadas ou com limites de carimbo de data/hora de inatividade exata.
Tabelas no esquema
SCHEMATA
A tabela INFORMATION_SCHEMA.SCHEMATA
lista os esquemas no banco de dados. Eles incluem o esquema de informações e um esquema sem nome (a partir de agora chamado de "esquema padrão"), que contém as tabelas que você define.
Nome da coluna | Tipo | Descrição |
---|---|---|
CATALOG_NAME |
STRING |
O nome do catálogo. Esta coluna existe para compatibilidade com tabelas de esquema de informações padrão do SQL. Essa coluna é sempre uma string vazia. |
SCHEMA_NAME |
STRING |
O nome do esquema. Está vazio para o esquema padrão e não está vazio para esquemas com nome. |
INFORMATION_SCHEMA.DATABASE_OPTIONS
Esta tabela lista as opções definidas no banco de dados.
Nome da coluna | Tipo | Descrição |
---|---|---|
CATALOG_NAME |
STRING |
O nome do catálogo. É sempre uma string vazia. |
SCHEMA_NAME |
STRING |
O nome do esquema. É uma string vazia se não tiver nome. |
OPTION_NAME |
STRING |
O nome da opção de banco de dados. |
OPTION_TYPE |
STRING |
O tipo de dados da opção de banco de dados. |
OPTION_VALUE |
STRING |
O valor da opção do banco de dados. |
INFORMATION_SCHEMA.TABLES
Esta tabela lista as tabelas em um esquema.
Nome da coluna | Tipo | Descrição |
---|---|---|
TABLE_CATALOG |
STRING |
O nome do catálogo. É sempre uma string vazia. |
TABLE_SCHEMA |
STRING |
O nome do esquema. É uma string vazia se não tiver nome. |
TABLE_NAME |
STRING |
O nome da tabela. |
PARENT_TABLE_NAME |
STRING |
O nome da tabela pai, se essa tabela estiver entrelaçada ou NULL . |
ON_DELETE_ACTION |
STRING |
Isso é definido como CASCADE ou NO ACTION para tabelas intercaladas e NULL caso contrário. Consulte as instruções TABLE para mais informações. |
SPANNER_STATE |
STRING |
Uma tabela pode passar por vários estados durante a criação, se houver operações em massa. Por exemplo, quando a tabela é criada com uma chave externa que requer preenchimento dos índices. Os estados possíveis são:
|
INFORMATION_SCHEMA.COLUMNS
Esta tabela lista as colunas de uma tabela.
Nome da coluna | Tipo | Descrição |
---|---|---|
TABLE_CATALOG |
STRING |
O nome do catálogo. É sempre uma string vazia. |
TABLE_SCHEMA |
STRING |
O nome do esquema. É uma string vazia se não tiver nome. |
TABLE_NAME |
STRING |
O nome da tabela. |
COLUMN_NAME |
STRING |
O nome da coluna. |
ORDINAL_POSITION |
INT64 |
A posição ordinal da coluna na tabela, começando com um valor de 1. |
COLUMN_DEFAULT |
BYTES |
Incluído para atender ao padrão SQL. Sempre NULL . |
DATA_TYPE |
STRING |
Incluído para atender ao padrão SQL. Sempre NULL . |
IS_NULLABLE |
STRING |
Uma string que indica se a coluna é anulável. De acordo com o padrão SQL, a string é YES ou NO , em vez de um valor booleano. |
SPANNER_TYPE |
STRING |
O tipo de dados da coluna. |
IS_GENERATED |
STRING |
Uma string que indica se a coluna foi gerada. A string é
ALWAYS para uma coluna gerada ou NEVER
para uma coluna não gerada. |
GENERATION_EXPRESSION |
STRING |
É uma string que representa a expressão SQL de uma coluna gerada.
NULL se a coluna não for gerada. |
IS_STORED |
STRING |
Uma string que indica se a coluna gerada está armazenada.
A string é sempre YES para colunas geradas e
NULL para colunas não geradas. |
SPANNER_STATE |
STRING |
O estado atual da coluna. Uma nova coluna gerada armazenada adicionada a
uma tabela existente pode passar por vários estados observáveis pelo usuário
antes de ser totalmente utilizável. Os valores possíveis são:
|
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
Essa tabela contém uma linha para cada restrição definida para as tabelas no banco de dados.
Nome da coluna | Tipo | Descrição |
---|---|---|
CONSTRAINT_CATALOG |
STRING |
É sempre uma string de tentativa. |
CONSTRAINT_SCHEMA |
STRING |
O nome de esquema da restrição. É uma string vazia se não tiver nome. |
CONSTRAINT_NAME |
STRING |
O nome da restrição. |
TABLE_CATALOG |
STRING |
O nome de catálogo da tabela restrita. É sempre uma string vazia. |
TABLE_SCHEMA |
STRING |
O nome do esquema da tabela restrita. É uma string vazia se não tiver nome. |
TABLE_NAME |
STRING |
O nome da tabela restrita. |
CONSTRAINT_TYPE |
STRING |
O tipo da restrição. Os valores possíveis são:
|
IS_DEFERRABLE |
STRING |
Sempre NO . |
INITIALLY_DEFERRED |
STRING |
Sempre NO . |
ENFORCED |
STRING |
Sempre YES . |
INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE
Esta tabela lista tabelas que definem ou são usadas por restrições. Inclui tabelas que definem restrições PRIMARY KEY
e UNIQUE
. Também inclui as tabelas referenciadas de definições de FOREIGN KEY
.
Nome da coluna | Tipo | Descrição |
---|---|---|
TABLE_CATALOG |
STRING |
O nome do catálogo da tabela restrita. É sempre uma string vazia. |
TABLE_SCHEMA |
STRING |
O nome de esquema da tabela restrita. É uma string vazia se não tiver nome. |
TABLE_NAME |
STRING |
O nome da tabela restrita. |
CONSTRAINT_CATALOG |
STRING |
O nome de catálogo da restrição. É sempre uma string vazia. |
CONSTRAINT_SCHEMA |
STRING |
O nome de esquema da restrição. É uma string vazia se não tiver nome. |
CONSTRAINT_NAME |
STRING |
O nome da restrição. |
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
Esta tabela contém uma linha sobre cada restrição FOREIGN KEY
.
Nome da coluna | Tipo | Descrição |
---|---|---|
CONSTRAINT_CATALOG |
STRING |
O nome do catálogo da FOREIGN KEY. É sempre uma string vazia. |
CONSTRAINT_SCHEMA |
STRING |
O nome de esquema da FOREIGN KEY. É uma string vazia se não tiver nome. |
CONSTRAINT_NAME |
STRING |
O nome da FOREIGN KEY. |
UNIQUE_CONSTRAINT_CATALOG |
STRING |
O nome de catálogo da restrição PRIMARY KEY ou UNIQUE que a FOREIGN KEY faz referência. É sempre uma string vazia. |
UNIQUE_CONSTRAINT_SCHEMA |
STRING |
O nome de esquema da restrição PRIMARY KEY ou UNIQUE que a FOREIGN KEY faz referência. É uma string vazia se não tiver nome. |
UNIQUE_CONSTRAINT_NAME |
STRING |
O nome da restrição PRIMARY KEY ou UNIQUE que a FOREIGN KEY faz referência. |
MATCH_OPTION |
STRING |
Sempre SIMPLE . |
UPDATE_RULE |
STRING |
Sempre NO ACTION . |
DELETE_RULE |
STRING |
Sempre NO ACTION . |
SPANNER_STATE |
STRING |
O estado atual da chave externa. O Spanner não começa a aplicar a restrição até que os índices de backup da chave externa sejam criados e preenchidos. Quando os índices estiverem prontos, o Spanner começará a aplicar a restrição para novas transações enquanto valida os dados existentes. Os valores possíveis e os estados que eles representam são:
|
INFORMATION_SCHEMA.CHECK_CONSTRAINTS
A tabela INFORMATION_SCHEMA.CHECK_CONSTRAINTS
contém uma linha sobre cada
restrição CHECK
definida pela palavra-chave CHECK
ou NOT NULL
.
Nome da coluna | Tipo | Descrição |
---|---|---|
CONSTRAINT_CATALOG |
STRING |
O nome de catálogo da restrição. Essa coluna nunca é nula, mas sempre uma string vazia. |
CONSTRAINT_SCHEMA |
STRING |
O nome de esquema da restrição. É uma string vazia se não tiver nome. |
CONSTRAINT_NAME |
STRING |
O nome da restrição. Essa coluna jamais é nula. Se não for especificado explicitamente na definição do esquema, um nome definido pelo sistema será atribuído. |
CHECK_CLAUSE |
STRING |
As expressões da restrição CHECK . Essa coluna jamais é nula. |
SPANNER_STATE |
STRING |
O estado atual da restrição CHECK . Essa coluna jamais é nula. Os estados possíveis são os seguintes:
|
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
Essa tabela contém uma linha sobre cada coluna das tabelas de TABLE_CONSTRAINTS
que são restritas como chaves por uma restrição PRIMARY KEY
, FOREIGN KEY
ou UNIQUE
. Estas são as colunas das tabelas que definem as restrições.
Nome da coluna | Tipo | Descrição |
---|---|---|
CONSTRAINT_CATALOG |
STRING |
O nome de catálogo da restrição. É sempre uma string vazia. |
CONSTRAINT_SCHEMA |
STRING |
O nome de esquema da restrição. Essa coluna jamais é nula. É uma string vazia se não tiver nome. |
CONSTRAINT_NAME |
STRING |
O nome da restrição. |
TABLE_CATALOG |
STRING |
O nome de catálogo da coluna restrita. É sempre uma string vazia. |
TABLE_SCHEMA |
STRING |
O nome de esquema da coluna restrita. Essa coluna jamais é nula. É uma string vazia se não tiver nome. |
TABLE_NAME |
STRING |
O nome da tabela da coluna restrita. |
COLUMN_NAME |
STRING |
O nome da coluna. |
ORDINAL_POSITION |
INT64 |
A posição ordinal da coluna na chave da restrição, começando com um valor de 1 . |
POSITION_IN_UNIQUE_CONSTRAINT |
INT64 |
Para FOREIGN KEY s, a posição ordinal da coluna na restrição exclusiva, começando com um valor de 1 . Essa coluna é nula para outros tipos de restrição. |
INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
Essa tabela contém uma linha sobre cada coluna usada por uma restrição. Inclui as colunas PRIMARY KEY
e UNIQUE
, além das colunas referenciadas das restrições FOREIGN KEY
.
Nome da coluna | Tipo | Descrição |
---|---|---|
TABLE_CATALOG |
STRING |
O nome de catálogo da tabela de colunas. É sempre uma string vazia. |
TABLE_SCHEMA |
STRING |
O nome de esquema da tabela de colunas. Essa coluna jamais é nula. É uma string vazia se não tiver nome. |
TABLE_NAME |
STRING |
O nome da tabela da coluna. |
COLUMN_NAME |
STRING |
O nome da coluna que é usada pela restrição. |
CONSTRAINT_CATALOG |
STRING |
O nome de catálogo da restrição. É sempre uma string vazia. |
CONSTRAINT_SCHEMA |
STRING |
O nome de esquema da restrição. É uma string vazia se não tiver nome. |
CONSTRAINT_NAME |
STRING |
O nome da restrição. |
INFORMATION_SCHEMA.INDEXES
Essa tabela lista os índices em um esquema.
Nome da coluna | Tipo | Descrição |
---|---|---|
TABLE_CATALOG |
STRING |
O nome do catálogo. É sempre uma string vazia. |
TABLE_SCHEMA |
STRING |
O nome do esquema. É uma string vazia se não tiver nome. |
TABLE_NAME |
STRING |
O nome da tabela. |
INDEX_NAME |
STRING |
O nome do índice. Tabelas com uma especificação PRIMARY KEY têm uma entrada de pseudo-índice gerada com o nome PRIMARY_KEY , que permite que os campos da chave primária sejam determinados. |
INDEX_TYPE |
STRING |
O tipo do índice. O tipo é INDEX ou PRIMARY_KEY . |
PARENT_TABLE_NAME |
STRING |
Os índices secundários podem ser intercalados em uma tabela pai, conforme discutido em Como criar um índice secundário. Essa coluna contém o nome dessa tabela pai ou NULL se o índice não for intercalado. |
IS_UNIQUE |
BOOL |
Se as chaves do índice precisarem ser exclusivas. |
IS_NULL_FILTERED |
BOOL |
Se o índice incluir entradas com valores NULL . |
INDEX_STATE |
STRING |
O estado atual do índice. Os valores possíveis e os estados que eles representam são:
|
SPANNER_IS_MANAGED |
BOOL |
Verdadeiro se o índice for gerenciado pelo Cloud Spanner. Caso contrário, falso. Os índices secundários de backup de chaves externas são gerenciados pelo Cloud Spanner. |
INFORMATION_SCHEMA.INDEX_COLUMNS
Essa tabela lista as colunas em um índice.
Nome da coluna | Tipo | Descrição |
---|---|---|
TABLE_CATALOG |
STRING |
O nome do catálogo. É sempre uma string vazia. |
TABLE_SCHEMA |
STRING |
O nome do esquema. É uma string vazia se não tiver nome. |
TABLE_NAME |
STRING |
O nome da tabela. |
INDEX_NAME |
STRING |
O nome do índice. |
COLUMN_NAME |
STRING |
O nome da coluna. |
ORDINAL_POSITION |
INT64 |
A posição ordinal da coluna no índice (ou chave primária), começando com um valor de 1. Esse valor é NULL para colunas sem chave (por exemplo, colunas especificadas na cláusula STORING de um índice). |
COLUMN_ORDERING |
STRING |
O pedido da coluna. O valor é ASC ou DESC para colunas de chave e NULL para colunas não chave (por exemplo, colunas especificadas na cláusula STORING de um índice). |
IS_NULLABLE |
STRING |
Uma string que indica se a coluna é anulável. De acordo com o padrão SQL, a string é YES ou NO , em vez de um valor booleano. |
SPANNER_TYPE |
STRING |
O tipo de dados da coluna. |
INFORMATION_SCHEMA.COLUMN_OPTIONS
Essa tabela lista as opções de coluna em uma tabela.
Nome da coluna | Tipo | Descrição |
---|---|---|
TABLE_CATALOG |
STRING |
O nome do catálogo. É sempre uma string vazia. |
TABLE_SCHEMA |
STRING |
O nome do esquema. O nome está vazio para o esquema padrão e não vazio para outros esquemas (por exemplo, o próprio INFORMATION_SCHEMA ).
Essa coluna jamais é nula. |
TABLE_NAME |
STRING |
O nome da tabela. |
COLUMN_NAME |
STRING |
O nome da coluna. |
OPTION_NAME |
STRING |
Um identificador SQL que identifica com exclusividade a opção. Esse identificador é a chave da cláusula OPTIONS em DDL.
|
OPTION_TYPE |
STRING |
Um nome do tipo de dados que é o tipo desse valor de opção. |
OPTION_VALUE |
STRING |
Um literal SQL que descreve o valor dessa opção. O valor dessa coluna precisa ser analisável como parte de uma consulta. A expressão resultante da análise do valor precisa ser convertida em OPTION_TYPE . Essa coluna jamais é nula. |
Exemplos
Retorne informações sobre cada tabela no esquema do usuário:
SELECT
t.table_name,
t.parent_table_name
FROM
information_schema.tables AS t
WHERE
t.table_catalog = ''
AND
t.table_schema = ''
ORDER BY
t.table_catalog,
t.table_schema,
t.table_name
Retorna informações sobre as colunas na tabela do usuário MyTable
:
SELECT
t.column_name,
t.spanner_type,
t.is_nullable
FROM
information_schema.columns AS t
WHERE
t.table_catalog = ''
AND
t.table_schema = ''
AND
t.table_name = 'MyTable'
ORDER BY
t.table_catalog,
t.table_schema,
t.table_name,
t.ordinal_position
Retorne informações sobre cada índice no esquema do usuário:
SELECT
t.table_name,
t.index_name,
t.parent_table_name
FROM
information_schema.indexes AS t
WHERE
t.table_catalog = ''
AND
t.table_schema = ''
AND
t.index_type != 'PRIMARY_KEY'
ORDER BY
t.table_catalog,
t.table_schema,
t.table_name,
t.index_name
Retorna todas as colunas que usam opções diferentes do padrão:
SELECT
t.table_name,
t.column_name,
t.option_type,
t.option_value,
t.option_name
FROM
information_schema.column_options AS t
WHERE
t.table_catalog = ''
AND
t.table_schema = ''
Retorna a versão do otimizador de consultas que o banco de dados está usando no momento:
SELECT
s.OPTION_NAME,
s.OPTION_VALUE
FROM
INFORMATION_SCHEMA.DATABASE_OPTIONS s
WHERE
s.SCHEMA_NAME=''
AND s.OPTION_NAME = 'optimizer_version'
A seguir
- Saiba mais sobre as ferramentas de introspecção disponíveis para ajudar você a investigar problemas de banco de dados.