Você está na página 1de 38

Un esquema de base de datos se especifica mediante un conjunto de definiciones expresadas mediante un lenguaje especial llamado lenguaje de definicin de datos

(LDD).

Por ejemplo, la siguiente instruccin en el lenguaje SQL define la tabla cuenta: create table cuenta (nmero-cuenta char(10), saldo integer) La ejecucin de la instruccin LDD anterior crea la tabla cuenta. Adems, actualiza un conjunto especial de tablas denominado diccionario de datos o directorio de datos.

Un diccionario de datos contiene metadatos, es decir, datos acerca de los datos. El esquema de una tabla es un ejemplo de metadatos. Un sistema de base de datos consulta el diccionario de datos antes de leer o modificar los datos reales.

Los valores de datos almacenados en la base de datos deben satisfacer ciertas restricciones de consistencia. Por ejemplo, supngase que el saldo de una cuenta no debe caer por debajo de $1000. El LDD proporciona facilidades para especificar tales restricciones. Los sistemas de bases de datos comprueban estas restricciones cada vez que se actualiza la base de datos.

Proporciona rdenes para la definicin de esquemas de relacin, borrado de relaciones, creacin de ndices y modificacin de esquemas de relacin. Incluye rdenes para la definicin de vistas.

Incluye rdenes para la especificacin de las restricciones de integridad que deben satisfacer los datos almacenados en la base de datos. Las actualizaciones que violen las restricciones de integridad se rechazan. Incluye rdenes para especificar derechos de acceso para las relaciones y vistas.

Es decir, el LDD de SQL permite la especificacin no slo de un conjunto de relaciones, sino tambin de alguna informacin relativa a esas relaciones, incluyendo:
El esquema de cada relacin El dominio de valores asociado a cada atributo Las restricciones de integridad El conjunto de ndices que se deben mantener por cada relacin Informacin de seguridad y autorizacin para cada relacin La estructura de almacenamiento fsico de cada relacin en disco.

SQL permite incluir en la declaracin de dominio de un atributo la especificacin not null y de este modo se prohbe la insercin de un valor nulo para ese atributo. Cualquier modificacin de la base de datos que conduzca a la insercin de un valor nulo en un dominio especificado como not null, generar un diagnstico de error.

Un esquema de relacin se define utilizando la orden


create table: create table r (A1D1, A2D2, AnDn, Arestriccin-integridad1S. A restriccin-integridadkS)

donde r es el nombre de la relacin, cada Ai es el nombre de un atributo del esquema de relacin r y Di es el dominio de los valores del atributo Ai.

Las restricciones de integridad vlidas incluyen: primary key (Aj1, Aj2,,Ajm): la especificacin de clave primaria dice que los atributos Aj1, Aj2,,Ajm forman la clave primaria de la relacin. Los atributos clave primaria deben ser no nulos y nicos; es decir, ninguna tupla puede tener un valor nulo para un atributo de la clave primaria y ningn par de tuplas de la relacin pueden ser iguales en todos los atributos clave primaria1. Aunque la especificacin de clave primaria es opcional, es generalmente buena idea especificar una clave primaria para cada relacin. check (P): la clusula check especifica un predicado P que debe satisfacer cada tupla de la relacin.

Si como resultado de una insercin o modificacin, una tupla toma valores nulos para cualquiera de los atributos que forman parte de la clave primaria, o si tiene el mismo valor que otra tupla de la relacin para stos, SQL notifica el error y la actualizacin no se lleva a cabo. De forma anloga ocurre lo mismo si falla la condicin check de una tupla.

De manera predeterminada, null es un valor vlido para cualquier atributo en SQL, a menos que se especifique con not null. Un atributo se puede declarar para que no sea nulo de la forma siguiente:
nmero-cuenta char(10) not null

SQL tambin soporta una restriccin de integridad unique (Aj1, Aj2,,Ajm) La especificacin unique indica que los atributos Aj1, Aj2,,Ajm forman una clave candidata; es decir, no puede haber dos tuplas en la relacin con todos los atributos que forman la clave candidata iguales. Sin embargo, se permite que los atributos que forman la clave candidata sean nulos, a menos que se hayan declarado como not null.

Un uso habitual de la clusula check es el de asegurar que los valores de los atributos satisfacen unas condiciones determinadas, constituyendo as un poderoso sistema de tipos.

Elimina una base de datos Slo puede ser ejecutado por el propietario de la base de datos No puede ser ejecutado mientras algn usuario est conectado a la base de datos. DROP DATABASE [ IF EXISTS ] name

Remueve un ndice Para ejecutar este comando, debes ser el propietario del ndice.
DROP INDEX [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

Es una extensin de PostgreSQL, no existe en el estndar SQL .

Remueve un esquema de la base de datos. Un esquema solo puede ser removida por el propietario o por un superusuario DROP SCHEMA [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

Para borrar una relacin de una base de datos SQL, se utiliza la orden drop table. Dicha orden borra de la base de datos toda la informacin sobre la relacin eliminada.

drop table r

DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

Una relacin solo puede ser eliminada por su propietario. Esta instruccin elimina tambin ndices (index), reglas (rules), disparadores (triggers) y restricciones (constraints) que existan para la relacin fuente.

Remueve un disparador Slo lo puede hacer el propietario de la relacin a la que pertenece el trigger DROP TRIGGER [ IF EXISTS ] name ON table [ CASCADE | RESTRICT ]

Remueve una vista existente Slo el propietario de la tabla puede remover la vista DROP VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

Modifica los atributos de una base de datos. Slo el propietario de la base de datos o un superusuario puede cambiar la configuracin de la base de datos. La base de datos actual no puede ser renombrada. Esta instruccin es una extensin de PostgreSQL

ALTER DATABASE name [ [ WITH ] option [ ... ] ] where option can be: CONNECTION LIMIT connlimit ALTER DATABASE name RENAME TO new_name ALTER DATABASE name OWNER TO new_owner ALTER DATABASE name SET TABLESPACE new_tablespace ALTER DATABASE name SET configuration_parameter { TO | = } { value | DEFAULT } ALTER DATABASE name SET configuration_parameter FROM CURRENT ALTER DATABASE name RESET configuration_parameter ALTER DATABASE name RESET ALL

Cambia la definicin de un esquema No hay una instruccin en el estndar de SQL para modificar un esquema ALTER SCHEMA name RENAME TO new_name ALTER SCHEMA name OWNER TO new_owner

Modifica la definicin de un ndice existente. Es una extensin de PostreSQL ALTER INDEX name RENAME TO new_name

Cambia la definicin de un dominio existente. ALTER DOMAIN name { SET DEFAULT expression | DROP DEFAULT } ALTER DOMAIN name { SET | DROP } NOT NULL ALTER DOMAIN name ADD domain_constraint ALTER DOMAIN name DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ] ALTER DOMAIN name OWNER TO new_owner ALTER DOMAIN name SET SCHEMA new_schema

La instruccin alter table se utiliza para aadir atributos a una relacin existente. La sintaxis de la instruccin es la siguiente:

alter table r add A D


donde r es el nombre de una relacin existente, A es el nombre del atributo que se desea aadir y D es el dominio del atributo A.

Se pueden eliminar atributos de una relacin utilizando la orden alter table r drop A donde r es el nombre de una relacin existente y A es el nombre de un atributo de la relacin. Muchos sistemas de bases de datos no permiten el borrado de atributos, aunque s permiten el borrado de una tabla completa.

Modifica la definicin de una relacin existente. ALTER TABLE [ ONLY ] name [ * ] action [, ... ] ALTER TABLE [ ONLY ] name [ * ] RENAME [ COLUMN ] column TO new_column ALTER TABLE name RENAME TO new_name ALTER TABLE name SET SCHEMA new_schema

Donde la accin es: ADD [ COLUMN ] column type [ column_constraint [ ... ] ] DROP [ COLUMN ] [ IF EXISTS ] column [ RESTRICT | CASCADE ] ALTER [ COLUMN ] column [ SET DATA ] TYPE type [ USING expression ] ALTER [ COLUMN ] column SET DEFAULT expression ALTER [ COLUMN ] column DROP DEFAULT ALTER [ COLUMN ] column { SET | DROP } NOT NULL ALTER [ COLUMN ] column SET STATISTICS integer ALTER [ COLUMN ] column SET ( attribute_option = value [, ... ] ) ALTER [ COLUMN ] column RESET ( attribute_option [, ... ] ) ALTER [ COLUMN ] column SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }

ADD table_constraint DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ] DISABLE TRIGGER [ trigger_name | ALL | USER ] ENABLE TRIGGER [ trigger_name | ALL | USER ] ENABLE REPLICA TRIGGER trigger_name ENABLE ALWAYS TRIGGER trigger_name DISABLE RULE rewrite_rule_name ENABLE RULE rewrite_rule_name ENABLE REPLICA RULE rewrite_rule_name ENABLE ALWAYS RULE rewrite_rule_name

CLUSTER ON index_name SET WITHOUT CLUSTER SET WITH OIDS SET WITHOUT OIDS SET ( storage_parameter = value [, ... ] ) RESET ( storage_parameter [, ... ] ) INHERIT parent_table NO INHERIT parent_table OWNER TO new_owner SET TABLESPACE new_tablespace

Descripcin ADD COLUMN: Agrega una nueva columna DROP COLUMN: Elimina una columna de la tabla SET DATA TYPE: Cambia el tipo de una columna de la relacin SET/DROP DEFAULT: Pone o elimina los valores predeterminados de una columna. Estos valores tendrn efecto sobre los comandos de insercin subsecuentes. SET/DROP NOT NULL: Modifica el valor de NO NULO a la columna .

ADD table_constraint: Esta forma agrega una nueva restriccin a una relacin usando la misma sintaxis de CREATE TABLE. DROP CONSTRAINT: Elimina una restriccin existente en una relacin OWNER: Modifica el propietario RENAME: Cambia el nombre de la tabla SET SCHEMA: Mueve la relacin a otro esquema.