buscador

Visita

jueves, 12 de enero de 2023

SQL Capitulo 10 : Uso de Sentencias DDL para Crear y Gestionar Tablas en SQL Developer

Sean bienvenidos a esta secci贸n donde se revisa acerca uso de sentencias DDL para crear y gestionar tablas, recuerden estas sentencias estan siendo ejecutadas en SQL developer administrador de la Base de datos Oracle.

Objetivos de la publicaci贸n:
Al finalizar esta lecci贸n, deber铆a estar capacitado para lo siguiente:
  • Clasificar los principales objetos de base de datos
  • Revisar la estructura de la tabla
  • Mostrar los tipos de dato disponibles para columnas
  • Crear una tabla simple
  • Explicar c贸mo crear restricciones en el momento de la creaci贸n de la tabla
  • Describir el funcionamiento de los objetos de esquema
En esta lecci贸n, se ofrece una introducci贸n a las sentencias de lenguaje de definici贸n de datos (DDL). Aprender谩 los fundamentos para crear tablas simples, modificarlas y eliminarlas. Se muestran los tipos de dato disponibles en DDL y se ofrece una introducci贸n sobre los conceptos de esquema. Las restricciones se tratar谩n en esta lecci贸n. Se muestran y explican los mensajes de excepci贸n generados por las restricciones de violaci贸n durante las operaciones DML.

Objetos de base de datos


Oracle Database puede contener varias estructuras de datos. Cada estructura se debe describir en el dise帽o de la base de datos para que se pueda crear durante la fase de creaci贸n del desarrollo de la base de datos.
Tabla: almacena datos.
Vista: subjuego de datos de una o m谩s tablas.
Secuencia: genera valores num茅ricos.
脥ndice: mejora el rendimiento de algunas consultas.
Sin贸nimo: ofrece nombres alternativos para un objeto.

Estructuras de Tabla de Oracle
Las tablas se pueden crear en cualquier momento, incluso mientras los usuarios utilizan la base de datos.
No necesita especificar el tama帽o de la tabla. El tama帽o se define en 煤ltima instancia seg煤n la cantidad de espacio asignado a la base de datos completa. No obstante, es importante calcular la cantidad de espacio que utilizar谩 una tabla a lo largo del tiempo.
La estructura de la tabla se puede modificar en l铆nea.

Nota: hay m谩s objetos de base de datos disponibles, pero no se tratan en este curso.

Reglas de Nomenclatura
Los nombres de tabla y de columna deben:
  • Empezar por una letra
  • Tener entre 1 y 30 caracteres
  • Contener s贸lo A–Z, a–z, 0–9, _, $ y #
  • No deben ser un duplicado de otro nombre de objeto propiedad del mismo usuario
  • No debe ser una palabra reservada del servidor de Oracle
Las tablas y columnas de la base de datos se deben nombrar seg煤n las reglas est谩ndar de nomenclatura de objetos de Oracle Database:
  • Los nombres de tabla y de columna deben comenzar por una letra y tener entre 1 y 30 caracteres.
  • Los nombres s贸lo deben contener los caracteres A–Z, a–z, 0–9, _ (subrayado), $ y # (caracteres v谩lidos, pero cuyo uso no es aconsejable).
  • Los nombres no deben ser un duplicado de otro nombre de objeto propiedad del mismo usuario del servidor de Oracle.
  • Los nombres no deben ser una palabra reservada del servidor de Oracle.
    • Puede utilizar identificadores entre comillas para representar el nombre de un objeto. Un identificador entre comillas empieza y finaliza con comillas dobles (""). Si asigna un nombre a un objeto de esquema mediante un identificador entre comillas, debe utilizar las comillas dobles cuando haga referencia a dicho objeto. Los identificadores entre comillas pueden ser palabras reservadas, aunque no se recomienda.


Directrices de Nomenclatura
Utilice nombres descriptivos para las tablas y otros objetos de la base de datos.

Nota: los nombres no son sensibles a may煤sculas/min煤sculas. Por ejemplo, EMPLOYEES se considera el mismo nombre que eMPloyees o eMpLOYEES. Sin embargo, los identificadores entre comillas son sensibles a may煤sculas/min煤sculas.
Para obtener m谩s informaci贸n, consulte la secci贸n sobre nombres de objeto de esquema y cualificadores en Oracle Database SQL Language Reference (Referencia sobre Lenguaje SQL de Oracle Database).

Sentencia CREATE TABLE
Debe tener:
  • El privilegio CREATE TABLE
  • Un 谩rea de almacenamiento
Debe especificar:
  • El nombre de tabla
El nombre de columna, tipo de dato de columna y tama帽o de columna.
Puede crear tablas para almacenar datos ejecutando la sentencia SQL CREATE TABLE. Esta sentencia es una de las sentencias DDL, que son un subjuego de sentencias SQL que se utilizan para crear, modificar o eliminar estructuras de Oracle Database. Estas sentencias tienen un efecto inmediato en la base de datos y registran informaci贸n en el diccionario de datos.



Para crear una tabla, un usuario debe tener el privilegio CREATE TABLE y un 谩rea de almacenamiento en la que crear los objetos. El administrador de la base de datos (DBA) utiliza sentencias de lenguaje de control de datos (DCL) para otorgar privilegios a los usuarios.

En la sintaxis:
schema                 es el mismo nombre que el del propietario
table                     es el nombre de la tabla
DEFAULT expr   especifica un valor por defecto si se omite un valor en la sentencia INSERT
column                es el nombre de la columna
datatype               es el tipo de dato y la longitud de la columna.

Referencia a Tablas de Otro Usuario
Las tablas que pertenecen a otros usuarios no se incluyen en el esquema del usuario.
Debe utilizar el nombre del propietario como prefijo de dichas tablas.
Un esquema es una recopilaci贸n de estructuras l贸gicas de datos u objetos de esquema. Un esquema es propiedad de un usuario de base de datos y tiene el mismo nombre que el usuario. Cada usuario es propietario de un 煤nico esquema. 

Los objetos de esquema se pueden crear y manipular con SQL e incluyen tablas, vistas, sin贸nimos, secuencias, procedimientos almacenados, 铆ndices, clusters y enlaces de base de datos.

Si una tabla no pertenece al usuario, el nombre del propietario se debe anteponer a la tabla. Por ejemplo, dados los esquemas USERA y USERB y ambos contienen la tabla EMPLOYEES, si USERA desea acceder a la tabla EMPLOYEES que pertenece a USERB, USERA debe anteponer el nombre del esquema al nombre de la tabla:

SELECT *
FROM   userb.employees;

Si USERB desea acceder a la tabla EMPLOYEES propiedad de USERA, USERB debe anteponer el nombre del esquema al nombre de la tabla:

SELECT *
FROM   usera.employees;

Opci贸n DEFAULT
Especificar un valor por defecto para una columna durante una inserci贸n.
Los valores literales, expresiones o funciones SQL son valores v谩lidos.
El nombre de otra columna o una pseudocolumna son valores no v谩lidos.
El tipo de dato por defecto debe coincidir con el tipo de dato de la columna.

Al definir una tabla, puede especificar que se proporcione un valor por defecto a una columna mediante la opci贸n DEFAULT. Esta opci贸n evita que se introduzcan valores nulos en las columnas si se inserta una fila sin un valor para la columna. El valor por defecto puede ser un literal, una expresi贸n o una funci贸n SQL (como SYSDATE o USER), pero el valor no puede ser el nombre de otra columna o una pseudocolumna (como NEXTVAL o CURRVAL). La expresi贸n por defecto debe coincidir con el tipo de dato de la columna.



Considere los siguientes ejemplos:
INSERT INTO hire_dates values(45, NULL);
La sentencia anterior insertar谩 el valor nulo en lugar del valor por defecto.
INSERT INTO hire_dates(id) values(35);
La sentencia anterior insertar谩 SYSDATE para la columna HIRE_DATE.

Nota : en SQL Developer, haga clic en el icono Run Script o pulse [F5] para ejecutar las sentencias DDL. Los comentarios se mostrar谩n en la p谩gina con separadores Script Output. 

Creaci贸n de Tablas
Crear una tabla:

Confirmar la creaci贸n de la tabla:

El ejemplo crea la tabla DEPT, con cuatro columnas: DEPTNO, DNAME, LOC y CREATE_DATE. La columna CREATE_DATE tiene un valor por defecto. Si no se proporciona ning煤n valor para una sentencia INSERT, se inserta autom谩ticamente la fecha del sistema. 
Para confirmar que se ha creado la tabla, ejecute el comando DESCRIBE. 
Puesto que la creaci贸n de una tabla constituye una sentencia DDL, se realiza una confirmaci贸n autom谩tica al ejecutar esta sentencia.

Nota: puede ver la lista de las tablas que posee consultando el diccionario de datos. 

Por ejemplo:
select table_name from user_tables;

Mediante las vista de diccionario de datos, puede obtener informaci贸n sobre otros objetos de base de datos como vistas, 铆ndices, etc. Los diccionarios de datos se explican en detalle en el curso Oracle Database: Conceptos Fundamentales de SQL II. 

Tipos de Dato
Al identificar una columna para una tabla, debe proporcionar un tipo de dato para la columna. Hay varios tipos de dato disponibles:



Instrucciones
Las columnas LONG no se copian al crear una tabla mediante una subconsulta.
Las columnas LONG no se pueden incluir en una cl谩usula GROUP BYu ORDER BY.
S贸lo se puede utilizar una columna LONG por tabla.
No se pueden definir restricciones en las columnas LONG.
Puede que desee utilizar una columna CLOB en lugar de una columna LONG.

Tipos de Dato de Fecha y Hora
Puede utilizar varios tipos de dato de fecha y hora:

Nota: estos tipos de dato de fecha y hora est谩n disponibles con las versiones Oracle9i y posteriores. Los tipos de dato de fecha y hora se tratan m谩s detalladamente en la lecci贸n sobre gesti贸n de datos situados en distintas zonas horarias del curso Oracle Database: Conceptos Fundamentales de SQL II.
Adem谩s, para obtener m谩s informaci贸n sobre los tipos de dato de fecha y hora, consulte las secciones sobre tipo de de dato TIMESTAMP, tipo de dato INTERVAL YEAR TO MONTH y tipo de dato INTERVAL DAY TO SECOND en Oracle Database SQL Language Reference (Referencia sobre Lenguaje SQL de Oracle Database).

Visi贸n general de restricciones: Restricciones NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK
Inclusi贸n de Restricciones
Las restricciones aplican reglas a nivel de tabla.
Las restricciones impiden la supresi贸n de una tabla si hay dependencias.
Los siguientes tipos de restricciones son v谩lidos:
  • NOT NULL
  • UNIQUE
  • PRIMARY KEY
  • FOREIGN KEY
  • CHECK
Restricciones
El servidor de Oracle utiliza restricciones para evitar la introducci贸n de datos no v谩lidos en las tablas.
Puede utilizar restricciones para realizar lo siguiente:
  • Aplicar reglas a los datos de la tabla cuando se inserta, actualiza o suprime una fila de la misma. La restricci贸n se debe cumplir para que la operaci贸n sea correcta.
  • Evitar la supresi贸n de una tabla si hay dependencias de otras tablas.
  • Proporcionar reglas para las herramientas de Oracle, como Oracle Developer.
Instrucciones de Restricci贸n
Puede asignar un nombre a una restricci贸n o el servidor de Oracle genera un nombre con el formato SYS_Cn.
Crear una restricci贸n en uno de los siguientes momentos:
  • En el momento de la creaci贸n de la tabla
  • Despu茅s de la creaci贸n de la tabla
Definir una restricci贸n a nivel de columna o de tabla.
Ver una restricci贸n en el diccionario de datos.

Todas las restricciones se almacenan en el diccionario de datos. Es f谩cil hacer referencia a las restricciones si les asigna un nombre significativo. Los nombres de las restricciones deben seguir las reglas de nomenclatura de objetos est谩ndar, excepto que el nombre no puede ser el mismo que el de otro objeto propiedad del mismo usuario. Si no asigna ning煤n nombre a la restricci贸n, el servidor de Oracle genera un nombre con el formato SYS_Cn, donde n es un entero para que el nombre de la restricci贸n sea 煤nico.



Las restricciones se pueden definir en el momento de la creaci贸n de la tabla o despu茅s de haberla creado. Puede definir una restricci贸n a nivel de columna o de tabla. Funcionalmente, una restricci贸n a nivel de tabla es la mismo que una restricci贸n a nivel de columna.

Para obtener m谩s informaci贸n, consulte la secci贸n sobre funciones de restricciones en Oracle Database SQL Language Reference (Referencia sobre Lenguaje SQL de Oracle Database).

Definici贸n de Restricciones
Sintaxis:
Sintaxis de restricci贸n a nivel de columna:
Sintaxis de restricci贸n a nivel de tabla:

Lineas arriba se proporciona la sintaxis para la definici贸n de restricciones al crear una tabla. Puede crear las restricciones a nivel de columna o de tabla. Las restricciones definidas a nivel de columna se incluyen al definir la columna. Las restricciones a nivel de tabla se definen al final de la definici贸n de tabla y debe hacer referencia a la columna o las columnas a las que pertenece la restricci贸n en un juego de par茅ntesis. Se trata principalmente de la sintaxis que diferencia a las dos; de lo contrario, funcionalmente, una restricci贸n a nivel de columna es lo mismo que una restricci贸n a nivel de tabla.
Las restricciones NOT NULL se deben definir a nivel de columna.


 
Las restricciones que se aplican a m谩s de una columna se deben definir a nivel de tabla.

En la sintaxis:
schema     es el mismo nombre que el del propietario
table     es el nombre de la tabla
DEFAULT expr especifica un valor por defecto para utilizarlo si se omite un valor en     la sentencia INSERT
column     es el nombre de la columna
datatype             es el tipo de dato y la longitud de la columna
column_constraint es una restricci贸n de integridad como parte de la definici贸n de columna
table_constraint     es una restricci贸n de integridad como parte de la definici贸n de tabla.

Ejemplo de una restricci贸n a nivel de columna: 
Ejemplo de una restricci贸n a nivel de tabla:

Las restricciones se crean normalmente al mismo tiempo que la tabla. Las restricciones se pueden agregar a una tabla despu茅s de su creaci贸n y se pueden desactivar temporalmente. 

Ambos ejemplos de la diapositiva crean una restricci贸n de clave primaria en la columna EMPLOYEE_ID de la tabla EMPLOYEES. 
1. En el primer ejemplo se utiliza la sintaxis de nivel de columna para definir la restricci贸n. 
2. En el segundo ejemplo se utiliza la sintaxis de nivel de tabla para definir la restricci贸n. 

Encontrar谩 m谩s informaci贸n sobre la restricci贸n de clave primaria m谩s adelante en esta lecci贸n.

Restricci贸n NOT NULL
Garantiza que no se permiten los valores nulos para la columna:

La restricci贸n NOT NULL garantiza que la columna no contiene ning煤n valor nulo. Las columnas sin la restricci贸n NOT NULL pueden contener valores nulos por defecto. Las restricciones NOT NULL se deben definir a nivel de columna. En la tabla EMPLOYEES, la columna EMPLOYEE_ID hereda una restricci贸n NOT NULL como se define en la clave primaria. De lo contrario, las columnas LAST_NAME, EMAIL, HIRE_DATE y JOB_ID tienen la restricci贸n NOT NULL aplicada.

Nota: la restricci贸n de clave primaria  se trata con detalle m谩s adelante en esta misma lecci贸n.

Restricci贸n UNIQUE
Una restricci贸n de integridad de clave UNIQUE necesita que todos los valores de una columna o juego de columnas (clave) sean 煤nicos; es decir, que dos filas de una tabla  no pueden tener valores duplicados en una columna o juego de columnas concreto. La columna (o juego de columnas) incluida en la definici贸n de la restricci贸n de clave UNIQUE se denomina clave 煤nica. Si la restricci贸n UNIQUE comprende m谩s de una columna, el grupo de columnas se denomina clave 煤nica compuesta. 

Las restricciones UNIQUE permiten la entrada de valores nulos a menos que defina tambi茅n las restricciones NOT NULL para las mismas columnas. De hecho, se puede incluir cualquier n煤mero de valores nulos para las columnas sin restricciones NOT NULL porque los valores nulos no se consideran iguales a ning煤n otro elemento. Un valor nulo en una columna (o en todas las columnas de una clave UNIQUE compuesta) cumple siempre una restricci贸n UNIQUE. 

Nota: debido al mecanismo de b煤squeda de restricciones UNIQUE en una o m谩s columnas, no puede tener valores id茅nticos en las columnas no nulas de una restricci贸n de clave UNIQUE compuesta parcialmente nula.

Definida a nivel de tabla o de columna:
Las restricciones UNIQUE se pueden definir a nivel de tabla o de columna. Defina la restricci贸n a nivel de tabla si desea crear una clave 煤nica compuesta. Una clave compuesta se define si no hay un 煤nico atributo que pueda identificar de forma 煤nica una fila. En ese caso, puede tener una clave 煤nica compuesta de dos o m谩s columnas, el valor combinado de ambas es siempre 煤nico y puede identificar filas.

En el ejemplo se aplica la restricci贸n UNIQUE a la columna EMAIL de la tabla EMPLOYEES. El nombre de la restricci贸n es EMP_EMAIL_UK.

Nota: el servidor de Oracle aplica la restricci贸n UNIQUE mediante la creaci贸n impl铆cita de un 铆ndice 煤nico en la columna o columnas 煤nicas.

Restricci贸n PRIMARY KEY
La restricci贸n PRIMARY KEY crea una clave primaria para la tabla. S贸lo se puede crear una clave primaria para cada tabla. La restricci贸n PRIMARY KEY es una columna o juego de columnas que identifica de forma 煤nica cada fila de tabla. Esta restricci贸n aplica la unicidad de la columna o combinaci贸n de columnas y garantiza que ninguna columna que forme parte de la clave contenga un valor nulo.

Nota: puesto que la unicidad forma parte de la definici贸n de restricci贸n de clave primaria, el servidor de Oracle aplica la unicidad mediante la creaci贸n impl铆cita de un 铆ndice 煤nico en la columna o columnas de clave primaria.


Restricci贸n FOREIGN KEY
La restricci贸n FOREIGN KEY (o integridad referencial) designa  una columna o combinaci贸n de columnas como clave ajena y establece una relaci贸n entre una clave primaria o 煤nica en la misma tabla o en otra diferente. 

En el ejemplo, DEPARTMENT_ID se ha definido como clave ajena en la tabla EMPLOYEES (tabla dependiente o secundaria); hace referencia a la columna DEPARTMENT_ID de la tabla DEPARTMENTS (tabla a la que se hace referencia o principal).

Instrucciones
El valor de clave ajena debe coincidir con un valor existente de la tabla principal o ser un valor NULL.
Las claves ajenas se basan en los valores de datos y son punteros puramente l贸gicos, en lugar de f铆sicos.

Definida a nivel de tabla o de columna:

Las restricciones FOREIGN KEY se pueden definir  a nivel de restricci贸n de columna o de tabla. Las claves ajenas compuestas se deben crear mediante la definici贸n a nivel de tabla.

En el ejemplo  se define una restricci贸n FOREIGN KEY en la columna DEPARTMENT_ID de la tabla EMPLOYEES, mediante la sintaxis a nivel de tabla. El nombre de la restricci贸n es EMP_DEPT_FK.
La clave ajena se puede definir tambi茅n a nivel de columna, siempre que la restricci贸n est谩 basada en una sola columna. La sintaxis difiere en que las palabras clave FOREIGN KEY no aparecen. 

Por ejemplo:
CREATE TABLE employees
(...
department_id NUMBER(4) CONSTRAINT emp_deptid_fk 
REFERENCES departments(department_id),
...
)

Restricci贸n FOREIGN KEY: Palabras Clave
  • FOREIGN KEY: define la columna en la tabla secundaria a nivel de restricci贸n de tabla
  • REFERENCES: identifica la tabla y la columna en la tabla principal
  • ON DELETE CASCADE: suprime las filas dependientes de la tabla secundaria cuando se suprime una fila de la tabla principal
  • ON DELETE SET NULL: convierte los valores de clave ajena dependiente en nulos.
La clave ajena se define en la tabla secundaria y la tabla que contiene la columna a la que se hace referencia es la tabla principal. La clave ajena se define mediante una combinaci贸n de las siguientes palabras clave: 
  • FOREIGN KEY se utiliza para definir la columna en la tabla secundaria a nivel de restricci贸n de tabla.
  • REFERENCES identifica la tabla y la columna en la tabla principal.
  • ON DELETE CASCADE indica que al suprimir una fila de la tabla principal, tambi茅n se suprimen las filas dependientes de la tabla secundaria.
  • ON DELETE SET NULL indica que al suprimir una fila de la tabla principal, los valores de clave ajena se definen como nulos.
El comportamiento por defecto se denomina  regla estricta, que no permite la actualizaci贸n o supresi贸n de los datos a los que se hace referencia. 
Sin las opciones ON DELETE CASCADE u ON DELETE SET NULL, la fila de la tabla principal no se puede suprimir si hace referencia a la misma en la tabla secundaria.

Restricci贸n CHECK
Define una condici贸n que debe cumplir cada fila.
Las siguientes expresiones no est谩n permitidas:
  • Referencias a las pseudocolumnas CURRVAL, NEXTVAL, LEVEL y ROWNUM
  • Llamadas a las funciones SYSDATE, UID, USER y USERENV
  • Consultas que hagan referencia a otros valores en otras filas

La restricci贸n CHECK define una condici贸n que debe cumplir cada fila. La condici贸n puede utilizar las mismas construcciones que las condiciones de consulta, con las siguientes excepciones:
  • Referencias a las pseudocolumnas CURRVAL, NEXTVAL, LEVEL y ROWNUM
  • Llamadas a las funciones SYSDATE, UID, USER y USERENV
  • Consultas que hagan referencia a otros valores en otras filas
Una sola columna puede tener varias restricciones CHECK que hagan referencia a la columna en su definici贸n. No hay ning煤n l铆mite en cuanto al n煤mero de restricciones CHECK que puede definir en una columna.

Las restricciones CHECK se pueden definir a nivel de tabla o de columna.
  CREATE TABLE employees
     (...
      salary NUMBER(8,2) CONSTRAINT emp_salary_min 
                         CHECK (salary > 0),
     ...

Sentencia CREATE TABLE: Ejemplo
El ejemplo muestra la sentencia que se utiliza para crear la tabla EMPLOYEES en el esquema HR.

Violaci贸n de Restricciones
El departamento 55 no existe.

Si tiene restricciones en lugar de columnas, recibir谩 un error si intenta violar la regla de restricci贸n. Por ejemplo, si intenta actualizar un registro con un valor ligado a una restricci贸n de integridad, se devuelve un error. 
En el ejemplo, el departamento 55 no existe en la tabla principal, DEPARTMENTS y, por lo tanto, recibir谩 la violaci贸n de clave principal no encontrada ORA-02291.

No puede suprimir una fila que contenga una clave primaria que se utilice como clave ajena en otra tabla.

Por ejemplo, si intenta suprimir un registro con un valor ligado a una restricci贸n de integridad, se devuelve un error.

En el ejemplo, se intenta suprimir el departamento 60 de la tabla DEPARTMENTS, pero se produce un error porque ese n煤mero de departamento se utiliza como clave ajena en la tabla EMPLOYEES. Si el registro principal que intenta suprimir tiene registros secundarios, recibir谩 la violaci贸n de registro secundario encontrado ORA-02292.

La siguiente sentencia funciona porque no hay ning煤n empleado en el departamento 70:
DELETE FROM  departments
WHERE department_id = 70;

Creaci贸n de una Tabla mediante una Subconsulta
Crear una tabla e insertar filas combinando la sentencia CREATE TABLE y la opci贸n AS subquery.
Hacer coincidir el n煤mero de columnas especificadas con el n煤mero de columnas de la subconsulta.
Definir columnas con nombres de columna
 y valores por defecto.

Un segundo m茅todo para crear tablas es aplicar la cl谩usula AS subquery, que crea la tabla e inserta las filas desvueltas de la subconsulta.

En la sintaxis:
table         es el nombre de la tabla
column         es el nombre de la columna, el valor por defecto y la restricci贸n de integridad
subquery    es la sentencia SELECT que define el juego de filas que se va a insertar en la nueva tabla

Instrucciones
  • La tabla se crea con los nombres de columna especificados y las filas recuperadas por la sentencia SELECT se insertan en la tabla.
  • La definici贸n de columna s贸lo puede contener el nombre de la columna y el valor por defecto.
  • Si se proporcionan especificaciones de columna, el n煤mero de columnas debe ser igual al n煤mero de columnas de la lista SELECT de la subconsulta.
  • Si no se proporcionan especificaciones de columna, los nombres de columna de la tabla son los mismos que los de la subconsulta.
  • Las definiciones de tipo de dato de columna y de la restricci贸n NOT NULL se transfieren a la nueva tabla. Tenga en cuenta que s贸lo la restricci贸n expl铆cita NOT NULL se heredar谩. La columna PRIMARY KEY no transferir谩 la funci贸n NOT NULL a la nueva columna. Las dem谩s reglas de restricci贸n no se transfieren a la nueva tabla. Sin embargo, puede agregar restricciones en la definici贸n de columna.

En el ejemplo, se crea una tabla denominada DEPT80, que contiene los detalles de todos los empleados que trabajan en el departamento 80. Tenga en cuenta que los datos de la tabla DEPT80 proceden de la tabla EMPLOYEES.

Puede verificar la existencia de una tabla de base de datos y comprobar las definiciones de columna mediante el comando DESCRIBE.

Sin embargo, aseg煤rese de proporcionar un alias de columna al seleccionar una expresi贸n. La expresi贸n SALARY*12 recibe el alias ANNSAL. Sin el alias, se genera error.

ALTER TABLE
Tablas de s贸lo lectura

Sentencia ALTER TABLE
Utilizar la sentencia ALTER TABLE para:
  • Agregar una nueva columna
  • Modificar una definici贸n de columna existente
  • Definir un valor por defecto para la nueva columna
  • Borrar una columna
  • Cambiar el nombre de una columna
  • Cambiar la tabla al estado de s贸lo lectura
Despu茅s de crear una tabla, puede que necesite cambiar la estructura de la tabla por cualquiera de las siguientes razones: 
  • Ha omitido una columna.
  • Debe cambiar la definici贸n de columna o su nombre.
  • Debe eliminar columnas. 
  • Desea definir la tabla en modo de s贸lo lectura.
Para ello, puede utilizar la sentencia ALTER TABLE.

Tablas de S贸lo Lectura
Puede utilizar la sentencia ALTER TABLE para:
  • Definir una tabla en modo de s贸lo lectura, que evita que DDL o DML cambie durante el mantenimiento de la tabla 
  • Volver a definir la tabla en modo de lectura/escritura

Con Oracle Database 11g, puede especificar READ ONLY para definir una tabla en modo de s贸lo lectura. Cuando la tabla est茅 en modo READ-ONLY, no puede ejecutar ninguna sentencia DML que afecte a la tabla o a cualquier sentencia SELECT ... FOR UPDATE. Puede ejecutar las sentencias DDL siempre y cuando no modifique los datos de la tabla. Se permiten operaciones sobre 铆ndices asociados a la tabla cuando la tabla est茅 en modo READ ONLY.

Especifique READ/WRITE para volver a definir una tabla de s贸lo lectura en modo de lectura/escritura.
Nota: si es necesario puede borrar una tabla con modo READ ONLY. El comando DROP se ejecuta s贸lo en el diccionario de datos, por lo que no es necesario el acceso al contenido de la tabla.  El espacio utilizado por la tabla no se reclamar谩 hasta que el tablespace se vuelva a definir en lectura/escritura y, a continuaci贸n, los cambios necesarios se podr谩n realizar en las cabeceras de segmento de bloque, etc.
Para obtener m谩s informaci贸n sobre la sentencia ALTER TABLE, consulte el curso titulado Oracle Database: Conceptos Fundamentales de SQL II.

Sentencia DROP TABLE
Borrado de una Tabla
Mueve una tabla a la papelera de reciclaje 
Elimina la tabla y todos sus datos completamente si se especifica la cl谩usula PURGE
Invalida objetos dependientes y elimina privilegios de objeto en la tabla

La sentencia DROP TABLE  mueve una tabla a la papelera de reciclaje o elimina la tabla y todos sus datos de la base de datos completamente. A menos que especifique la cl谩usula PURGE, la sentencia DROP TABLE no vuelve a liberar espacio en los tablespaces para que lo utilicen otros objetos y el espacio sigue contando en la cuota de espacio del usuario. El borrado de una tabla invalida objetos dependientes y elimina privilegios de objeto en la tabla.

Al borrar una tabla, la base de datos pierde todos los datos de la tabla y los 铆ndices asociados a los mismos. 

Sintaxis
DROP TABLE table [PURGE]
En la sintaxis, table es el nombre de la tabla.
Instrucciones
Se suprimen todos los datos de la tabla.
Se mantienen las vistas y los sin贸nimos, pero no son v谩lidos.
Se confirman las transacciones pendientes.
S贸lo el creador de la tabla o un usuario con el privilegio DROP ANY TABLE puede eliminar una tabla.



Nota: utilice la sentencia FLASHBACK TABLE para restaurar una tabla borrada de la papelera de reciclaje. Esto se trata con m谩s detalle en el curso titulado Oracle Database: Conceptos Fundamentales de SQL II.

Resumen
En esta lecci贸n, debe haber aprendido a utilizar la sentencia CREATE TABLE para crear una tabla e incluir restricciones.
  • Clasificaci贸n de los Principales Objetos de Base de Datos
  • Revisar la estructura de la tabla
  • Mostrar los tipos de dato disponibles para columnas
  • Crear una tabla simple
  • Explicar c贸mo crear restricciones en el momento de la creaci贸n de la tabla
  • Describir el funcionamiento de los objetos de esquema.
En esta lecci贸n debe haber aprendido a realizar lo siguiente:
CREATE TABLE
  • Utilizar la sentencia CREATE TABLE para crear una tabla e incluir restricciones.
  • Crear una tabla basada en otra tabla mediante una subconsulta.
DROP TABLE
  • Eliminar filas y la estructura de una tabla. 
  • Una vez ejecutada, no se puede realizar un rollback de esta sentencia.

No hay comentarios.:

Publicar un comentario

Raul Tamani A. ©. Im谩genes del tema de fpm. Con tecnolog铆a de Blogger.

Adblock Detectado

Apoya este sitio desactivando el Adblock para seguir navegando. ¡Gracias!

¡Ya Desactive el Adblock!