Applies ToAccess para Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Pode criar e modificar tabelas, restrições, índices e relações no Access ao escrever consultas de definição de dados na vista SQL. Este artigo explica as consultas de definição de dados e como utilizá-las para criar tabelas, restrições, índices e relações. Este artigo também pode ajudá-lo a decidir quando utilizar uma consulta de definição de dados.

Neste artigo

Descrição geral

Ao contrário de outras consultas do Access, uma consulta de definição de dados não obtém dados. Em vez disso, uma consulta de definição de dados utiliza a Linguagem de Definição de Dados para criar, modificar ou eliminar objetos de base de dados.

Nota: A Linguagem DDL (Data Definition Language) faz parte da Linguagem de Consulta Estruturada (SQL).

As consultas de definição de dados podem ser muito convenientes. Pode eliminar e recriar regularmente partes do esquema da base de dados apenas ao executar algumas consultas. Considere utilizar uma consulta de definição de dados se estiver familiarizado com instruções SQL e planear eliminar e recriar tabelas, restrições, índices ou relações específicas.

Aviso: A utilização de consultas de definição de dados para modificar objetos de base de dados pode ser arriscada, uma vez que as ações não são acompanhadas por caixas de diálogo de confirmação. Se cometer um erro, pode perder dados ou alterar inadvertidamente a estrutura de uma tabela. Tenha cuidado quando utilizar uma consulta de definição de dados para modificar objetos na sua base de dados. Se não for responsável pela manutenção da base de dados que está a utilizar, deve consultar o administrador da base de dados antes de executar uma consulta de definição de dados.

Importante: Faça uma cópia de segurança de todas as tabelas envolvidas antes de executar uma consulta de definição de dados.

Palavras-chave DDL

Palavra-chave

Utilização

CREATE

Crie um índice ou tabela que ainda não exista.

ALTER

Modificar uma tabela ou coluna existente.

DROP

Eliminar uma tabela, coluna ou restrição existente.

ADD

Adicionar uma coluna ou uma restrição a uma tabela.

COLUMN

Utilizar com ADD, ALTER ou DROP

CONSTRAINT

Utilizar com ADD, ALTER ou DROP

INDEX

Utilizar com CREATE

TABLE

Utilizar com ALTER, CREATE ou DROP

Início da Página

Criar ou modificar uma tabela

Para criar uma tabela, utilize um comando CREATE TABLE. Um comando CREATE TABLE tem a seguinte sintaxe:

CREATE TABLE table_name  (field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...][, CONSTRAINT constraint1 [, ...]])

Os únicos elementos necessários de um comando CREATE TABLE são o próprio comando CREATE TABLE e o nome da tabela, mas normalmente irá querer definir alguns campos ou outros aspetos da tabela. Considere este exemplo simples.

Suponha que pretende criar uma tabela para armazenar o nome, o ano e o preço dos carros usados que está a considerar para compra. Quer permitir até 30 carateres para o nome e 4 carateres para o ano. Para utilizar uma consulta de definição de dados para criar a tabela, faça o seguinte:

Nota: Em primeiro lugar, poderá ter de ativar os conteúdos da base de dados para que uma consulta de definição de dados seja executada:

  • Na Barra de Mensagens, clique em Ativar Conteúdo.

Criar uma tabela

  1. No separador Criar , no grupo Macros & Código , clique em Estrutura da Consulta.

  2. No separador Estrutura , no grupo Tipo de Consulta , clique em Definição de Dados.

    A grelha de estrutura está oculta e o separador objeto da vista SQL é apresentado.

  3. Escreva a seguinte instrução SQL:

    CREATE TABLE Cars (Name TEXT(30), Year TEXT(4), Price CURRENCY)

  4. No separador Estrutura, no grupo Resultados, clique em Executar.

Modificar uma tabela

Para modificar uma tabela, utilize um comando ALTER TABLE. Pode utilizar um comando ALTER TABLE para adicionar, modificar ou remover (remover) colunas ou restrições. Um comando ALTER TABLE tem a seguinte sintaxe:

ALTER TABLE table_name predicate

em que o predicado pode ser qualquer um dos seguintes:

ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT constraint]

ADD CONSTRAINT multifield_constraint

ALTER COLUMN field type[(size)]

DROP COLUMN field

DROP CONSTRAINT constraint

Suponha que pretende adicionar um campo de texto de 10 carateres para armazenar informações sobre a condição de cada carro. Pode fazer o seguinte:

  1. No separador Criar , no grupo Macros & Código , clique em Estrutura da Consulta.

  2. No separador Estrutura , no grupo Tipo de Consulta , clique em Definição de Dados.

    A grelha de estrutura está oculta e o separador objeto da vista SQL é apresentado.

  3. Escreva a seguinte instrução SQL:

    ALTER TABLE Cars ADD COLUMN Condition TEXT(10)

  4. No separador Estrutura, no grupo Resultados, clique em Executar.

Início da Página

Criar um índice remissivo

Para criar um índice numa tabela existente, utilize um comando CREATE INDEX. Um comando CREATE INDEX tem a seguinte sintaxe:

CREATE [UNIQUE] INDEX index_name ON table (field1 [DESC][, field2 [DESC], ...]) [WITH {PRIMARY | DISALLOW NULL | IGNORE NULL}]

Os únicos elementos necessários são o comando CREATE INDEX, o nome do índice, o argumento ON, o nome da tabela que contém os campos que pretende indexar e a lista de campos a incluir no índice.

  • O argumento DESC faz com que o índice seja criado por ordem descendente, o que pode ser útil se executar frequentemente consultas que procuram valores superiores para o campo indexado ou que ordenam o campo indexado por ordem descendente. Por predefinição, é criado um índice por ordem ascendente.

  • O argumento COM PRIMÁRIA estabelece o campo ou campos indexados como o chave primária da tabela.

  • O argumento WITH DISALLOW NULL faz com que o índice exija que seja introduzido um valor para o campo indexado, ou seja, não são permitidos valores nulos.

Suponha que tem uma tabela denominada Cars com campos que armazenam o nome, o ano, o preço e a condição dos carros usados que está a considerar para compra. Suponha também que a tabela se tornou grande e que inclui frequentemente o campo ano em consultas. Pode criar um índice no campo Ano para ajudar as consultas a devolver resultados mais rapidamente através do seguinte procedimento:

  1. No separador Criar , no grupo Macros & Código , clique em Estrutura da Consulta.

  2. No separador Estrutura , no grupo Tipo de Consulta , clique em Definição de Dados.

    A grelha de estrutura está oculta e o separador objeto da vista SQL é apresentado.

  3. Escreva a seguinte instrução SQL:

    CREATE INDEX YearIndex ON Cars (Ano)

  4. No separador Estrutura, no grupo Resultados, clique em Executar.

Início da Página

Criar uma restrição ou uma relação

Uma restrição estabelece uma condição lógica que um campo ou combinação de campos tem de cumprir quando os valores são inseridos. Por exemplo, uma restrição UNIQUE impede que o campo restrito aceite um valor que duplicaria um valor existente para o campo.

Uma relação é um tipo de restrição que se refere aos valores de um campo ou combinação de campos noutra tabela para determinar se um valor pode ser inserido no campo restrito ou na combinação de campos. Não utiliza uma palavra-chave especial para indicar que uma restrição é uma relação.

Para criar uma restrição, utilize uma cláusula CONSTRAINT num comando CREATE TABLE ou ALTER TABLE. Existem dois tipos de cláusulas CONSTRAINT: uma para criar uma restrição num único campo e outra para criar uma restrição em vários campos.

Restrições de campo único

Uma cláusula CONSTRAINT de campo único segue imediatamente a definição do campo que restringe e tem a seguinte sintaxe:

CONSTRAINT constraint_name {PRIMARY KEY | UNIQUE | NOT NULL | REFERENCES foreign_table [(foreign_field)] [ON UPDATE {CASCADE | SET NULL}] [ON DELETE {CASCADE | SET NULL}]}

Suponha que tem uma tabela denominada Cars com campos que armazenam o nome, o ano, o preço e a condição dos carros usados que está a considerar para compra. Imagine também que se esquece frequentemente de introduzir um valor para a condição do carro e que pretende registar sempre estas informações. Pode criar uma restrição no campo Condição que o impede de deixar o campo vazio, através do seguinte procedimento:

  1. No separador Criar , no grupo Macros & Código , clique em Estrutura da Consulta.

  2. No separador Estrutura , no grupo Tipo de Consulta , clique em Definição de Dados.

    A grelha de estrutura está oculta e o separador objeto da vista SQL é apresentado.

  3. Escreva a seguinte instrução SQL:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL

  4. No separador Estrutura, no grupo Resultados, clique em Executar.

Agora, suponha que, passado algum tempo, repara que existem muitos valores semelhantes no campo Condição que devem ser os mesmos. Por exemplo, alguns dos carros têm um valor condition de pobre e outros têm um valor de mau.

Nota: Se quiser acompanhar os restantes procedimentos, adicione alguns dados falsos à tabela Carros que criou nos passos anteriores.

Depois de limpar os valores para que sejam mais consistentes, pode criar uma tabela, denominada CarCondition, com um campo, denominado Condição, que contém todos os valores que pretende utilizar para a condição dos automóveis:

  1. No separador Criar , no grupo Macros & Código , clique em Estrutura da Consulta.

  2. No separador Estrutura , no grupo Tipo de Consulta , clique em Definição de Dados.

    A grelha de estrutura está oculta e o separador objeto da vista SQL é apresentado.

  3. Escreva a seguinte instrução SQL:

    Create TABLE CarCondition (Texto da Condição(10))

  4. No separador Estrutura, no grupo Resultados, clique em Executar.

  5. Crie uma chave primária para a tabela com uma instrução ALTER TABLE:

    ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMARY KEY

  6. Para inserir os valores do campo Condição da tabela Carros na nova tabela CarCondition, escreva o seguinte SQL no separador objeto da vista SQL:

    INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;

    Nota: A instrução SQL neste passo é uma consulta Acrescentar. Ao contrário de uma consulta de definição de dados, uma consulta de acréscimo termina com um ponto e vírgula.

  7. No separador Estrutura, no grupo Resultados, clique em Executar.

Criar uma relação com uma restrição

Para exigir que qualquer novo valor inserido no campo Condição da tabela Carros corresponda a um valor do campo Condição na tabela CarCondition, pode criar uma relação entre CarCondition e Cars no campo denominado Condição, através do seguinte procedimento:

  1. No separador Criar , no grupo Macros & Código , clique em Estrutura da Consulta.

  2. No separador Estrutura , no grupo Tipo de Consulta , clique em Definição de Dados.

    A grelha de estrutura está oculta e o separador objeto da vista SQL é apresentado.

  3. Escreva a seguinte instrução SQL:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (Condition)

  4. No separador Estrutura, no grupo Resultados, clique em Executar.

Restrições de múltiplos campos

Uma cláusula CONSTRAINT de múltiplos campos só pode ser utilizada fora de uma cláusula de definição de campo e tem a seguinte sintaxe:

CONSTRAINT constraint_name {PRIMARY KEY (pk_field1[, pk_field2[, ...]]) | UNIQUE (unique1[, unique2[, ...]]) | NOT NULL (notnull1[, notnull2[, ...]]) | FOREIGN KEY [NO INDEX] (ref_field1[, ref_field2[, ...]])   REFERENCES foreign_table   [(fk_field1[, fk_field2[, ...]])] | [ON UPDATE {CASCADE | SET NULL}] [ON DELETE {CASCADE | SET NULL}]}

Considere outro exemplo que utiliza a tabela Carros. Suponha que pretende certificar-se de que não existem dois registos na tabela Carros com o mesmo conjunto de valores para Nome, Ano, Condição e Preço. Pode criar uma restrição UNIQUE que se aplica a estes campos através do seguinte procedimento:

  1. No separador Criar , no grupo Macros & Código , clique em Estrutura da Consulta.

  2. No separador Estrutura , no grupo Tipo de Consulta , clique em Definição de Dados.

    A grelha de estrutura está oculta e o separador objeto da vista SQL é apresentado.

  3. Escreva a seguinte instrução SQL:

    ALTER TABLE Cars ADD CONSTRAINT NoDupes UNIQUE (nome, ano, condição, preço)

  4. No separador Estrutura, no grupo Resultados, clique em Executar.

Início da Página

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.