Crear o modificar tablas o índices mediante una consulta de definición de datos

En Microsoft Office Access 2007, resulta fácil crear y modificar tablas, restricción e índice en la vista Diseño, así como crear relación mediante la ventana Relaciones. Asimismo, puede crear y modificar estas entidades escribiendo consultas de definición de datos en la vista SQL.

En este artículo se describen las consultas de definición de datos y se muestra cómo utilizar esas consultas para crear tablas, índices, restricciones y relaciones. Este artículo también le puede ayudar a decidir cuándo debe utilizar una consulta de definición de datos.

¿Qué desea hacer?

Saber cuándo debe utilizarse una consulta de definición de datos

Crear o modificar una tabla

Crear un índice

Crear una restricción o una relación

Saber cuándo debe utilizarse una consulta de definición de datos

A diferencia de otras consultas, una consulta de definición de datos no recupera datos. La mayoría de las consultas utilizan el lenguaje de manipulación de datos (DML), que comprende comandos del lenguaje de consulta estructurado (SQL) que especifican cómo los datos de los objetos de base de datos existentes se combinan y se manipulan para generar los resultados de datos deseados. Las consultas de definición de datos utilizan el lenguaje de definición de datos (DDL), que incluye comandos SQL que especifican la definición de los objetos de base de datos que almacenan o indizan los datos, así como comandos SQL que controlan el acceso de los usuarios a los objetos de base de datos. En Office Access 2007, una consulta de definición de datos define o cambia la definición de un objeto de base de datos.

En general, debe utilizar las interfaces de diseño gráfico que Office Access 2007 proporciona (por ejemplo, la vista Diseño y la ventana Relaciones) para crear tablas, restricciones, índices y relaciones. Sin embargo, si tiene tablas que elimina y vuelve a crear con frecuencia, el uso de estas interfaces podría requerir mucho tiempo. Mediante una consulta de definición de datos, puede escribir una consulta una vez y, a continuación, ejecutarla de nuevo cuando sea necesario. Considere la posibilidad de utilizar una consulta de definición de datos sólo si está familiarizado con las instrucciones SQL y si va a eliminar y volver a crear con frecuencia determinadas tablas, restricciones o índices.

Importante   El uso de consultas de definición de datos para modificar objetos de base de datos puede ser arriesgado porque las acciones no van acompañadas de cuadros de diálogo de confirmación. Si comete un error, puede perder datos o cambiar el diseño de una tabla sin darse cuenta. Tenga cuidado cuando utilice una consulta de definición de datos para modificar objetos de la base de datos. Si no es responsable de mantener la base de datos que va a utilizar, debe consultar con el administrador de esa base de datos antes de ejecutar una consulta de definición de datos. Además, se recomienda hacer una copia de seguridad de las tablas en las que va a ejecutar este tipo de consulta.

Volver al principio

Crear o modificar una tabla

Para crear una tabla, puede utilizar un comando CREATE TABLE. Un comando CREATE TABLE 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 CREATE TABLE son el propio comando CREATE TABLE, el nombre de la tabla, al menos un campo y el tipo de datos de cada campo. Examinemos un ejemplo sencillo.

Supongamos que desea crear una tabla para almacenar el nombre, el año y el precio de los vehículos usados que está considerando comprar. Desea permitir hasta 30 caracteres para el nombre y 4 caracteres para el año. Si desea utilizar una consulta de definición de datos para crear la tabla, siga este procedimiento:

Nota   Primero debe habilitar el contenido de la base de datos para que pueda ejecutarse una consulta de definición de datos.

  1. En la Barra de mensajes, haga clic en Opciones y, a continuación, haga clic en Habilitar este contenido.

  2. En el grupo Otros de la ficha Crear, haga clic en Diseño de consulta.

  3. Cierre el cuadro de diálogo Mostrar tabla.

  4. En la ficha 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 ficha de objeto de la vista SQL.

  5. Escriba la siguiente instrucción SQL:

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

  6. En el grupo Resultados de la ficha Diseño, haga clic en Ejecutar.

Modificar una tabla

Para modificar una tabla, utilice un comando ALTER TABLE. Puede utilizar un comando ALTER TABLE para agregar, modificar o quitar columnas o restricciones. Un comando ALTER TABLE tiene la siguiente sintaxis:

ALTER TABLE table_name predicate

donde predicate puede ser cualquiera de los siguientes valores:

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 el estado de cada vehículo. Puede seguir este procedimiento:

  1. En el grupo Otros de la ficha Crear, haga clic en Diseño de consulta.

  2. Cierre el cuadro de diálogo Mostrar tabla.

  3. En la ficha 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 ficha de objeto de la vista SQL.

  4. Escriba la siguiente instrucción SQL:

    ALTER TABLE Cars ADD COLUMN Condition TEXT(10)

  5. En el grupo Resultados de la ficha Diseño, haga clic en Ejecutar.

Volver al principio

Crear un índice

Para crear un índice en una tabla existente, se utiliza un comando CREATE INDEX. Un comando CREATE INDEX 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 se van a indizar y la lista de los campos que se van a incluir en el índice.

  • El argumento DESC hace que el índice se cree en orden descendente, lo cual puede resultar útil si se ejecutan frecuentemente consultas que busquen valores superiores para el campo indizado o que ordenen el campo indizado en orden descendente. De forma predeterminada, los índices se crean en orden ascendente.

  • El argumento WITH PRIMARY establece el campo indizado o los campos indizados como 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, no se permiten valores nulos.

Supongamos que tiene una tabla denominada Cars (Vehículos) con campos en los que se almacenan el nombre, el año, el precio y el estado de los vehículos usados que está considerando comprar. Supongamos asimismo que la tabla ha adquirido un tamaño considerable y que incluye con frecuencia el campo de año en las consultas. Puede crear un índice en el campo de año para que las consultas devuelvan resultados más rápidamente mediante el procedimiento siguiente:

  1. En el grupo Otros de la ficha Crear, haga clic en Diseño de consulta.

  2. Cierre el cuadro de diálogo Mostrar tabla.

  3. En la ficha 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 ficha de objeto de la vista SQL.

  4. Escriba la siguiente instrucción SQL:

    CREATE INDEX YearIndex ON Cars (Year)

  5. En el grupo Resultados de la ficha Diseño, haga clic en Ejecutar.

Volver al principio

Crear una restricción o una relación

Una restricción establece una condición lógica que debe cumplir un campo o una combinación de campos cuando se insertan valores. Por ejemplo, una restricción UNIQUE impide que el campo restringido acepte un valor que duplique 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 una combinación de campos de otra tabla para determinar si un valor se puede insertar en el campo restringido o la combinación de campos restringidos.

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

Restricciones de un solo campo

Una cláusula CONSTRAINT de un solo campo figura inmediatamente después de 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 Cars (Vehículos) con campos en los que se almacenan el nombre, el año, el precio y el estado de los vehículos usados que está considerando comprar. Supongamos asimismo que con frecuencia olvida especificar un valor para el estado del vehículo y que siempre desea registrar esta información. Puede crear una restricción en el campo de estado que evite que ese campo se quede en blanco, siguiendo este procedimiento:

  1. En el grupo Otros de la ficha Crear, haga clic en Diseño de consulta.

  2. Cierre el cuadro de diálogo Mostrar tabla.

  3. En la ficha 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 ficha de objeto de la vista SQL.

  4. Escriba la siguiente instrucción SQL:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL

  5. En el grupo Resultados de la ficha Diseño, haga clic en Ejecutar.

Ahora supongamos que, después de un tiempo, se da cuenta de que hay muchos valores similares en el campo del estado de los vehículos que deberían ser iguales. Por ejemplo, algunos de los vehículos tienen como valor de estado pobre y otros tienen el valor deficiente. Después de limpiar los valores de modo que sean más coherentes, podrá crear una tabla denominada CarCondition (EstadoVehículo) con un campo denominado Condition (Estado), que contenga todos los valores que desee utilizar para el estado de los vehículos:

  1. En el grupo Otros de la ficha Crear, haga clic en Diseño de consulta.

  2. Cierre el cuadro de diálogo Mostrar tabla.

  3. En la ficha 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 ficha de objeto de la vista SQL.

  4. Escriba la siguiente instrucción SQL:

    CREATE TABLE CarCondition (Condition TEXT(10))

  5. En el grupo Resultados de la ficha Diseño, haga clic en Ejecutar.

  6. Para insertar los valores del campo Condition (Estado) de la tabla Cars (Vehículos) en la nueva tabla CarCondition (EstadoVehículo), escriba la siguiente instrucción SQL en la ficha de objeto de la vista SQL:

    INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;

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

  7. En el grupo Resultados de la ficha Diseño, haga clic en Ejecutar.

Para requerir que cualquier nuevo valor que se inserte en el campo Condition (Estado) de la tabla Cars (Vehículos) coincida con un valor del campo Condition (Estado) de la tabla CarCondition (EstadoVehículo), puede crear una relación entre CarCondition y Cars en el campo Condition, siguiendo este procedimiento:

  1. En el grupo Otros de la ficha Crear, haga clic en Diseño de consulta.

  2. Cierre el cuadro de diálogo Mostrar tabla.

  3. En la ficha 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 ficha de objeto de la vista SQL.

  4. Escriba la siguiente instrucción SQL:

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

  5. En el grupo Resultados de la ficha Diseño, haga clic en Ejecutar.

Restricciones de varios campos

Una cláusula CONSTRAINT de varios campos puede utilizarse sólo 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}]}

Examinemos otro ejemplo con la tabla Cars (Vehículos). Supongamos que desea asegurarse de que no haya dos registros en la tabla Cars con el mismo conjunto de valores para el nombre, el año, el estado y el precio. Puede crear una restricción UNIQUE que se aplique a estos campos siguiendo este procedimiento:

  1. En el grupo Otros de la ficha Crear, haga clic en Diseño de consulta.

  2. Cierre el cuadro de diálogo Mostrar tabla.

  3. En la ficha 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 ficha de objeto de la vista SQL.

  4. Escriba la siguiente instrucción SQL:

    ALTER TABLE Cars ADD CONSTRAINT NoDupes UNIQUE (name, year, condition, price)

  5. En el grupo Resultados de la ficha Diseño, haga clic en Ejecutar.

Volver al principio

Se aplica a: Access 2007



¿Le ha sido útil esta información?

No

¿Cómo podemos mejorarlo?

255 caracteres restantes

Para proteger su privacidad, no incluya información de contacto en sus comentarios. Revisar política de privacidad.

¡Gracias por sus comentarios!

Recursos de soporte técnico

Cambiar idioma