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

Puede crear y modificar tablas, restricciones, índices y relaciones en Access escribiendo consultas de definición de datos en la vista SQL. En este artículo se explican las consultas de definición de datos y cómo usarlas para crear tablas, restricciones, índices y relaciones. Este artículo también puede ayudarle a decidir cuándo usar una consulta de definición de datos.

En este artículo

Información general

A diferencia de otras consultas de Access, una consulta de definición de datos no recupera datos. En su lugar, una consulta de definición de datos usa el lenguaje de definición de datos para crear, modificar o eliminar objetos de base de datos.

Nota: El lenguaje de definición de datos (DDL) forma parte del lenguaje de consulta estructurado (SQL).

Las consultas de definición de datos pueden ser muy cómodas. Puede eliminar y volver a crear partes del esquema de base de datos periódicamente simplemente ejecutando algunas consultas. Considere la posibilidad de usar una consulta de definición de datos si está familiarizado con las instrucciones SQL y tiene previsto eliminar y volver a crear tablas, restricciones, índices o relaciones determinados.

Advertencia: El uso de consultas de definición de datos para modificar objetos de base de datos puede ser arriesgado, ya que las acciones no van acompañadas de cuadros de diálogo de confirmación. Si comete un error, puede perder datos o cambiar accidentalmente el diseño de una tabla. Tenga cuidado al usar una consulta de definición de datos para modificar los objetos de la base de datos. Si no es responsable de mantener la base de datos que está usando, consulte con el administrador de la base de datos antes de ejecutar una consulta de definición de datos.

Importante: Realice una copia de seguridad de las tablas implicadas antes de ejecutar una consulta de definición de datos.

Palabras clave DDL

Palabra clave

Uso

CREATE

Cree un índice o tabla que aún no exista.

ALTER

Modificar una tabla o columna existente.

DROP

Eliminar una tabla, columna o restricción existente.

ADD

Agregue una columna o una restricción a una tabla.

COLUMN

Usar con ADD, ALTER o DROP

RESTRICCIÓN

Usar con ADD, ALTER o DROP

INDEX

Usar con CREATE

TABLE

Usar con ALTER, CREATE o DROP

Principio de página

Crear o modificar una tabla

Para crear una tabla, use un comando CREAR TABLA. Un comando CREAR TABLA tiene la siguiente sintaxis:

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

Los únicos elementos necesarios de un comando CREAR TABLA son el propio comando CREAR TABLA y el nombre de la tabla, pero normalmente querrá definir algunos campos u otros aspectos de la tabla. Considere este sencillo ejemplo.

Supongamos que desea crear una tabla para almacenar el nombre, el año y el precio de los coches usados que está pensando en comprar. Quiere permitir hasta 30 caracteres para el nombre y 4 para el año. Para usar una consulta de definición de datos para crear la tabla, haga lo siguiente:

Nota: Es posible que primero deba habilitar el contenido de la base de datos para que se ejecute una consulta de definición de datos:

  • En la Barra de mensajes, haga clic en Habilitar contenido.

Crear una tabla

  1. En la pestaña Crear , en el grupo Macros & Código , haga clic en Diseño de consulta.

  2. En la pestaña Diseño , en el grupo Tipo de consulta , haga clic en Definición de datos.

    La cuadrícula de diseño está oculta y se muestra la pestaña del objeto de vista SQL.

  3. Escriba la instrucción SQL siguiente:

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

  4. En la pestaña Diseño, en el grupo Resultados, haga clic en Ejecutar.

Modificar una tabla

Para modificar una tabla, use un comando ALTER TABLE. Puede usar un comando ALTER TABLE para agregar, modificar o quitar (quitar) columnas o restricciones. Un comando ALTER TABLE tiene la siguiente sintaxis:

ALTER TABLE table_name predicate

donde predicado puede ser cualquiera de los siguientes:

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

ADD CONSTRAINT multifield_constraint

ALTER COLUMN field type[(size)]

DROP COLUMN field

DROP CONSTRAINT constraint

Supongamos que desea agregar un campo de texto de 10 caracteres para almacenar información sobre la condición de cada coche. Puede hacer lo siguiente:

  1. En la pestaña Crear , en el grupo Macros & Código , haga clic en Diseño de consulta.

  2. En la pestaña Diseño , en el grupo Tipo de consulta , haga clic en Definición de datos.

    La cuadrícula de diseño está oculta y se muestra la pestaña del objeto de vista SQL.

  3. Escriba la instrucción SQL siguiente:

    ALTER TABLE Cars ADD COLUMN Condition TEXT(10)

  4. En la pestaña Diseño, en el grupo Resultados, haga clic en Ejecutar.

Principio de página

Crear un índice

Para crear un índice en una tabla existente, use un comando CREATE INDEX. Un comando CREAR ÍNDICE tiene la siguiente sintaxis:

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

Los únicos elementos necesarios son el comando CREATE INDEX, el nombre del índice, el argumento ON, el nombre de la tabla que contiene los campos que desea indizar y la lista de campos que se incluirán en el índice.

  • El argumento DESC hace que el índice se cree en orden descendente, lo que puede ser útil si ejecuta con frecuencia consultas que buscan valores superiores para el campo indizado o que ordenan el campo indexado en orden descendente. De forma predeterminada, se crea un índice en orden ascendente.

  • El argumento WITH PRIMARY establece el campo o campos indizados como la clave principal de la tabla.

  • El argumento WITH DISALLOW NULL hace que el índice requiera que se escriba un valor para el campo indizado( es decir, que no se permiten valores nulos).

Supongamos que tiene una tabla denominada Automóviles con campos que almacenan el nombre, el año, el precio y la condición de los coches usados que está pensando en comprar. Supongamos también que la tabla se ha vuelto grande y que suele incluir el campo año en las consultas. Puede crear un índice en el campo Año para ayudar a las consultas a devolver resultados más rápidamente mediante el procedimiento siguiente:

  1. En la pestaña Crear , en el grupo Macros & Código , haga clic en Diseño de consulta.

  2. En la pestaña Diseño , en el grupo Tipo de consulta , haga clic en Definición de datos.

    La cuadrícula de diseño está oculta y se muestra la pestaña del objeto de vista SQL.

  3. Escriba la instrucción SQL siguiente:

    CREATE INDEX YearIndex ON Cars (Año)

  4. En la pestaña Diseño, en el grupo Resultados, haga clic en Ejecutar.

Principio de página

Crear una restricción o una relación

Una restricción establece una condición lógica que un campo o una combinación de campos deben cumplir cuando se insertan valores. Por ejemplo, una restricción UNIQUE impide que el campo restringido acepte un valor que duplicaría un valor existente para el campo.

Una relación es un tipo de restricción que hace referencia a los valores de un campo o combinación de campos de otra tabla para determinar si se puede insertar un valor en el campo restringido o en la combinación de campos. No se usa una palabra clave especial para indicar que una restricción es una relación.

Para crear una restricción, use una cláusula CONSTRAINT en un comando CREATE TABLE o ALTER TABLE. Existen dos tipos de cláusulas CONSTRAINT: una para crear una restricción en un solo campo y otra para crear una restricción en varios campos.

Restricciones de un solo campo

Una cláusula CONSTRAINT de un solo campo sigue inmediatamente la definición del campo que restringe y tiene la siguiente sintaxis:

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

Supongamos que tiene una tabla denominada Automóviles con campos que almacenan el nombre, el año, el precio y la condición de los coches usados que está pensando en comprar. Supongamos también que con frecuencia olvida introducir un valor para la condición del coche y que siempre desea registrar esta información. Puede crear una restricción en el campo Condición que impida dejar el campo vacío mediante el procedimiento siguiente:

  1. En la pestaña Crear , en el grupo Macros & Código , haga clic en Diseño de consulta.

  2. En la pestaña Diseño , en el grupo Tipo de consulta , haga clic en Definición de datos.

    La cuadrícula de diseño está oculta y se muestra la pestaña del objeto de vista SQL.

  3. Escriba la instrucción SQL siguiente:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL

  4. En la pestaña Diseño, en el grupo Resultados, haga clic en Ejecutar.

Ahora supongamos que, después de un tiempo, se da cuenta de que hay muchos valores similares en el campo Condición que deben ser iguales. Por ejemplo, algunos de los coches tienen un valor de Condición de mala y otros tienen un valor de malo.

Nota: Si desea seguir los procedimientos restantes, agregue algunos datos falsos a la tabla Automóviles que creó en los pasos anteriores.

Después de limpiar los valores para que sean más coherentes, podría crear una tabla, denominada CarCondition, con un campo, denominado Condición, que contiene todos los valores que desea usar para la condición de automóviles:

  1. En la pestaña Crear , en el grupo Macros & Código , haga clic en Diseño de consulta.

  2. En la pestaña Diseño , en el grupo Tipo de consulta , haga clic en Definición de datos.

    La cuadrícula de diseño está oculta y se muestra la pestaña del objeto de vista SQL.

  3. Escriba la instrucción SQL siguiente:

    CREATE TABLE CarCondition (Texto de condiciones(10))

  4. En la pestaña Diseño, en el grupo Resultados, haga clic en Ejecutar.

  5. Cree una clave principal para la tabla mediante una instrucción ALTER TABLE:

    ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMARY KEY

  6. Para insertar los valores del campo Condición de la tabla Automóviles en la nueva tabla CarCondition, escriba la siguiente instrucción SQL en la pestaña del objeto de vista SQL:

    INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;

    Nota: La instrucción SQL de este paso es una consulta de datos anexados. A diferencia de una consulta de definición de datos, una consulta de datos anexados termina con un punto y coma.

  7. En la pestaña Diseño, en el grupo Resultados, haga clic en Ejecutar.

Crear una relación mediante una restricción

Para exigir que cualquier nuevo valor insertado en el campo Condición de la tabla Automóviles coincida con un valor del campo Condición de la tabla CarCondition, puede crear una relación entre CarCondition y Cars en el campo denominado Condición mediante el procedimiento siguiente:

  1. En la pestaña Crear , en el grupo Macros & Código , haga clic en Diseño de consulta.

  2. En la pestaña Diseño , en el grupo Tipo de consulta , haga clic en Definición de datos.

    La cuadrícula de diseño está oculta y se muestra la pestaña del objeto de vista SQL.

  3. Escriba la instrucción SQL siguiente:

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

  4. En la pestaña Diseño, en el grupo Resultados, haga clic en Ejecutar.

Restricciones de varios campos

Una cláusula CONSTRAINT de varios campos solo se puede usar fuera de una cláusula de definición de campo y tiene la siguiente sintaxis:

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 otro ejemplo que use la tabla Automóviles. Supongamos que desea asegurarse de que no haya dos registros en la tabla Automóviles que tengan el mismo conjunto de valores para Nombre, Año, Condición y Precio. Puede crear una restricción UNIQUE que se aplique a estos campos mediante el procedimiento siguiente:

  1. En la pestaña Crear , en el grupo Macros & Código , haga clic en Diseño de consulta.

  2. En la pestaña Diseño , en el grupo Tipo de consulta , haga clic en Definición de datos.

    La cuadrícula de diseño está oculta y se muestra la pestaña del objeto de vista SQL.

  3. Escriba la instrucción SQL siguiente:

    ALTER TABLE Cars ADD CONSTRAINT NoDupes UNIQUE (nombre, año, condición, precio)

  4. En la pestaña Diseño, en el grupo Resultados, haga clic en Ejecutar.

Principio de página

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.

Las comunidades le ayudan a formular y responder preguntas, enviar comentarios y leer a expertos con conocimientos extensos.