• No se han encontrado resultados

Base de Datos Oracle 10g Conceptos Fundamentales de SQL II

N/A
N/A
Protected

Academic year: 2021

Share "Base de Datos Oracle 10g Conceptos Fundamentales de SQL II"

Copied!
355
0
0

Texto completo

(1)

Base de Datos Oracle 10g:

Conceptos Fundamentales

de SQL II

Guía del Alumno • Volumen 1

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(2)

Prefacio

I Introducción Objetivos I-2

Objetivos del Curso I-3 Visión General del Curso I-4 Aplicación del Curso 1-5 Resumen I-6

1 Control de Acceso de Usuarios Objetivos 1-2

Control de Acceso de Usuarios 1-3 Privilegios 1-4

Privilegios del Sistema 1-5 Creación de Usuarios 1-6

Privilegios del Sistema de Usuario 1-7 Otorgamiento de Privilegios del Sistema 1-8 ¿Qué es un Rol? 1-9

Creación y Otorgamiento de Privilegios a un Rol 1-10 Cambio de Contraseñas 1-11

Privilegios de Objeto 1-12

Otorgamiento de Privilegios de Objeto 1-14 Transferencia de Privilegios 1-15

Confirmación de Privilegios Otorgados 1-16 Revocación de Privilegios de Objeto 1-17 Resumen 1-19

Práctica 1: Visión General 1-20 2 Gestión de Objetos de Esquema

Objetivos 2-2

Sentencia ALTER TABLE 2-3 Adición de una Columna 2-5 Modificación de una Columna 2-6 Borrado de una Columna 2-7 Opción SET UNUSED 2-8

Adición de una Sintaxis de Restricción 2-10 Adición de una Restricción 2-11

ON DELETE CASCADE 2-12 Diferir Restricciones 2-13 Borrado de una Restricción 2-14

Contenido

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(3)

Activación de Restricciones 2-16 Restricciones en Cascada 2-18 Visión General de Índices 2-20

CREATE INDEX con Sentencia CREATE TABLE 2-21 Índices Basados en Funciones 2-23

Eliminación de un Índice 2-24 DROP TABLE ...PURGE 2-25 Sentencia FLASHBACK TABLE 2-26 Tablas Externas 2-28

Creacisn de un Directorio para la Tabla Externa 2-30 Creación de una Tabla Externa 2-32

Creación de una Tabla Externa mediante ORACLE_LOADER 2-34 Consulta de Tablas Externas 2-36

Resumen 2-37

Práctica 2: Visión General 2-38

3 Manipulación de Grandes Juegos de Datos Objetivos 3-2

Uso de Subconsultas para Manipular Datos 3-3 Copia de Filas de Otra Tabla 3-4

Inserción mediante una Subconsulta como Destino 3-5

Recuperación de Datos con una Subconsulta como Origen 3-7 Actualización de Dos Columnas con una Subconsulta 3-8 Actualización de Filas Basándose en Otra Tabla 3-9 Supresión de Filas Basándose en Otra Tabla 3-10

Uso de las Palabras Clave WITH CHECK OPTION en Sentencias DML 3-11 Visión General de la Función de Valor por Defecto Explícito 3-12

Uso de Valores Por Defecto Explícitos 3-13

Visión General de Sentencias INSERT de Varias Tablas 3-14 Tipos de Sentencias INSERT de Varias Tablas 3-16

Sentencias INSERT de Varias Tablas 3-17 INSERT ALL Incondicional 3-19

INSERT ALL Condicional 3-20 INSERT FIRST Condicional 3-22 INSERT de Pivoting 3-24

Sentencia MERGE 3-27

Sintaxis de la Sentencia MERGE 3-28 Fusión de Filas 3-29

Seguimiento de Cambios en los Datos 3-31

Ejemplo de Consulta de Versiones de Flashback 3-32 Cláusula VERSIONS BETWEEN 3-34

Resumen 3-35

Práctica 3: Visión General 3-36

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(4)

4 Generación de Informes mediante la Agrupación de Datos Relacionados Objetivos 4-2

Revisión de Funciones de Grupo 4-3 Revisión de la Cláusula GROUP BY 4-4 Revisión de la Cláusula HAVING 4-5

GROUP BY con los Operadores ROLLUP y CUBE 4-6 Operador ROLLUP 4-7

Operador ROLLUP: Ejemplo 4-8 Operador CUBE 4-9

Operador CUBE: Ejemplo 4-10 Función GROUPING 4-11

Función GROUPING: Ejemplo 4-12 GROUPING SETS 4-13

GROUPING SETS: Ejemplo 4-15 Columnas Compuestas 4-17

Columnas Compuestas: Ejemplo 4-19 Agrupamientos Concatenados 4-21

Agrupamientos Concatenados: Ejemplo 4-22 Resumen 4-23

Práctica 4: Visión General 4-24

5 Gestión de Datos en Zonas Horarias Diferentes Objetivos 5-2

Zonas Horarias 5-3

Parámetro de Sesión TIME_ZONE 5-4

CURRENT_DATE, CURRENT_TIMESTAMP y LOCALTIMESTAMP 5-5 CURRENT_DATE 5-6

CURRENT_TIMESTAMP 5-7 LOCALTIMESTAMP 5-8

DBTIMEZONE y SESSIONTIMEZONE 5-9 Tipo de Datos TIMESTAMP 5-10

Tipos de Datos TIMESTAMP 5-11 Campos TIMESTAMP 5-12

Diferencia entre DATE y TIMESTAMP 5-13

Tipo de Datos TIMESTAMP WITH TIME ZONE 5-14 TIMESTAMP WITH TIMEZONE: Ejemplo 5-15 TIMESTAMP WITH LOCAL TIMEZONE 5-16

TIMESTAMP WITH LOCAL TIMEZONE: Ejemplo 5-17 Tipos de Datos INTERVAL 5-18

Campos INTERVAL 5-20

Tipo de Datos INTERVAL YEAR TO MONTH 5-21 INTERVAL YEAR TO MONTH: Ejemplo 5-22

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(5)

Tipo de Datos INTERVAL DAY TO SECOND: Ejemplo 5-24 EXTRACT 5-25

TZ_OFFSET 5-26

Conversión de TIMESTAMP mediante FROM_TZ 5-28

Conversión a TIMESTAMP mediante TO_TIMESTAMP y TO_TIMESTAMP_TZ 5-29 Conversión de Intervalo de Tiempo con TO_YMINTERVAL 5-30

Uso de TO_DSINTERVAL: Ejemplo 5-31 Horario de Verano 5-32

Resumen 5-34

Práctica 5: Visión General 5-35

6 Recuperación de Datos mediante Subconsultas Objetivos 6-2

Subconsultas de Varias Columnas 6-3 Comparaciones de Columnas 6-4

Subconsulta de Comparación entre Pares 6-5 Subconsulta de Comparación entre No Pares 6-6 Expresiones de Subconsultas Escalares 6-7 Subconsultas Escalares: Ejemplos 6-8 Subconsultas Correlacionadas 6-10

Uso de Subconsultas Correlacionadas 6-12 Uso del Operador EXISTS 6-14

Búsqueda de Empleados que Tengan al Menos una Persona a sus Órdenes 6-15 Búsqueda de Todos los Departamentos que No Tengan Empleados 6-16

Consulta Correlacionada: UPDATE 6-17

Uso de Consultas Correlacionadas: UPDATE 6-18 Consulta Correlacionada: DELETE 6-20

Uso de Consultas Correlacionadas: DELETE 6-21 Cláusula WITH 6-22

Cláusula WITH: Ejemplo 6-23 Resumen 6-25

Práctica 6: Visión General 6-27 7 Recuperación Jerárquica

Objetivos 7-2

Ejemplo de Datos de la Tabla EMPLOYEES 7-3 Estructura de Árbol Natural 7-4

Consultas Jerárquicas 7-5 Desplazamiento por el Árbol 7-6

Desplazamiento por el Árbol: De Abajo Arriba 7-8 Desplazamiento por el Árbol: De Arriba Abajo 7-9

Clasificación de Filas con la Pseudocolumna LEVEL 7-10 Formato de Informes Jerárquicos mediante LEVEL y LPAD 7-11 Eliminación de Ramas 7-13

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(6)

Resumen 7-14

Práctica 7: Visión General 7-15 8 Soporte de Expresiones Normales

Objetivos 8-2

Visión General de Expresiones Normales 8-3 Metacaracteres 8-4

Uso de Metacaracteres 8-5

Funciones de Expresiones Normales 8-7 Sintaxis de la Función REGEXP 8-8 Realización de Búsquedas Básicas 8-9

Comprobación de la Presencia de un Patrón 8-10 Ejemplo de Extracción de Subcadenas 8-11 Sustitución de Patrones 8-12

Expresiones Normales y Restricciones de Control 8-13 Resumen 8-14

Práctica 8: Visión General 8-15 Apéndice A: Soluciones a la Práctica Apéndice B: Descripciones de Tabla

Apéndice C: Escritura de Archivos de Comandos Avanzados Objetivos C-2

Uso de SQL para Generar SQL C-3

Creación de un Archivo de Comandos Básico C-4 Control del Entorno C-5

La Imagen Completa C-6

Volcado del Contenido de una Tabla en un Archivo C-7 Generación de un Predicado Dinámico C-9

Resumen C-11

Apéndice D: Componentes de la Arquitectura Oracle Objetivos D-2

Arquitectura de la Base de Datos Oracle: Visión General D-3 Arquitectura Física de la Base de Datos D-4

Archivos de Control D-5 Archivos Redo Log D-6

Tablespaces y Archivos de Datos D-7 Segmentos, Extensiones y Bloques D-8 Gestión de Instancias Oracle D-9

Estructuras de Memoria Oracle D-10 Procesos Oracle D-12

Otras Estructuras Físicas Clave D-13

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(7)

Conexión a una Instancia D-15 Procesamiento de una Consulta D-17 Pool Compartido D-18

Caché de Buffers de Base de Datos D-20 PGA (Área Global de Programas) D-21 Procesamiento de una Sentencia DML D-22 Buffer de Redo Log D-24

Segmento de Rollback D-25 Procesamiento COMMIT D-26 Resumen D-28

Índice

Prácticas Adicionales

Soluciones a las Prácticas Adicionales

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(8)

Prefacio

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(9)

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(10)

Perfil

Antes de Empezar Este Curso

• Antes de empezar el curso, debe tener experiencia práctica con SQL. Requisitos

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL I

Organización de Este Curso

Base de Datos Oracle 10g: Conceptos Fundamentales de SQL II es un curso dirigido por un instructor

que ofrece clases teóricas y ejercicios prácticos. Las demostraciones en línea y las sesiones de prácticas escritas refuerzan los conceptos y los conocimientos introducidos.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(11)

Publicaciones Adicionales

• Boletines de versión de sistema • Guías de usuario y de instalación • Archivos read-me

• Artículos de IOUG (International Oracle User’s Group) • Oracle Magazine

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(12)

Convenciones Tipográficas

Convenciones Tipográficas del Texto

Convención Elemento Ejemplo Negrita Frases y palabras enfatizadas

sólo en el contenido Web

Para navegar dentro de esta aplicación, no haga clic en los botones Back y Forward. Cursiva

negrita

Términos de glosario (si hay algún glosario)

El algoritmo inserta la clave nueva.

Corchetes Nombres de tecla Pulse [Enter]. Mayúsculas

y minúsculas Botones, casillas de control, disparadores, ventanas

Haga clic en el botón Executable. Active la casilla de control Registration Required.

Asigne un disparador When-Validate-Item. Abra la ventana Master Schedule.

Corchetes angulares

Rutas de acceso de menú Seleccione File > Save.

Comas Secuencias de teclas Pulse y suelte de una en una las siguientes teclas: [Alt], [F], [D]

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(13)

Convenciones Tipográficas del Texto (continuación) Convención Objeto o Término Ejemplo

Courier New, sensible a mayúsculas/m inúsculas Salida de código, elementos de código SQL y PL/SQL, elementos de código Java, nombres de directorio, nombres de archivo, contraseñas, nombres de ruta de acceso, direcciones URL, datos introducidos por el usuario, nombres de usuario

Salida de código: debug.seti (‘I’,300);

Elementos de código SQL: Utilice el comando SELECT para visualizar la información almacenada en la columna last_name de la tabla emp.

Elementos de código Java: La programación Java afecta a las clases String y StringBuffer.

Nombres de directorio: bin (DOS), $FMHOME (UNIX) Nombres de archivo: Busque el archivo init.ora. Contraseñas: Utilice la contraseña tiger.

Nombres de ruta de acceso: Abra c:\my_docs\projects.

Direcciones URL: Vaya a http://www.oracle.com. Datos introducidos por el usuario: Introduzca 300.

Nombres de usuario: Conéctese como scott. Mayúsculas iniciales Etiquetas de gráficos (siempre que el término no sea un nombre propio)

Dirección de cliente (excepto Oracle Payables)

Cursiva Frases y palabras enfatizadas en

publicaciones impresas, títulos de libros y cursos, variables

No guarde los cambios en la base de datos.

Para obtener más información, consulte Oracle7 Server

SQL Language Reference Manual.

Introduzca [email protected], donde user_id es el nombre de usuario.

Signos más Combinaciones de teclas

Mantenga pulsadas las teclas siguientes: [Control] + [Alt] + [Supr]

Comillas Títulos de capítulo y de lección en

referencias cruzadas, elementos de

interfaz con

nombres largos que sólo tienen las iniciales en mayúsculas

Este tema se trata en la Unidad II, Lección 3, “Trabajo con Objetos”.

Seleccione el componente “Include a reusable module component” y haga clic en Finish.

Utilice la propiedad “WHERE clause of query”.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(14)

Convenciones Tipográficas (continuación)

Convenciones Tipográficas de las Rutas de Acceso de Navegación

Este curso utiliza rutas de acceso de navegación simplificadas, como la del siguiente ejemplo, para guiarlo a través de las aplicaciones Oracle.

Ejemplo:

Invoice Batch Summary

(N) Invoice > Entry > Invoice Batches Summary (M) Query > Find (B) Approve Esta ruta de acceso simplificada significa lo siguiente:

1. (N) En la ventana del navegador, seleccione Invoice > Entry > Invoice Batches Summary. 2. (M) En el menú, seleccione Query > Find.

3. (B) Haga clic en el botón Approve. Notación:

(N) = Navegador (I) = Icono

(M) = Menú (H) = Enlace de hipertexto (S) = Separador (B) = Botón

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(15)

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(16)

Introducción

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(17)

Objetivos

Al finalizar esta lección, debería estar capacitado para:

Mostrar los objetivos del curso

Describir las tablas de ejemplo utilizadas en el curso

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(18)

Objetivos del Curso

Al finalizar este curso, debería estar capacitado para:

Utilizar técnicas SQL avanzadas de recuperación

de datos para recuperar datos de tablas de base

de datos

Aplicar técnicas avanzadas en una práctica que

simule la vida real

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(19)

Visión General del Curso

En este curso, utilizará técnicas avanzadas SQL de

recuperación de datos como:

Funciones de fecha/hora

GROUPING SETS y operadores ROLLUP y CUBE

Consultas jerárquicas

Subconsultas correlacionadas

Inserciones de varias tablas

Operación de fusión (merge)

Tablas externas

Uso de expresiones normales

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(20)

Aplicación del Curso

EMPLOYEES DEPARTMENTS

COUNTRIES REGIONS

LOCATIONS

Tablas Utilizadas en el Curso

En el curso, se utilizan las siguientes tablas:

EMPLOYEES: La tabla EMPLOYEES contiene información sobre todos los empleados como

nombre y apellido, identificador de puesto, salario, fecha de contratación, identificador de departamento e identificador de supervisor. Esta tabla es secundaria de la tabla DEPARTMENTS.

DEPARTMENTS: La tabla DEPARTMENTS contiene información como identificador de

departamento, nombre de departamento, identificador de supervisor e identificador de ubicación. Esta tabla es la tabla de clave primaria de la tabla EMPLOYEES.

LOCATIONS: Esta tabla contiene información de la ubicación de departamentos. Contiene

información de identificador de ubicación, calle, ciudad, estado o provincia, código postal e identificador de país. Es la tabla de clave primaria de la tabla DEPARTMENTS y secundaria de la tabla COUNTRIES.

COUNTRIES: Esta tabla contiene los nombres de país, los identificadores de país y los

identificadores de región. Es secundaria de la tabla REGIONS. Es la tabla de clave primaria de la tabla LOCATIONS.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(21)

Resumen

En esta lección, ha aprendido lo siguiente:

Objetivos del curso

Tablas de ejemplo utilizadas en el curso

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(22)

Control de Acceso de Usuarios

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(23)

Objetivos

Al finalizar esta lección, debería estar capacitado para:

Diferenciar los privilegios del sistema de los de

objeto

Otorgar privilegios en tablas

Ver privilegios en el diccionario de datos

Otorgar roles

Distinguir entre privilegios y roles

Objetivos

En esta lección, aprenderá a controlar el acceso a base de datos para objetos específicos y a agregar nuevos usuarios con diferentes niveles de privilegios de acceso.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(24)

Control de Acceso de Usuarios

Administrador

de la base

de datos

Usuarios

Nombre de usuario y contraseña

Privilegios

Control de Acceso de Usuarios

En un entorno de varios usuarios, necesita mantener la seguridad del acceso y el uso de la base de datos. Con la seguridad de base de datos de Oracle Server, puede:

• Controlar el acceso a la base de datos

• Otorgar acceso a objetos específicos de la base de datos

• Confirmar los privilegios otorgados y recibidos con el diccionario de datos Oracle • Crear sinónimos para objetos de base de datos

La seguridad de base de datos se puede clasificar en dos categorías: seguridad del sistema y seguridad de los datos. La seguridad del sistema cubre el acceso y el uso de la base de datos en el nivel del sistema como, por ejemplo, nombre de usuario y contraseña, el espacio en disco asignado a los usuarios y las operaciones del sistema que pueden realizar los usuarios. La seguridad de datos cubre el acceso y el uso de los objetos de base de datos y las acciones que esos usuarios pueden llevar a cabo en los objetos.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(25)

Privilegios

Seguridad de base de datos:

– Seguridad del sistema

– Seguridad de datos

Privilegios del sistema: Obtención de acceso a la

base de datos

Privilegios de objeto: Manipulación del contenido

de los objetos de base de datos

Esquemas: Recopilaciones de objetos como, por

ejemplo, tablas, vistas y secuencias

Privilegios

Los privilegios son el derecho a ejecutar sentencias SQL en particular. El DBA (administrador de la base de datos) es un usuario de alto nivel con la capacidad de crear usuarios y de

otorgarles acceso a la base de datos y a sus objetos. Los usuarios necesitan privilegios del

sistema para obtener acceso a la base de datos y privilegios de objeto para manipular el

contenido de los objetos de la base de datos. A los usuarios también se les puede otorgar el privilegio de otorgar privilegios adicionales a otros usuarios o a roles, que son grupos especificados de privilegios relacionados.

Esquemas

Un esquema es una recopilación de objetos como, por ejemplo, tablas, vistas y secuencias. El esquema es propiedad de un usuario de base de datos y tiene el mismo nombre que el usuario. Para obtener más información, consulte el manual de referencia Oracle Database 10g

Application Developer’s Guide – Fundamentals.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(26)

Privilegios del Sistema

Hay más de 100 privilegios disponibles.

El administrador de la base de datos tiene

privilegios del sistema de alto nivel para tareas

como, por ejemplo:

– Creación de usuarios nuevos

– Eliminación de usuarios

– Eliminación de tablas

– Realización de copias de seguridad de tablas

Privilegios del Sistema

Los usuarios y los roles tienen a su disposición más de 100 privilegios del sistema distintos. Los privilegios del sistema suelen ser proporcionados por el administrador de la base de datos.

Privilegios de DBA Típicos

Privilegio del Sistema Operaciones Autorizadas

CREATE USER La persona a la que se otorga el privilegio puede crear otros usuarios de Oracle

DROP USER La persona a la que se otorga el privilegio puede borrar otro usuario.

DROP ANY TABLE La persona a la que se otorga el privilegio puede borrar una tabla de cualquier esquema.

BACKUP ANY TABLE La persona a la que se otorga el privilegio puede realizar copias de seguridad de cualquier esquema con la utilidad de exportación. SELECT ANY TABLE La persona a la que se otorga el privilegio puede consultar tablas,

vistas o instantáneas en cualquier esquema.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(27)

Creación de Usuarios

El DBA crea usuarios mediante la sentencia CREATE USER.

CREATE USER HR

IDENTIFIED BY

HR;

User created.

CREATE USER user

IDENTIFIED BY password;

Creación de un Usuario

Para crear el usuario, el DBA ejecuta la sentencia CREATE USER. El usuario no tiene ningún privilegio en ese momento. Por tanto, el DBA puede otorgar privilegios a ese usuario. Estos privilegios determinan lo que el usuario podrá hacer en el nivel de base de datos.

La diapositiva muestra la sintaxis resumida para crear un usuario. En la sintaxis:

user es el nombre del usuario que se va a crear

Password especifica que el usuario se debe conectar con esta contraseña

Para obtener más información, consulte Oracle Database 10g SQL Reference, “GRANT” y “CREATE USER”.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(28)

Privilegios del Sistema de Usuario

Una vez creado el usuario, el DBA le puede otorgar

privilegios del sistema específicos.

Un desarrollador de aplicaciones, por ejemplo,

puede tener los siguientes privilegios del sistema:

– CREATE SESSION

– CREATE TABLE

– CREATE SEQUENCE

– CREATE VIEW

– CREATE PROCEDURE

GRANT privilege [, privilege...]

TO user [, user| role, PUBLIC...];

Privilegios de Usuario Típicos

Una vez creado el usuario, el DBA le puede asignar privilegios.

En la sintaxis:

privilege es el privilegio del sistema que se va a otorgar

user |role|PUBLIC es el nombre del usuario, el nombre del rol o, en el caso de PUBLIC, designa que el privilegio se otorga a todos los usuarios

Privilegio del Sistema Operaciones Autorizadas CREATE SESSION Conectarse a la base de datos

CREATE TABLE Crear tablas en el esquema del usuario

CREATE SEQUENCE Crear una secuencia en el esquema del usuario CREATE VIEW Crear una vista en el esquema del usuario

CREATE PROCEDURE Crear un procedimiento, una función o un paquete en el esquema del usuario

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(29)

Otorgamiento de Privilegios del Sistema

El DBA puede otorgar privilegios del sistema específicos

a un usuario.

GRANT

create session, create table,

create sequence, create view

TO

scott;

Grant succeeded.

Otorgamiento de Privilegios del Sistema

El DBA utiliza la sentencia GRANT para asignar privilegios del sistema al usuario. Una vez que se le han otorgado los privilegios al usuario, éste puede utilizarlos de forma inmediata. En el ejemplo de la diapositiva, se han asignado al usuario Scott privilegios para crear sesiones, tablas, secuencias y vistas.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(30)

¿Qué es un Rol?

Asignación de privilegios sin un rol Asignación de privilegios con un rol Privilegios Usuarios Gestor ¿Qué es un Rol?

Un rol es un grupo especificado de privilegios relacionados que se pueden otorgar al usuario. Este método facilita la revocación y el mantenimiento de privilegios.

Un usuario puede tener acceso a varios roles y se puede asignar a varios usuarios el mismo rol. Los roles se suelen crear para una aplicación de base de datos.

Creación y Asignación de un Rol

En primer lugar, el DBA debe crear el rol. Después, el DBA puede asignar privilegios al rol y asignar el rol a usuarios.

Sintaxis

CREATE ROLE role;

En la sintaxis:

role es el nombre del rol que se va a crear

Una vez creado el rol, el DBA puede utilizar la sentencia GRANT para asignar el rol a usuarios, del mismo modo que puede asignar privilegios al rol.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(31)

Creación y Otorgamiento de Privilegios a un Rol

Cree un rol

Otorgue privilegios a un rol

Otorgue un rol a usuarios

CREATE ROLE manager;

Role created.

GRANT create table, create view

TO manager;

Grant succeeded.

GRANT manager TO DE HAAN, KOCHHAR;

Grant succeeded.

Creación de un Rol

El ejemplo de la diapositiva crea un rol de gestor y, a continuación, permite a los gestores crear tablas y vistas. Otorga después a De Haan y a Kochhar el rol de gestores. De Haan y Kochhar ya pueden crear tablas y vistas.

Si se otorga a los usuarios varios roles, reciben todos los privilegios asociados a esos roles.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(32)

Cambio de Contraseñas

El DBA crea la cuenta de usuario e inicializa la

contraseña.

La contraseña se puede cambiar mediante la

sentencia ALTER USER.

ALTER USER HR

IDENTIFIED BY employ;

User altered.

Cambio de Contraseñas

El DBA crea una cuenta e inicializa una contraseña para cada usuario. La contraseña se puede cambiar mediante la sentencia ALTER USER.

Sintaxis

ALTER USER user IDENTIFIED BY password;

En la sintaxis:

user es el nombre del usuario

password especifica la nueva contraseña

Aunque esta sentencia se puede utilizar para cambiar la contraseña, hay muchas otras opciones. Debe tener el privilegio ALTER USER para cambiar cualquier otra opción. Para obtener más información, consulte el manual Oracle Database 10g SQL Reference.

Nota: SQL*Plus dispone de un comando PASSWORD (PASSW) que se puede utilizar para

cambiar la contraseña de un usuario cuando éste está conectado. Este comando no está disponible en iSQL*Plus.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(33)

Privilegios de Objeto

Privilegios

de Objeto Tabla Vista Secuencia Procedimiento

ALTER √ √ DELETE √ √ EXECUTEINDEXINSERT √ √ REFERENCESSELECT √ √ √ UPDATE √ √ Privilegios de Objeto

Un privilegio de objeto es un privilegio o un derecho a realizar una acción determinada en una tabla, una vista, una secuencia o un procedimiento específicos. Cada objeto dispone de un juego determinado de privilegios que se pueden otorgar. La tabla de la diapositiva muestra los privilegios de varios objetos. Tenga en cuenta que los únicos privilegios que se aplican a una secuencia son SELECT y ALTER. UPDATE, REFERENCES e INSERT se pueden restringir mediante la especificación de un subjuego de columnas que se puedan actualizar. Para restringir un privilegio SELECT, se puede crear una vista con un subjuego de columnas y otorgar el privilegio SELECT únicamente en la vista. Un privilegio otorgado en un sinónimo se convierte en un privilegio en la tabla base a la que haga referencia el sinónimo.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(34)

Privilegios de Objeto

Los privilegios de objeto varían de un objeto a otro.

Un propietario tiene todos los privilegios en el objeto.

Un propietario puede otorgar privilegios específicos

en el objeto del que es propietario.

GRANT

object_priv [(columns)]

ON

object

TO

{user|role|PUBLIC}

[WITH GRANT OPTION];

Otorgamiento de Privilegios de Objeto

Existen diferentes privilegios de objeto disponibles para diferentes tipos de objetos de esquema. Un usuario tiene automáticamente todos los privilegios de objeto para objetos de esquema contenidos en el esquema del usuario. Un usuario puede otorgar cualquier privilegio de objeto en cualquier objeto de esquema que sea propiedad del usuario a cualquier otro usuario o rol. Si el otorgamiento incluye WITH GRANT OPTION, la persona a la que se otorga el privilegio puede otorgar a su vez el privilegio de objeto a otros usuarios; de lo contrario, la persona a la que se otorga el privilegio lo puede utilizar pero no lo puede otorgar a otros usuarios.

En la sintaxis:

object_priv es un privilegio de objeto que se va a otorgar ALL especifica todos los privilegios de objeto

columns especifica la columna de una tabla o de una vista en la que se otorgan los privilegios

ON object es el objeto en el que se otorgan privilegios TO identifica a quién se otorga el privilegio

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(35)

Otorgamiento de Privilegios de Objeto

Otorgue privilegios de consulta en la tabla EMPLOYEES.

Otorgue privilegios para actualizar columnas

específicas para usuarios y roles.

GRANT

select

ON

employees

TO

sue, rich;

Grant succeeded.

GRANT

update (department_name, location_id)

ON

departments

TO

scott, manager;

Grant succeeded.

Instrucciones

• Para otorgar privilegios en un objeto, éste debe estar en el esquema o le deben haber otorgado los privilegios de objeto con la cláusula WITH GRANT OPTION.

• Un propietario de objeto puede otorgar cualquier privilegio de objeto a cualquier otro usuario o rol de la base de datos.

• El propietario de un objeto adquiere automáticamente todos los privilegios de objeto en ese objeto.

El primer ejemplo de la diapositiva otorga a los usuarios Sue y Rich el privilegio para

consultar la tabla EMPLOYEES. El segundo ejemplo otorga privilegios UPDATE en columnas específicas de la tabla DEPARTMENTS a Scott y al rol de gestor.

Si Sue o Rich quieren utilizar ahora una sentencia SELECT para obtener datos de la tabla EMPLOYEES, la sintaxis que deben utilizar es:

SELECT * FROM HR.employees;

De forma alternativa, pueden crear un sinónimo para la tabla y emitir una sentencia SELECT desde el sinónimo:

CREATE SYNONYM emp FOR HR.employees; SELECT * FROM emp;

Nota: Los DBA suelen asignar privilegios del sistema; cualquier usuario propietario de un

objeto puede otorgar privilegios de objeto.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(36)

Transferencia de Privilegios

Autorice a un usuario a transferir privilegios.

Permita a todos los usuarios del sistema consultar

datos de la tabla DEPARTMENTS de Alice.

GRANT

select, insert

ON

departments

TO

scott

WITH GRANT OPTION;

Grant succeeded.

GRANT

select

ON

alice.departments

TO

PUBLIC;

Grant succeeded.

Palabras Clave WITH GRANT OPTION

La persona a la que se otorga un privilegio que se otorgue con la cláusula WITH GRANT OPTION lo puede transferir a otros usuarios y roles. Los privilegios de objeto otorgados con la cláusula WITH GRANT OPTION se revocan si se revoca el privilegio del otorgante. El ejemplo de la diapositiva otorga al usuario Scott acceso a la tabla DEPARTMENTS con los privilegios para consultar la tabla y agregarle filas. El ejemplo muestra también que Scott puede otorgar a otros estos privilegios.

Palabra Clave PUBLIC

Un propietario de la tabla puede otorgar acceso a todos los usuarios mediante la palabra clave PUBLIC.

El segundo ejemplo permite a todos los usuarios del sistema consultar datos de la tabla DEPARTMENTS de Alice.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(37)

Confirmación de Privilegios Otorgados

Vista del Diccionario de Datos Descripción

ROLE_SYS_PRIVS Privilegios del sistema otorgados a roles ROLE_TAB_PRIVS Privilegios de la tabla otorgados a roles USER_ROLE_PRIVS Roles a los que puede acceder el usuario USER_TAB_PRIVS_MADE Privilegios de objeto otorgados en los

objetos del usuario

USER_TAB_PRIVS_RECD Privilegios de objeto otorgados al usuario USER_COL_PRIVS_MADE Privilegios de objeto otorgados en las

columnas de los objetos del usuario

USER_COL_PRIVS_RECD Privilegios de objeto otorgados al usuario en columnas específicas

USER_SYS_PRIVS Privilegios del sistema otorgados al usuario

Confirmación de Privilegios Otorgados

Si intenta realizar una operación no autorizada, como suprimir una fila de una tabla para la que no tiene el privilegio DELETE, Oracle Server no permite que la operación se realice. Si recibe el mensaje de error de Oracle Server “table or view does not exist”, es porque ha realizado una de estas acciones:

• Ha especificado una tabla o una vista que no existen

• Ha intentado realizar una operación en una tabla o en una vista para la que no tiene el privilegio adecuado

Puede acceder al diccionario de datos para ver los privilegios de los que dispone. El gráfico de la diapositiva describe varias vistas de diccionario de datos.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(38)

Revocación de Privilegios de Objeto

Utilice la sentencia REVOKE para revocar privilegios

otorgados a otros usuarios.

También se revocan los privilegios otorgados a

otros mediante la cláusula WITH GRANT OPTION.

REVOKE {privilege [, privilege...]|ALL}

ON

object

FROM {user[, user...]|role|PUBLIC}

[CASCADE CONSTRAINTS];

Revocación de Privilegios de Objeto

Puede eliminar privilegios otorgados a otros usuarios mediante la sentencia REVOKE. Al utilizar la sentencia REVOKE, los privilegios que especifique se revocarán de los usuarios que especifique y de cualquier otro usuario a quien el usuario revocado hubiera otorgado esos privilegios.

En la sintaxis:

CASCADE es necesario para eliminar cualquier restricción de integridad referencial realizada en el objeto CONSTRAINTS mediante el privilegio REFERENCES

Para obtener más información, consulte Oracle Database 10g SQL Reference.

Nota: Si revoca los privilegios de un usuario que debe dejar la compañía, debe volver a

otorgar cualquier privilegio que este usuario hubiera otorgado a otros usuarios. Si borra la cuenta de usuario sin revocarle los privilegios, esta acción no afectará a los privilegios del sistema otorgados por este usuario a otros usuarios.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(39)

Revocación de Privilegios de Objeto

Como usuario Alice, revoque los privilegios SELECT e

INSERT otorgados al usuario Scott en la tabla

DEPARTMENTS.

REVOKE

select, insert

ON

departments

FROM

scott;

Revoke succeeded.

Revocación de Privilegios de Objeto (continuación)

El ejemplo de la diapositiva revoca los privilegios SELECT e INSERT otorgados al usuario Scott en la tabla DEPARTMENTS.

Nota: Si se otorga un privilegio a un usuario con la cláusula WITH GRANT OPTION, ese

usuario también puede otorgar el privilegio con la cláusula WITH GRANT OPTION, de forma que es posible una larga cadena de personas a las que se otorgan privilegios, aunque no se permiten otorgamientos circulares. Si el propietario revoca un privilegio de un usuario que otorgó dicho privilegio a otros usuarios, se revocarán en cascada todos los privilegios

otorgados.

Por ejemplo, si el usuario A otorga un privilegio SELECT en una tabla al usuario B con la cláusula WITH GRANT OPTION, el usuario B también puede otorgar al usuario C el privilegio SELECT con la cláusula WITH GRANT OPTION y el usuario C puede otorgar al usuario D el privilegio SELECT. Si el usuario A revoca los privilegios del usuario B, los privilegios otorgados a los usuarios C y D también se revocan.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(40)

Resumen

En esta lección, ha obtenido información acerca de

sentencias que controlan el acceso a la base de datos

y a objetos de base de datos.

Sentencia Acción

CREATE USER Crea un usuario (la suele realizar un DBA) GRANT Otorga a otros usuarios privilegios para

acceder a objetos

CREATE ROLE Crea una recopilación de privilegios (la suele realizar un DBA)

ALTER USER Cambia la contraseña de un usuario

REVOKE Elimina privilegios en un objeto de usuarios

Resumen

Los DBA establecen la seguridad de base de datos inicial para los usuarios asignándoles privilegios.

• El DBA crea usuarios que deben tener una contraseña. El DBA es responsable además de establecer los privilegios iniciales del sistema para un usuario.

• Cuando el usuario ha creado un objeto, puede transferir cualquiera de los privilegios de objeto disponibles a otros usuarios o a todos los usuarios mediante la sentencia GRANT. • Un DBA puede crear roles mediante la sentencia CREATE ROLE para transferir una

recopilación de privilegios del sistema o de objeto a varios usuarios. Los roles facilitan el mantenimiento del otorgamiento y de la revocación de privilegios.

• Los usuarios pueden cambiar la contraseña mediante la sentencia ALTER USER. • Puede eliminar privilegios otorgados a otros usuarios mediante la sentencia REVOKE. • Con las vistas de diccionario de datos, los usuarios pueden ver los privilegios que se les

han otorgado y los que se han otorgado a sus objetos.

• Con los enlaces de base de datos, puede acceder a datos en bases de datos remotas. No se pueden otorgar privilegios en objetos remotos.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(41)

Práctica 1: Visión General

Esta práctica cubre los temas siguientes:

Otorgamiento a otros usuarios de privilegios de

su tabla

Modificación de la tabla de otro usuario a través

de los privilegios que se le han otorgado

Creación de sinónimos

Consulta de las vistas de diccionario de datos

relacionadas con privilegios

Práctica 1: Visión General

Forme un equipo con otros alumnos para este ejercicio sobre el control del acceso a los objetos de base de datos.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(42)

Práctica 1

Para contestar a la pregunta 6 y a las posteriores, se deberá conectar a la base de datos mediante iSQL*Plus. Para ello, inicie el explorador Internet Explorer desde el escritorio del cliente. Introduzca la dirección URL en formato http://machinename:5561/isqlplus/ y utilice la cuenta oraxx y la contraseña y el identificador de servicio correspondientes (en formato

Tx) que le proporcione el instructor para conectarse a la base de datos.

1. ¿Qué privilegio se debe otorgar a un usuario para conectarse a Oracle Server? ¿Se trata de un privilegio de objeto o del sistema?

_____________________________________________________________________ 2. ¿Qué privilegio se debe otorgar a un usuario para crear tablas?

_____________________________________________________________________ 3. Si crea una tabla, ¿quién puede transferir privilegios a otros usuarios en su tabla?

_____________________________________________________________________ 4. Usted es el DBA. Está creando muchos usuarios que requieren los mismos privilegios

del sistema.

¿Qué debería utilizar para facilitar el trabajo?

_____________________________________________________________________ 5. ¿Qué comando se utiliza para cambiar la contraseña?

_____________________________________________________________________ 6. Otorgue acceso a su tabla DEPARTMENTS a otro usuario. Haga que el usuario le

otorgue acceso de consulta a su tabla DEPARTMENTS. 7. Consulte todas las filas de la tabla DEPARTMENTS.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(43)

como número de departamento 500. El equipo 2 debe agregar Human Resources como número de departamento 510. Consulte la tabla del otro equipo.

9. Cree un sinónimo para la tabla DEPARTMENTS del otro equipo.

10. Consulte todas las filas de la tabla DEPARTMENTS del otro equipo mediante el sinónimo.

Team 1 SELECT statement results:

Team 2 SELECT statement results:

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(44)

Práctica 1 (continuación)

11. Consulte el diccionario de datos USER_TABLES para ver información sobre las tablas que son de su propiedad.

12. Consulte la vista de diccionario de datos ALL_TABLES para ver información sobre todas las tablas a las que puede acceder. Excluya las tablas de su propiedad.

Nota: La lista que obtenga puede que no coincida exactamente con la que se muestra a

continuación.

13. Revoque el privilegio SELECT del otro equipo.

14. Elimine la fila que insertó en la tabla DEPARTMENTS en el paso 8 y guarde los cambios.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(45)

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(46)

Gestión de Objetos de Esquema

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(47)

Objetivos

Al finalizar esta lección, debería estar capacitado para:

Agregar restricciones

Crear índices

Crear índices mediante la sentencia CREATE

TABLE

Crear índices basados en funciones

Borrar columnas y definir columnas como UNUSED

Realizar operaciones FLASHBACK

Crear y utilizar tablas externas

Objetivos

Esta lección contiene información sobre la creación de índices y restricciones, así como sobre la modificación de objetos existentes. También recibirá información sobre tablas externas y la provisión para asignar un nombre el índice en el momento de la creación de una restricción de clave primaria.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(48)

Sentencia ALTER TABLE

Utilice la sentencia ALTER TABLE para:

Agregar una nueva columna

Modificar una columna existente

Definir un valor por defecto para la nueva columna

Borrar una columna

Sentencia ALTER TABLE

Después de crear una tabla, puede que necesite cambiar la estructura de tabla porque ha omitido una columna, se debe cambiar la definición de columna o debe eliminar columnas. Puede hacerlo mediante la sentencia ALTER TABLE.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(49)

Sentencia ALTER TABLE

Utilice la sentencia ALTER TABLE para agregar,

modificar o borrar columnas.

ALTER TABLE table

ADD

(column datatype [DEFAULT expr]

[, column datatype]...);

ALTER TABLE table

MODIFY

(column datatype [DEFAULT expr]

[, column datatype]...);

ALTER TABLE table

DROP

(column);

Sentencia ALTER TABLE (continuación)

Puede agregar columnas a una tabla, modificar columnas y borrar columnas de una tabla mediante la sentencia ALTER TABLE.

En la sintaxis:

table es el nombre de la tabla ADD|MODIFY|DROP es el tipo de modificación

column es el nombre de la nueva columna

datatype es el tipo de datos y la longitud de la nueva columna DEFAULT expr especifica el valor por defecto para una nueva columna

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(50)

Adición de una Columna

Se utiliza la cláusula ADD para agregar columnas.

La nueva columna se convierte en la última.

ALTER TABLE dept80

ADD

(job_id VARCHAR2(9));

Table altered.

Instrucciones para Agregar una Columna

• Puede agregar o modificar columnas.

• No puede especificar dónde aparecerá la columna. La nueva columna se convierte en la última.

El ejemplo de la diapositiva agrega una columna denominada JOB_ID a la tabla DEPT80. La columna JOB_ID se convierte en la última columna de la tabla.

Nota: Si una tabla ya contiene filas cuando se agrega una columna, la nueva columna es nula

inicialmente para todas las filas. No puede agregar una columna NOT NULL obligatoria a una tabla que contiene datos en otras columnas. Sólo puede agregar una columna NOT NULL a una tabla vacía.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(51)

Modificación de una Columna

Puede cambiar el tipo de datos de una columna,

su tamaño y el valor por defecto.

Un cambio en el valor por defecto sólo afecta a las

siguientes inserciones en la tabla.

ALTER TABLE dept80

MODIFY

(last_name VARCHAR2(30));

Table altered.

Modificación de una Columna

Puede modificar una definición de columna mediante la sentencia ALTER TABLE con la cláusula MODIFY. La modificación de columnas puede incluir cambios en el tipo de datos de una columna, su tamaño y el valor por defecto.

Instrucciones

• Puede aumentar el ancho o la precisión de una columna numérica. • Puede aumentar el ancho de las columnas numéricas o de caracteres. • Puede reducir el ancho de una columna si:

- La columna contiene sólo valores nulos - La tabla no tiene ninguna fila

- La reducción en el ancho de columna no es menor que los valores existentes en esa columna

• Puede cambiar el tipo de datos si la columna contiene sólo valores nulos. La excepción son las conversiones CHAR a VARCHAR2, que se pueden realizar con datos en las columnas.

• Puede convertir una columna CHAR al tipo de datos VARCHAR2 o convertir una

columna VARCHAR2 al tipo de datos CHAR sólo si la columna contiene valores nulos o si no cambia el tamaño.

• Un cambio en el valor por defecto de una columna sólo afecta a las siguientes inserciones en la tabla.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(52)

Borrado de una Columna

Utilice la cláusula DROP COLUMN para borrar las

columnas de la tabla que ya no necesite.

ALTER TABLE dept80

DROP COLUMN job_id;

Table altered.

Borrado de una Columna

Puede borrar una columna de una tabla mediante la sentencia ALTER TABLE con la cláusula DROP COLUMN.

Instrucciones

• La columna puede contener o no datos.

• Mediante la sentencia ALTER TABLE, sólo se puede borrar una columna cada vez. • Debe quedar al menos una columna en la tabla después de la modificación.

• Una vez borrada una columna, no se puede recuperar.

• Una columna no se puede borrar si forma parte de una restricción o de una clave de índice a menos que se agregue la opción de cascada.

• El borrado de una columna puede tardar si la columna tiene muchos valores. En este caso, es posible que sea mejor definirla como no utilizada y borrarla cuando haya menos usuarios en el sistema para evitar bloqueos extendidos.

Nota: Hay columnas que no se pueden borrar nunca, como las que forman parte de la clave de

partición de una tabla particionada o las columnas que forman parte de la clave primaria de una tabla organizada por índice.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(53)

Opción SET UNUSED

Utilice la opción SET UNUSED para marcar una o más

columnas como no utilizadas.

Utilice la opción DROP UNUSED COLUMNS para eliminar

las columnas marcadas como no utilizadas.

ALTER TABLE

<table_name>

SET UNUSED(<column_name>);

ALTER TABLE <table_name>

SET UNUSED COLUMN <column_name>;

OR

ALTER TABLE <table_name>

DROP UNUSED COLUMNS;

Opción SET UNUSED

La opción SET UNUSED marca una o más columnas como no utilizadas para que se puedan borrar cuando la demanda de recursos del sistema sea menor. La especificación de esta cláusula no elimina realmente las columnas de destino de cada fila de la tabla (es decir, no restaura el espacio en disco que utilizan estas columnas). Por lo tanto, el tiempo de respuesta es más rápido que si ejecuta la cláusula DROP. Las columnas no utilizadas se tratan como si se hubieran borrado, incluso aunque sus datos de columna sigan estando en las filas de la tabla. Si una columna se ha marcado como no utilizada, no se puede acceder a ella. Una consulta SELECT * no recuperará datos de columnas no utilizadas. Además los nombres y los tipos de columnas marcadas como no utilizadas no se mostrarán durante una sentencia DESCRIBE y puede agregar una nueva columna a la tabla con el mismo nombre que una columna no utilizada. La información SET UNUSED se almacena en la vista de diccionario USER_UNUSED_COL_TABS.

Nota: Las instrucciones para definir una columna como UNUSED son parecidas a las que se

aplican al borrado de una columna.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(54)

Opción DROP UNUSED COLUMNS

DROP UNUSED COLUMNS elimina de la tabla todas las columnas marcadas actualmente como no utilizadas. Puede utilizar esta sentencia si desea reclamar el espacio en disco

adicional de las columnas no utilizadas en la tabla. Si la tabla no contiene tablas no utilizadas, la sentencia no devuelve ningún error.

ALTER TABLE dept80

SET UNUSED (last_name); Table altered.

ALTER TABLE dept80 DROP UNUSED COLUMNS; Table altered.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(55)

Adición de una Sintaxis de Restricción

Utilice la sentencia ALTER TABLE para:

Agregar o borrar una restricción, pero sin modificar

su estructura

Activar o desactivar restricciones

Agregar una restricción NOT NULL mediante la

cláusula MODIFY

ALTER TABLE

<table_name>

ADD [CONSTRAINT <constraint_name>]

type (<column_name>);

Adición de una Restricción

Puede agregar una restricción para tablas existentes mediante la sentencia ALTER TABLE con la cláusula ADD.

En la sintaxis:

table es el nombre de la tabla

constraint es el nombre de la restricción

type es el tipo de restricción

column es el nombre de la columna a la que afecta la restricción

La sintaxis de nombre de restricción es opcional, aunque se recomienda. Si no asigna nombres a las restricciones, el sistema los generará.

Instrucciones

• Puede agregar, borrar, activar o desactivar una restricción, pero no puede modificar su estructura.

• Puede agregar una restricción NOT NULL a una columna existente mediante la cláusula MODIFY de la sentencia ALTER TABLE.

Nota: Puede definir una columna NOT NULL sólo si la tabla está vacía o si la columna tiene

un valor para todas las filas.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(56)

Adición de una Restricción

Agregue una restricción FOREIGN KEY a la tabla EMP2

que indique que ya debe existir un supervisor como

empleado válido en la tabla EMP2.

ALTER TABLE emp2

modify employee_id Primary Key;

Table altered.

ALTER TABLE emp2

ADD CONSTRAINT emp_mgr_fk

FOREIGN KEY(manager_id)

REFERENCES emp2(employee_id);

Table altered.

Adición de una Restricción (continuación)

El primer ejemplo de la diapositiva modifica la tabla EMP2 para agregar una restricción PRIMARY KEY en la columna EMPLOYEE_ID. Observe que, como no se proporciona un nombre de restricción, Oracle Server lo especifica automáticamente. El segundo ejemplo de la diapositiva crea una restricción FOREIGN KEY en la tabla EMP2. La restricción asegura que existe un supervisor como empleado válido en la tabla EMP2.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

(57)

ON DELETE CASCADE

Suprima las filas secundarias al suprimir una clave

principal.

ALTER TABLE Emp2 ADD CONSTRAINT emp_dt_fk

FOREIGN KEY (Department_id)

REFERENCES departments ON DELETE CASCADE);

Table altered.

ON DELETE CASCADE

La acción ON DELETE CASCADE permite que se supriman los datos de clave principal a los que se hace referencia desde la tabla secundaria, pero no que se actualicen. Cuando se

suprimen los datos de la clave principal, también se suprimen todas las filas de la tabla secundaria que dependen de los valores de la clave principal suprimida. Para especificar esta acción referencial, incluya la opción ON DELETE CASCADE en la definición de la

restricción FOREIGN KEY.

Base

de

Datos

Oracle

10g

SQL

Fundamentals

II

Guía

del

Alumno

Referencias

Documento similar

Where possible, the EU IG and more specifically the data fields and associated business rules present in Chapter 2 –Data elements for the electronic submission of information

The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)

(Para un análisis más detallado de las relaciones entre la Teoría del Arte y Teoría de la Literatura (Cf. A., e n Biblioteca Virtual Miguel de Cervantes:

Y tendiendo ellos la vista vieron cuanto en el mundo había y dieron las gracias al Criador diciendo: Repetidas gracias os damos porque nos habéis criado hombres, nos

E Clamades andaua sienpre sobre el caua- 11o de madera, y en poco tienpo fue tan lexos, que el no sabia en donde estaña; pero el tomo muy gran esfuergo en si, y pensó yendo assi

d) que haya «identidad de órgano» (con identidad de Sala y Sección); e) que haya alteridad, es decir, que las sentencias aportadas sean de persona distinta a la recurrente, e) que