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

Importante:  Este artículo se ha traducido con traducción automática; vea la declinación de responsabilidades. Para su referencia, puede encontrar la versión en inglés de este artículo aquí.

Puede crear y modificar tablas, restricciones, índices y relaciones. Para ello, puede escribir consultas de definición de datos en la vista SQL.

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

Nota: No puede usar estos procedimientos en una base de datos web.

En este artículo:

Información general

Crear o modificar una tabla

Crear un índice

Crear una restricción o una relación

Información general

A diferencia de otras consultas, una consulta de definición de datos no recupera datos. En cambio, 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 resultar muy útiles. Puede eliminar y volver a crear partes del esquema de la base de datos regularmente con tan solo ejecutar 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 y relaciones concretos.

Advertencia: 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 use 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 usar, debe consultar al administrador de esa base de datos antes de ejecutar una consulta de definición de datos.

Importante: Haga una copia de seguridad de todas las tablas involucradas antes de ejecutar una consulta de definición de datos.

Palabras clave de DDL

Palabra clave

Uso

CREATE

Crea un índice o una tabla que aún no existe.

ALTER

Modifica una tabla o una columna existente.

DROP

Elimina una tabla, columna o restricción existente.

ADD

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

COLUMN

Se usa con ADD, ALTER o DROP.

CONSTRAINT

Se usa con ADD, ALTER o DROP.

INDEX

Se usa con CREATE.

TABLE

Se usa con ALTER, CREATE o DROP.

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 y el nombre de la tabla, aunque por lo general es posible que desee definir algunos campos u otros aspectos de la tabla. Vea este sencillo ejemplo.

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 poder ejecutar la consulta de definición de datos:

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

Crear una tabla

  1. En la ficha Crear, en el grupo Macros y código, haga clic en Diseño de la 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 Cars (Name TEXT(30), Year TEXT(4), Price CURRENCY)

  5. En la ficha Diseño, en el grupo Resultados, 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 predicado puede ser cualquiera de las siguientes acciones:

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 la ficha Crear, en el grupo Macros y código, haga clic en Diseño de la 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 la ficha Diseño, en el grupo Resultados, 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 la ficha Crear, en el grupo Macros y código, haga clic en Diseño de la 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 la ficha Diseño, en el grupo Resultados, 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. No es necesario usar una palabra clave especial para indicar que una restricción es una relación.

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 la ficha Crear, en el grupo Macros y código, haga clic en Diseño de la 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 la ficha 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 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.

Nota: Si desea seguir con los procedimientos restantes, agregue algunos datos simulados a la tabla Cars que creó en los pasos anteriores.

Después de limpiar los valores para 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 la ficha Crear, en el grupo Macros y código, haga clic en Diseño de la 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 la ficha Diseño, en el grupo Resultados, haga clic en Ejecutar.

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

    MODIFICAR TABLA CarCondition ALTER COLUMNA condición TEXTO RESTRICCIÓN CarConditionPK CLAVE PRINCIPAL

  7. 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.

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

Crear una relación mediante una restricción

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 la ficha Crear, en el grupo Macros y código, haga clic en Diseño de la 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 la ficha 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}]}

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, la condición y el precio. Puede crear una restricción UNIQUE que se aplique a estos campos mediante este procedimiento:

  1. En la ficha Crear, en el grupo Macros y código, haga clic en Diseño de la 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 la ficha Diseño, en el grupo Resultados, haga clic en Ejecutar.

Volver al principio

Nota: Declinación de responsabilidades de traducción automática: Este artículo se ha traducido con un sistema informático sin intervención humana. Microsoft ofrece estas traducciones automáticas para que los hablantes de otros idiomas distintos del inglés puedan disfrutar del contenido sobre los productos, los servicios y las tecnologías de Microsoft. Puesto que este artículo se ha traducido con traducción automática, es posible que contenga errores de vocabulario, sintaxis o gramática.

Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Únase a los participantes de Office Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×