2013 clase1 sql

24
Introducción INFO 268

Upload: yarithza-bustos-leal

Post on 12-Jan-2016

213 views

Category:

Documents


0 download

DESCRIPTION

base de datos

TRANSCRIPT

Page 1: 2013 Clase1 SQL

Introducción

INFO 268

Page 2: 2013 Clase1 SQL

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.

Page 3: 2013 Clase1 SQL

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.

Page 4: 2013 Clase1 SQL

Repaso SQL

INFO 268

Page 5: 2013 Clase1 SQL

¿Qué es un Esquema?

• Es una recopilación de objetos de base de datos propiedad de un usuario en particular

Page 6: 2013 Clase1 SQL

Acceso a Objetos de Esquema

Page 7: 2013 Clase1 SQL

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.

Page 8: 2013 Clase1 SQL

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

Page 9: 2013 Clase1 SQL

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;

Page 10: 2013 Clase1 SQL

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

Page 11: 2013 Clase1 SQL

Vistas del Diccionario de Datos

Page 12: 2013 Clase1 SQL

Diccionario de Datos: Ejemplos de Uso

Page 13: 2013 Clase1 SQL

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.

Page 14: 2013 Clase1 SQL

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

Page 15: 2013 Clase1 SQL

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;

Page 16: 2013 Clase1 SQL

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 ………

Page 17: 2013 Clase1 SQL

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

Page 18: 2013 Clase1 SQL

Eventos Triggers

Page 19: 2013 Clase1 SQL
Page 20: 2013 Clase1 SQL

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.

Page 21: 2013 Clase1 SQL

Procesando Cursores explicitos

• Los siguientes tres comandos son usados para procesar un cursor explicito:– Open– Fetch– CloseAlternativamente , se puede usar un FOR.

Page 22: 2013 Clase1 SQL

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

Page 23: 2013 Clase1 SQL

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.

Page 24: 2013 Clase1 SQL

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;