2013 clase1 sql
DESCRIPTION
base de datosTRANSCRIPT
Introducción
INFO 268
Responsabilidad de un DBA
• Tareas del DBA• Instalar Oracle• Crear una base de datos• Planificar requerimientos de espacio• Crear Tablespaces• Crear objetos• Modificar estructura de la Base de Datos• Manejar Seguridad (roles y usuarios).• Controlar y monitorear acceso.• Optimizar performance.• Planificar backup & recovery.• Respaldar y recuperar una base de datos.
Responsabilidad de un Desarrollador
• Tareas del desarrollador.• Diseñar aplicaciones.• Implementar métodos de conexión desde
aplicaciones cliente.• Dimensionamiento de datos.• Especificar adecuaciones a la base de datos.• Tuning de aplicaciones.• Determinar medidas de seguridad.
Repaso SQL
INFO 268
¿Qué es un Esquema?
• Es una recopilación de objetos de base de datos propiedad de un usuario en particular
Acceso a Objetos de Esquema
Nomenclatura de Objetos de Base de Datos
- Los nombres deben tener de 1 a 30 bytes de longitud con las siguientes excepciones: • Los nombres de bases de datos se limitan a 8 bytes.
• Los nombres de enlaces de base de datos pueden tener hasta 128 bytes de longitud.
– Los nombres sin entrecomillar no pueden ser palabras reservadas de Oracle.
- Los nombres sin entrecomillar deben empezar por un carácter alfabético del juego de caracteres de la base de datos.
- No se recomiendan nombres entre comillas.
Especificación de Tipos de Dato en Tablas
• Tipos de dato comunes:
- CHAR(size [BYTE|CHAR]): Datos de tipo carácter de longitud fija en bytes o caracteres especificada por size
- VARCHAR2(size [BYTE|CHAR]): Cadena de caracteres de longitud variable con una longitud máxima en bytes o caracteres especificada por size
- DATE: Rango de fechas válido del 1 de enero de 4712 AC hasta el 31 de diciembre de 9999 DC
- NUMBER(p,s): Número con precisión p y escala s
Tablas
• CREATE TABLE t1 (pk NUMBER PRIMARY KEY, fk NUMBER, c1 NUMBER, c2 NUMBER, CONSTRAINT ri FOREIGN KEY (fk) REFERENCES t1,CONSTRAINT ck1 CHECK (pk > 0 and c1 > 0));
• ALTER TABLE employees ADD CONSTRAINT pk PRIMARY KEY (employee_id)
• ALTER TABLE countries ADD (UNIQUE(country_name) ENABLE NOVALIDATE);
• DROP TABLE hr.employees PURGE;
Vistas
Vista: Consulta almacenada
• Sintaxis: CREATE OR REPLACE VIEW <nombre_vista> AS SELECT
…
• Ejemplo: Vista que muestre el número de estudiantes por comuna: CREATE OR REPLACE VIEW estudiantes_por_comuna AS
select cod_comuna, count(*) Numero from Estudiantes
group by cod_comuna
Vistas del Diccionario de Datos
Diccionario de Datos: Ejemplos de Uso
Secuencias
- Una secuencia es un mecanismo para generar automáticamente enteros que siguen un patrón.
- Una secuencia tiene un nombre, que es la forma en que se hace referencia a ella cuando se solicita el siguiente valor.
- Una secuencia no está asociada a ninguna tabla o columna en especial.
- La progresión puede ser ascendente o descendente.
- El intervalo entre números puede ser de cualquier tamaño.
- Una secuencia puede crear un ciclo cuando se alcanza un límite.
Funciones
• Las funciones se utilizan normalmente para calcular un valor.
IF Sueldo<500000 THEN RETURN salary*.15; ELSE
RETURN salary*.25; END IF;
END;
CREATE OR REPLACE FUNCTION Impuesto (Sueldo NUMBER)
RETURN NUMBER AS
BEGIN
Procedimientos
create or replace procedure ins_empleado( rut dv nombre in varchar2, direccion in varchar2, )
begin insert into empleados values ( rut, dv, nombre, direccion ); end;
Packages
• Los paquetes son recopilaciones de funciones y procedimientos. Cada paquete debe constar de dos objetos: - Especificación del paquete - Cuerpo del paquete
• Sintaxis- create or replace package nombre_package is
procedure ….. ; function ….. ;
end …
- create or replace package body T2PACK_ALL is ………
Triggers o disparadores
Son objetos de código SQL que se almacenan en la base de datos y que se ejecutan automáticamente, entre las que se incluyen: - Insert, update y delete en una tabla - Conexión de un usuario a la base de datos - El intento de borrar una tabla.
Pueden llamar a otros procedimientos o funciones.
Los DBA utilizan triggers para ayudar en las auditorías basadas en valores
Eventos Triggers
Cursores
• Un cursor es un puntero a la zona de memoria privada asignada por el servidor oracle
• Existen dos tipos de cursores:– Cursores Implicitos: Creados y administrador
internamente por el servidor oracle para procesesar instrucciones SQL.
– Cursores Explicitos: explicitamente declaradas por el programador.
Procesando Cursores explicitos
• Los siguientes tres comandos son usados para procesar un cursor explicito:– Open– Fetch– CloseAlternativamente , se puede usar un FOR.
Atributos de los cursores Explicitos
• Todo cursor explicito tiene los siguientes cuatro atributos:– nombre_cursor%FOUND– nombre_cursor%ISOPEN– nombre_cursor%NOT_FOUND– nombre_cursor%ROWCOUNT
Cursor usando FOR
• Sintaxis:– FOR nombre_registro IN nombre_cursor LOOP
Instruccion1;Instruccion2;END LOOP;
• El cursor FOR es un atajo para procesar cursores explícitos.
• Implícitamente abre, busca y sale y cierra• El registro es implícitamente declarado.
Ejemplo Cursor
• Declare Cursor nombre_cursor is
select nombre, apellido, direccion, limite_creditofrom clienteswhere limite_credito>400000;
BeginFor v_registro IN nombre_cursorLOOPDBMS_OUTPUT.PUT_LINE(v_registro.nombre||’ ’||v_registro.apellido)END LOOP;End;