Capitulo 10 Completo

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 66

CAPITULO 10

Usando sentencias DDL para


Crear y Manejar Tablas
Objetivos
 Después de este capítulo, usted estará en
capacidad de:
 Categorizar los principales objetos de una
base de datos
 Revisar la estructura de una tabla
 Listar los tipos de datos que están disponibles
para las columnas
 Explicar como se crean las restricciones al
momento de crear una tabla
 Describir como trabajan los objetos de un
esquema

9-2
Objetos de la base de datos

OBJETO DESCRIPCIÓN
Tabla Unidad básica de almacenamiento (compuesta de filas y
columnas). Se pueden crear en cualquier momento, no se
necesita definir el tamaño del almacenamiento (se
recomienda) y su estructura se puede redefinir en línea.
Vista Representación lógica de un subconjunto de datos de una
o más tablas
Secuencia Genera valores numéricos
Índice Mejora el rendimiento de algunas consultas
Sinónimo Nombre alternativo de objetos de una base de datos
Otros Procedimientos, funciones, disparadores, clusters, enlaces
a bases de datos y demás

9-3
Reglas para el nombrado
 Los nombres de las tablas y de las columnas
deben:
 Iniciar con una letra.
 Tener una longitud máxima de 30 caracteres.
 Contener sólo los caracteres A-Z, a-z, 0-9, _ (underscore),
$ y #. Los últimos dos no se recomiendan.
 Ser únicos en el mismo esquema (usuario dueño de los
objetos).
 Ser diferentes a las palabras reservadas de Oracle.
 Se puede usar “” para nombrar tablas y usar palabras reservadas.
 No se recomienda.
 Otras recomendaciones.
 Usar nombres que describan el contenido.
 Los nombres no son sensibles a mayúsculas y minúsculas.
9-4
Sentencia CREATE TABLE
CREATE TABLE [Esquema.]Tabla (
Columna1 TipoDeDato [DEFAULT Expresión]
[, Columna2 …]
);

 Esquema, es el nombre del usuario que será dueño de la


tabla.
 DEFAULT Expresión, define el valor por defecto que se
almacena en la columna.
 Esta sentencia es DDL.
 El usuario debe:
 Tener el privilegio CREATE TABLE (con una sentencia DCL).
 Tener espacio de almacenamiento (dbspace).
 Especificar el nombre de la tabla y de las columnas según las
reglas de nombrado.

9-5
Referenciando tablas de otro usuario
SELECT *
FROM [Esquema.]Tabla

 Esquema, colección de objetos que pertenecen a


un usuario.
 Las tablas creadas por otros usuarios, están fuera
del esquema de un usuario.
 Para acceder a ellas, anteponer al nombre de la tabla el
nombre del usuario/esquema.

Empleados

SELECT *
FROM UsuarioB.Empleados
UsuarioB
UsuarioA

9-6
La opción DEFAULT
 Especifica un valor por defecto para una columna
durante una inserción, por ejemplo:
… Emp_FechaContrato DATE DEFAULT SYSDATE,

 El tipo de dato del valor por defecto debe concordar


con el tipo de dato de la columna.
 El valor por defecto:
 Puede ser:
 Un literal, una expresión o una función SQL (Ej: SYSDATE, USER).
 NO puede ser:
 Nombres de otras columnas o seudo-columnas (Ej: ROWID, NEXTVAL,
CURRVAL).

9-7
Creando tablas
 CREATE TABLE
realiza un
COMMIT
automático
(DDL).

 Revisar ejemplo
de creación de
tablas con
definición de
almacenamiento.

9-8
Tipos de tablas en una BD Oracle
 Tablas de usuario.
 Creadas y mantenidas por un usuario.
 Contienen información de una aplicación del
usuario (o de un conjunto de usuarios).

 Tablas del diccionario de datos.


 Creadas y mantenidas por el servidor de bases de
datos Oracle.
 Contienen información propia de la base de datos.
 El dueño es el usuario SYS.
 Normalmente se consultan a través de vistas.

9-9
Tablas del diccionario de datos

PREFIJO DESCRIPCIÓN
USER_ Muestran información de los objetos que pertenecen
usuario/esquema actual.
ALL_ Muestran información de los objetos que el usuario
actual puede acceder.
DBA_ Muestran información de todo el Servidor Oracle.
Sólo las pueden acceder los usuarios que tienen el role
de DBA.
V$ Muestran información de rendimiento del servidor de la
base de datos, el uso de la memoria y los candados
utilizados por la instancia.

9-10
Uso del diccionario de datos

 Para consultar las columnas


de las tablas:
SELECT *
FROM USER_TAB_COLUMNS
9-11
Uso del diccionario de datos
 La vista User_Catalog
tiene un sinónimo que
se llama CAT.

SELECT *
FROM CAT;

9-12
Tipos de datos
Ver Almacenamiento de algunos Tipos de datos
TIPO DE DATO DESCRIPCIÓN
VARCHAR2 (Tamaño) Almacena un valor alfa-numérico de longitud
variable. El tamaño almacenado depende de la
longitud del valor digitado. Longitud máxima
4000 bytes.
CHAR [(Tamaño)] Almacena un valor alfa-numérico de longitud
fija, así el valor especificado sea menor (se
rellena con espacios). El tamaño es opcional
por defecto se define en 1. Longitud máxima
2000.
NUMBER [(Precisión, escala)] Numérico de longitud variable. La precisión (de
(Ver ejemplos de escala 1 a 38) es el número total de dígitos y la escala
negativa) (-84 a 127) los dígitos al lado derecho del
punto decimal. La precisión por defecto es el
valor máximo y la escala por defecto es cero.
9-13
Tipos de datos

TIPO DE DATO DESCRIPCIÓN


DATE Valores fechas y horas entre 1/1/4712 A.C y 12/31/9999
D.C. Almacenan año, mes, día, hora, minuto y segundo. El
formato por defecto que Oracle da a la fecha se define con
el parámetro NLS_DATE_FORMAT.
LONG Carácter de longitud variable máximo de 2 GB. No se puede
copiar cuando una tabla es creada con una subconsulta. Una
columna con este tipo de dato no se puede usar en una
cláusula GROUP BY y ORDER BY.
Sólo una columna por tabla. No se le pueden definir
restricciones. Es mejor usar CLOB.
RAW (Tamaño) Binarios sin formato. Longitud máxima 2000 bytes.
LONG RAW Binarios sin formato. Longitud variable máximo de 2 GB.

9-14
Tipos de datos
 Una tabla puede tener varias columnas de tipo LOB (BLOB,
CLOB, NCLOB, BFILE), pero no pueden ser usados en
DISTINCT, GROUP BY, ORDER BY o JOINs.
TIPO DE DATO DESCRIPCIÓN
BLOB Acepta archivos de imágenes y video
(Binary Large OBject) Binarios hasta de 4 GB o lo definido para el tamaño
del bloque de la base de datos.
CLOB Acepta bastante texto. El tamaño máximo se calcula
(Character Large OBject) igual que para BLOB de 4 GB.
NCLOB Acepta datos CLOB en Unicode, soportado
universalmente. El tamaño máximo se calcula igual
que para BLOB.
BFILE Binarios almacenados en un archivo externo con
tamaño máximo de 4 GB.
9-15
Tipos de datos
TIPO DE DATO DESCRIPCIÓN
TIMESTAMP Almacena desde años hasta fracciones de segundo. La
[(precisión)] precisión (de 0 a 9, por defecto 6) indica cuantos dígitos
se van a tomar para las fracciones de segundo
Teniendo en cuenta la zona horaria.
TIMESTAMP [(precisión)] WITH TIME ZONE, adiciona nombre
de la zona horaria.
TIMESTAMP [(precisión)] WITH LOCAL TIME ZONE, adiciona
nombre de la zona horaria de la sesión del usuario.
INTERVAL YEAR Almacena intervalos de fecha tomando años y meses.
[(precisión_año)] TO La precisión_año por defecto es 2 (dígitos del año). Se
MONTH usa para representar diferencia entre dos valores fecha.
INTERVAL DAY Almacena intervalos de fecha tomando días, horas,
[(precisión_días)] TO minutos y segundos. La precisión_días por defecto es 2
SECOND y acepta valores de 0 a 9. La precisión_segundos por
[(precisión_segundos)] defecto es 6 y acepta valores de 0 a 9.
9-16
Uso de TIMESTAMP
 SYSDATE retorna fecha
y hora del servidor de
la base de datos, pero
no la fracción.

 El campo TIMESTAMP
NO maneja zona
horaria.

9-17
Uso de TIMESTAMP WITH TIME ZONE
 TIMESTAMP WITH TIME ZONE
almacena el desplazamiento, hora
en relación con el meridiano
Greenwich (UTC, Coordinated
Universal Time).
 En el Ejemplo, se almacena la
hora con respecto a la zona
horaria de Bogotá (UTC -5).

9-18
Uso de TIMESTAMP WITH LOCAL TIME ZONE

 TIMESTAMP WITH LOCAL


TIME ZONE.
 Almacena la hora local en
relación a la zona horaria del
servidor Oracle.
 NO se almacena el
desplazamiento (zona horaria) en
la columna.
 Útil cuando siempre se debe
mostrar la fecha en la zona
horaria del sistema cliente.
 Usuario consulta el dato.
 Oracle lo muestra en la zona
horaria de la sesión local del
usuario (sin mostrar
desplazamiento).

9-19
Uso de INTERVAL YEAR TO MONTH
 Convertir una cadena a INTERVAL, según formato
de YEAR y MONTH:
 Años y meses.
 Sólo años.
 Sólo meses.
 Meses pasados a años.
 60 meses son 5 años.

9-20
Uso de función EXTRACT
 Uso de función EXTRACT con tipo de dato INTERVAL.
EXTRACT(YEAR|MONTH|DAY|.. FROM expresión fecha y hora o
interval)

9-21
Restricciones
 Entidad, aseguran que los datos de una tabla cumplan con
ciertas reglas.
 Integridad referencial, previenen el borrado de datos de
una tabla si hay otras tablas que dependen de ella.
TIPO DESCRIPCIÓN
NOT NULL La columna no puede recibir valores nulos.
UNIQUE Los valores de la columna (o combinación de columnas)
deben ser únicos, no se pueden repetir. NOTA: NULL es
diferente de todo, hasta de NULL.
PRIMARY KEY Los valores de la columna (o combinación de columnas)
identifican cada fila de la tabla.
FOREIGN KEY Asegura una relación de dependencia entre la columna
(o combinación de columnas) con otras en otra tabla.
CHECK Una condición que deben cumplir los valores.

9-22
Recomendaciones sobre las restricciones

 Asigne un nombre con significado a la restricción,


ayuda a identificar fácilmente los mensajes de error.

 Si no asigna un nombre, Oracle genera uno usando


el formato SYS_Cn, (n es una secuencia numérica
para generar nombres únicos).

 Las restricciones se pueden definir:


 Cuando se crea la tabla a nivel de columna o de tabla
 Después de creada la tabla.
 Las restricciones se pueden consultar en el
diccionario de datos (USER_CONSTRAINTS).

9-23
Definiendo restricciones
CREATE TABLE [Esquema.]Tabla (
Columna1 TipoDeDato [DEFAULT Expresión][RestricciónC]
[, Columna2 …]
[RestricciónT] [, ...]
);

 RestricciónC: Restricción a nivel de columna.


 RestricciónT: Restricción a nivel de tabla.

9-24
Sintaxis para la definición de restricciones

 Al nivel de columna
Columna TipoDato [[CONSTRAINT Nombre] Tipo,…]
 Este tipo de sintaxis permite definir una restricción solo para
la columna que se esta definiendo.
 Se puede utilizar para cualquier tipo de restricción, sólo si
implica una columna (la que se esta definiendo).

 Al nivel de tabla
Columna, …
[[CONSTRAINT Nombre] Tipo (ColumnasT, …), …]
 Esta sintaxis permite definir una restricción para una o más
columnas (separadas por comas) de la tabla.
 No se puede para definir la restricción NOT NULL.

9-25
La restricción NOT NULL

NOT NULL Sin restricción de


Ninguna fila NOT NULL, algunas
puede contener filas o todas
valores NULL pueden ser NULL
9-26
La restricción NOT NULL

 Sólo se puede definir a nivel de columna.


El nombre lo asigna el sistema

El nombre lo asigna el usuario

9-27
La restricción UNIQUE
 Se puede definir a nivel de columna o de
Restricción de unicidad para el tabla.
 Crea automáticamente un índice único para la
nombre de los departamentos. restricción.
 No permite tener valores duplicados en
columnas NO nulas de las columnas con
restricción de unicidad.
 Si las columnas permiten valores NULL, deja
insertar varias filas con NULL en estas
columnas. (Ver Ejemplo)
 Para controlar esto, colocar una restricción adicional
de NOT NULL sobre la columna o columnas.

No se permite

Si se permite

9-28
La restricción PRIMARY KEY
Restricción de llave primaria sobre  Se puede definir a nivel de columna o de tabla
la columna, identifica los (llaves compuestas).
departamentos.
 Sólo una llave primaria por cada tabla, pero
si varias restricciones de unicidad.

 La llave primaria identifica cada fila de la tabla


y automáticamente crea un índice único.

 Las columnas que forman la llave primaria son


únicas y no permiten valores NULL. (Ver
Ejemplo)
No se permite un valor NULL

No se permite por duplicado

9-29
La restricción FOREIGN KEY
PRIMARY KEY en Departamentos FOREIGN KEY en Empleados


 Establece una relación de
una o varias columnas en
una tabla, con otras de la
misma tabla o de otra tabla No se permite, El Dep_Id 50 no existe
que cuentan con una
restricción PRIMARY KEY
o UNIQUE. Si se permite, El Dep_Id 40 existe

9-30
La restricción FOREIGN KEY
 Se puede definir a nivel de columna y de tabla.
 Acepta valores NULL (Ver Ejemplo).
 Es una restricción lógica entre los valores de las filas,
no es física (no son apuntadores).

9-31
La restricción FOREIGN KEY
[CONSTRAINT Nombre] FOREIGN KEY (Columnas)
REFERENCES TablaPadre (Columnas)
[ON DELETE [CASCADE | SET NULL] ]

 FOREIGN KEY: Define las columnas en la tabla hija que deben concordar
con los valores en la tabla padre.
 REFERENCES: Identifica las columnas de la tabla padre.
 ON DELETE CASCADE: Cuando una fila de la tabla padre se elimina, se
eliminan automáticamente las filas relacionadas en la tabla hija.
 ON DELETE SET NULL: Cuando una fila de la tabla padre se elimina, los
valores de las columnas en las filas relacionadas en la tabla hija se
modifican a NULL.
 El comportamiento por defecto (llamado regla restrictiva) consiste en
deshabilitar el borrado y la modificación (de las columnas) de las
filas de la tabla padre cuando están referenciadas en la tabla hija.

9-32
La restricción CHECK
 Define una condición que cada fila de la tabla debe cumplir
 La condición no puede incluir:
 Referencias a las seudo-columnas CURRVAL, NEXTVAL, LEVEL y ROWNUM.
 Llamadas a las funciones como: SYSDATE, UID, USER.
 Consultas a valores que estén en otras filas de la tabla.
 Una columna puede contar con varios chequeos y estos se pueden
definir a nivel de columna o de tabla.

9-33
Violación de Restricciones
 No se permite la actualización.
 El departamento con código 20 tiene hijos
en la tabla empleado.

9-34
Violación de Restricciones
 No se permite la eliminación.
 El departamento con código 20 tiene hijos
en la tabla empleado.

9-35
Manejo de restricciones a una tabla

 El comando ALTER TABLE se usa para:


 Adicionar o borrar una restricción.
 NO para modificar su estructura.

 Adicionar una restricción NOT NULL usando la


cláusula MODIFY.
 La columna debe tener valores para todas las filas.
o
 La tabla debe estar vacía en su totalidad.

 Habilitar o deshabilitar una restricción.


9-36
Adicionar una restricción a una tabla
ALTER TABLE Tabla
ADD [CONSTRAINT Nombre] Tipo (Columna,..);

Por ejemplo:
ALTER TABLE Departamentos
ADD CONSTRAINT Dep_Id_Pk PRIMARY KEY (Dep_Id);

ALTER TABLE Empleados


ADD CONSTRAINT Emp_Fk_Dep FOREIGN KEY (Dep_Id)
REFERENCES Departamentos (Dep_Id);

ALTER TABLE Empleados


ADD CONSTRAINT Emp_Salario_Min CHECK (Emp_Salario > 0);

9-37
Borrar una restricción a una tabla
ALTER TABLE Tabla
DROP PRIMARY KEY | UNIQUE (Columnas) |
CONSTRAINT Nombre [CASCADE];

Por ejemplo:
ALTER TABLE Departamentos
DROP PRIMARY KEY CASCADE; //CASCADE, Elimina las restricciones FK
//que existan en otras tablas hacia esta PK

ALTER TABLE Empleados


DROP CONSTRAINT Emp_Fk_Dep;

ALTER TABLE Empleados


DROP CONSTRAINT Emp_Salario_Min;

9-38
Adicionar y borrar una restricción NOT NULL

 Adicionar restricción NOT NULL a una columna usando MODIFY:

ALTER TABLE Departamentos


MODIFY Dep_Localizacion
CONSTRAINT Dep_Localizacion _NN NOT NULL;

 Borrar una restricción NOT NULL con: MODIFY o DROP

ALTER TABLE Departamentos //Modifica restricción NOT NULL


MODIFY DEP_LOCALIZACION NULL; //del campos y la vuelve NULL

ALTER TABLE Departamentos //Elimina restricción


DROP CONSTRAINT DEP_LOCALIZACION_NN; // NOT NULL

9-39
Deshabilitando restricciones
ALTER TABLE NombreTabla
DISABLE CONSTRAINT Nombre [CASCADE];

 Deshabilita la restricción en la tabla.


 Por defecto NO valida los datos existentes (NOVALIDATE). Sólo aplicaría
para los datos nuevos, pero como la restricción esta deshabilitada (DISABLE)
tampoco se aplica la restricción para los datos nuevos. No se garantiza por lo
tanto que los datos existentes ni los nuevos cumplan con la restricción.
 La restricción se puede deshabilitar:
 Cuando se crea la tabla (CREATE TABLE).
 Después de creada la tabla.
 CASCADE, deshabilita restricciones dependientes.
 Ej. si se deshabilita una PRIMARY KEY se deshabilitan las FOREIGN KEY que
dependen de ella.
 Al deshabilitar una restricción PRIMARY KEY.
 Se elimina el índice único que se creó para la restricción.

9-40
Habilitando restricciones
ALTER TABLE NombreTabla
ENABLE CONSTRAINT Nombre;

 Habilita una restricción que esta deshabilitada.


 Por defecto valida los valores existentes (VALIDATE) en la tabla y se aplica
a los nuevos o modificaciones sobre los mismos porque esta habilitada la
restricción (ENABLE). Es decir, se asegura que los datos existentes y los
nuevos cumplan con la restricción.
 La restricción se puede habilitar:
 Cuando se crea la tabla (CREATE TABLE).
 Después de creada la tabla.
 Habilitar una restricción PRIMARY KEY que fue deshabilitada con la
opción CASCADE.
 NO habilita las restricciones que dependen de ella.
 Cuando se habilita una restricción UNIQUE o PRIMARY KEY
 Automáticamente crea un índice único o primario.

9-41
Validación de restricciones
ALTER TABLE Empleados
MODIFY CONSTRAINT Emp_Salario_Min ENABLE NOVALIDATE

 ENABLE VALIDATE: Opción por defecto de ENABLE. Se verifican


los datos existentes y los nuevos.
 ENABLE NOVALIDATE: Se verifican sólo los datos nuevos. Útil
para los cargues de las bodegas de datos.

 DISABLE VALIDATE: La restricción se deshabilita para los datos


nuevos pero sigue activa para los existentes. NO se permiten
operaciones DML sobre la tabla, ya que no se pueden validar los
datos que llegan porque la restricción esta deshabilitada (similar
a dejar la tabla de sólo lectura).
 DISABLE NOVALIDATE: Opción por defecto de DISABLE. Los
datos existentes no se validan y a los datos nuevos no se les
aplica la restricción, ya que esta deshabilitada.
9-42
Borrado de columnas y las restricciones

ALTER TABLE NombreTabla


DROP (Columna,…) [CASCADE CONSTRAINTS];

 CASCADE CONSTRAINTS, se usa para borrar:


 Todas las restricciones de integridad referencial
(llave primaria o foránea) que dependen de la
columna de la tabla borrada.
 Las restricciones multi-columna (llaves compuestas)
que implican a la columna que se borra.

9-43
Borrado de columnas y las restricciones

 Ejemplos:
 Borra la columna Dep_Id y las restricciones de FK y PK
que dependen de ella.

ALTER TABLE Departamentos


DROP (Dep_Id) CASCADE CONSTRAINTS;

 Borra la columna Emp_Id y Emp_Jefe junto con las


restricciones que dependen de ellas.

ALTER TABLE Empleados


DROP (Emp_Id, Emp_Jefe) CASCADE CONSTRAINTS;

9-44
Consultar las restricciones

 Los tipos de restricciones son C, P, R y U

9-45
Consultar las columnas de una restricción

9-46
Diferir el chequeo de las restricciones
ALTER TABLE NombreTabla
MODIFY CONSTRAINT Nombre …
[NOT] DEFERRABLE [INITIALY [DEFERRED | IMMEDIATE]]

 Por defecto Oracle chequea el cumplimiento de las


restricciones en el momento en que la sentencia se
ejecuta.

 Las restricciones por defecto se crean NOT


DEFERRABLE.

 Si la restricción se crea como DEFERRABLE el chequeo


se puede postergar.
9-47
Diferir el chequeo de las restricciones
SET CONSTRAINT Nombre DEFERRED;
 Después de colocar una restricción como DEFERRABLE
 Se utiliza el DEFERRED, para que la restricción se valide después
de terminar la transacción completa.

SET CONSTRAINTS ALL DEFERRED;


 Solicita a Oracle que la transacción postergue el chequeo

de todas las restricciones hasta que se ejecute el


COMMIT final.
 Útil cuando se necesita insertar primero los empleados
(cuyos Departamentos no existen aún en esta tabla) y
luego los departamentos a los que pertenecen.
 Si no se usa el DEFERRED, se deben insertar primero los
departamentos y luego los empleados.

9-48
Diferir el chequeo de las restricciones
SET CONSTRAINTS Nombre_Restricción IMMEDIATE;

 Restaura el comportamiento por defecto de una


restricción (chequear después de cada sentencia DML).

SET CONSTRAINTS ALL IMMEDIATE;

 Restaura el comportamiento por defecto de todas las


restricciones.

9-49
Crear tablas con subconsultas
CREATE TABLE [Esquema.]Tabla [(
Columna1, Columna2, … )]
AS SubConsulta;

 Crea una tabla e inserta las filas que cumplen con la condición
de la subconsulta.
 La definición de las columnas sólo puede tener el nombre.
 Debe existir una correspondencia entre las columnas de la
tabla y la lista de columnas de la cláusula SELECT de la
subconsulta.
 Si no se definen las columnas, los nombres que se toman son
los de la cláusula SELECT.
 Las restricciones de integridad NO se crean en la nueva
tabla sólo los tipos de datos (sólo se crea NOT NULL).

9-50
Crear tablas con subconsultas

9-51
Creación de tablas temporales
CREATE GLOBAL TEMPORARY TABLE [Esquema.]Tabla (
Columna1 TipoDeDato [DEFAULT Expresión]
[, Columna2 …])
[ON COMMIT PRESERVE|DELETE ROWS];

 Crea una tabla temporal estática como un objeto


persistente en el diccionario de datos.
 Se le pueden crear índices y vistas.
 Por defecto los datos y los índices persisten mientras
dura la transacción (ON COMMIT DELETE ROWS)
 Para que duren toda la sesión se debe usar ON COMMIT
PRESERVE ROWS (Ver ejemplo).

9-52
La sentencia ALTER TABLE
 Manejo de columnas de la tabla:
 Adicionar una nueva columna.
 Modificar una columna existente.
 Definir un valor por defecto a una
columna.
 Establecer una columna como no
usada (la tabla tiene muchas filas y se
demora el borrado, se marca como no
usada).
 Borrar una columna.
 Borrar las columnas que están
marcadas como no usadas (Remueve
físicamente las columnas y libera el
espacio en disco).

9-53
La sentencia ALTER TABLE
 Manejo de columnas de la tabla:
 Cuando se borran columnas que están marcadas como no usadas de una tabla
con muchas filas, se sugiere colocar un punto de chequeo.
 Después de procesar un número especificado de filas (en este caso 250).
 Realizar puntos de chequeo reduce la cantidad de undo log que se acumula
durante la operación de borrado de la columna para evitar llegar al límite del
espacio de undo disponible.

ALTER TABLE NombreTabla


DROP UNUSED COLUMNS CHECKPOINT 250;

9-54
Uso de la sentencia ALTER TABLE
 Al adicionar columnas:
 No se puede especificar el orden de
la nueva columna

 La nueva columna queda al final.

 Se recomienda que las columnas


con valores NULL queden al final.

 Si la tabla tiene filas, la nueva


columna queda con valores NULL
(o el valor por defecto de la
columna) para todas las filas.

9-55
Uso de la sentencia ALTER TABLE
 Al borrar columnas:
 Sólo se puede borrar una columna
a la vez, a menos que se use DROP
UNUSED COLUMNS.
 Al intentar borrar la columna, la
tabla debe quedar mínimo con
una columna.
 Una columna que se borra no se
puede recuperar (sólo con copias
de seguridad).
 Cuando se fija una columna
UNUSED se saca de uso pero no se
borra. Esta sentencia es más
rápida.
 El comando DESCRIBE NO
muestra las columnas marcadas
como UNUSED.

9-56
Uso de la sentencia ALTER TABLE
 Al modificar una columna se
puede:
 Modificar el tipo de dato, el tamaño y
el valor por defecto (Este valor por
defecto sólo afecta las filas nuevas,
NO las existentes).
 Incrementar el tamaño (precisión) de
columnas numéricas y caracteres.
 Decrementar el tamaño de una
columna si la tabla no tiene filas o
todos los valores son NULL.
 Cambiar el tipo de dato sólo si todos
los valores son NULL.
 Convertir de CHAR a VARCHAR2 sólo si
todos los valores son NULL o si no se
cambia el tamaño.

9-57
Tabla de Sólo Lectura
 Usar ALTER TABLE para colocar la tabla en modo
de sólo lectura.
 Ningún cambio (DDL o DML) se puede hacer sobre la
tabla (útil para hacer mantenimiento).

ALTER TABLE NombreTabla READ ONLY;

 Para que la tabla vuelva a ser de lectura escritura:

ALTER TABLE NombreTabla READ WRITE;

9-58
Borrar una Tabla
DROP TABLE [Esquema.]Tabla [CASCADE CONSTRAINT];

 Cuando se borra una tabla:


 Todos los datos se eliminan.
 La estructura de la tabla se elimina.
 Las transacciones pendientes sobre la tabla se comprometen.
 Todos los índices de la tabla se eliminan.
 Las vistas y sinónimos que referencian la tabla permanecen pero se
invalidan.
 Se realiza un commit automático.
 CASCADE CONSTRAINT, borra las restricciones de integridad referencial
de otras tablas hacia su llave primaria o única.
 Esta operación no se puede deshacer (DDL).
 Sólo el dueño de la tabla o un usuario con el privilegio DROP ANY
TABLE puede ejecutar esta sentencia.

9-59
Borrar una Tabla
DROP TABLE [Esquema.]Tabla PURGE;

 Cuando se borra una tabla Oracle:


 La mueve a la papelera (recycle bin)
 No libera el espacio que ocupa la tabla
 Use PURGE en la cláusula DROP:
 Eliminar la tabla de la papelera
 Liberar el espacio que ocupa la tabla
 Para borrar todas las tablas que están en el recycle bin:
 PURGE RECYCLEBIN (Ver ejemplo)

9-60
Cambiar el nombre de una tabla o columna
RENAME NombreTabla TO NombreNuevoTabla;

 El comando RENAME sirve para cambiar el nombre de:


 Una tabla, vista, secuencia o sinónimo.

ALTER TABLE NombreTabla


RENAME NombreAnteriorColumna TO NombreNuevoColumna;

 Para renombrar las columnas de una tabla

 Para que el comando tenga éxito el usuario debe ser


el dueño del objeto.
9-61
Adicionando comentarios a una tabla
COMMENT ON [ TABLE [Esquema.]Tabla |
COLUMN [Esquema.]Tabla.Columna ]
IS 'Comentario';

 La sentencia COMMENT permite agregar un comentario


a una tabla o a una columna, almacenándolo en el
diccionario de datos.

COMMENT ON TABLE Prueba IS 'Prueba';

9-62
Adicionando comentarios a una tabla
 Estos comentarios se consultan a través de:
 ALL_COL_COMMENTS
 USER_COL_COMMENTS
 ALL_TAB_COMMENTS
 USER_TAB_COMMENTS
SELECT *
FROM USER_TAB_COMMENTS;

 Para quitar el comentario se usa ''


COMMENT ON TABLE Prueba IS '';

9-63
Quiz

 Usted puede usar las restricciones para:


1. Asegurar reglas en los datos de una tabla
cuando una fila es insertada, modificada o
borrada.
2. Prevenir el borrado de una tabla, si hay
referencias desde otras tablas.
3. Prevenir la creación de una tabla.
4. Prevenir la creación de datos en una tabla.

9-64
Resumen

 En esta lección usted debió aprender:


 A crear tablas con las sentencia CREATE TABLE.
 A modificar la estructura de una tabla con la
sentencia ALTER TABLE.
 A borra una tabla con la sentencia DROP TABLE.
 A renombrar una tabla con la sentencia RENAME.
 A comentar las tablas y las columnas con la
sentencia COMMENT.
 A consultar algunas tablas del sistema.

9-65
Practica 10

 Realizar una práctica de dieciocho (18)


puntos que permite practicar:
 La creación de nuevas tablas.
 El uso de subconsultas para crear nuevas
tablas.
 La adición, modificación y borrado de las
columnas de una tabla.
 La eliminación de las tablas.
 El manejo de restricciones.

9-66

También podría gustarte