32
BASE DE DATOS

BASE DE DATOS VII.pdf

Embed Size (px)

Citation preview

Page 1: BASE DE DATOS VII.pdf

BASE DE DATOS

Page 2: BASE DE DATOS VII.pdf

Creación del Esquema de Datos

Page 3: BASE DE DATOS VII.pdf

Al terminar esta lección, estarás capacitadopara: Describir cada sentencia DDL. Crear , Modificar y Borrar Tablas. Crear Restricciones. Crear Índices. Crear y Usar Secuencias. Usar la información del Diccionario de

datos.

Page 4: BASE DE DATOS VII.pdf

Tablas

Su nombre va de 1 a 30 caracteres. Su propietario(Owner), es quien la crea Para que otro usuario tenga acceso se debe entregar

privilegios.

GRANT {object_priv|ALL} 1 [{nombre columnas}0]ON objeto TO {usuario|rol}1|PUBLICWITH GRANT OPTION;

REVOKE {privilegio |ALL} [{nombre columnas}0]ON objeto FROM {usuario|role } 1 |PUBLIC[CASCADE CONSTRAINTS]WITH GRANT OPTION;

Page 5: BASE DE DATOS VII.pdf

Tablas

Cuando otro usuario la use debe referenciarla como:owner.nombre_tabla

Máximo de columnas 254.

Page 6: BASE DE DATOS VII.pdf

Columnas

Tipo de dato y su tamaño

CHAR Máximo de 255. Por defecto 1.NUMBER Máximo de 105 dígitos. Por defecto 44.INTEGER Numérico sin decimal. Por defecto 38.DATE Hasta el 31 de diciembre de 4712.LONG Tipo caracter con tamaño variable hasta 65535 bytes.

Permite una sola columna LONG por tabla.No se puede usar en subconsultas, funciones o índices.

RAW dato en binario puro (imágenes y sonido) con un ancho máximo de 255.

LONGRAW Igual que LONG, pero para almacenar datos en binario puro.

Page 7: BASE DE DATOS VII.pdf

Columnas

Su nombre va de 1 a 30 caracteres.

valor obligatorio: NOT NULL.

Rango de valores: Checkchequear que el columna> valor o se encuentre entre dos valores.

Clave Primaria: valor único y no nulo (NOT NULL). Clave Externa: Columna de la tabla que hace

referencia a un valor que tiene que estar registrado enotra tabla.

Page 8: BASE DE DATOS VII.pdf

CREATE TABLE nombre tabla (nombre col tipo de datos [default expresion][NOT NULL] [PRIMARY KEY USING INDEX (CREATE INDEX nombre archivo indice ON nombre tabla (nomble col))][table_constraint][table_ref_constraint],

);

Ejemplo:

CREATE TABLE clientes(codigo integer NOT NULL PRIMARY KEY,fecha date NOT NULL,nombre char(30) NOT NULL,telefono char(20) NOT NULL,direccion char(100),anotacion LONG);

Page 9: BASE DE DATOS VII.pdf

TablasEjemplo:

CREATE TABLE clientes(codigo INTEGER NOT NULL,nombre CHAR(30) NOT NULL,Direccion CHAR(100),anotacion LONG,PRIMARY KEY (codigo));

CREATE TABLE ventas(codigo INTEGER NOT NULL,fecha DATE NOT NULL,articulo CHAR(10),valor NUMBER(6,2) NOT NULL CHECK (valor>0),FOREIGN KEY (codigo) REFERENCES clientes(codigo));

Page 10: BASE DE DATOS VII.pdf

ALTER TABLE nombre tablaADD ( column datatype [DEFAULT expr ][, column datatype ]...);

ALTER TABLE nombre tablaMODIFY (column data type [DEFAULT expr ][, column datatype]...);

ALTER TABLE nombre tablaDROP (column );

Ejemplo:

ALTER TABLE empleadoADD (estado_civil VARCHAR2(9) check

(estado_civil=‘casada(o) or ’ estado_civil=‘casada(o)));

ALTER TABLE empleadoMODIFY (apell_emp VARCHAR2(35));

Page 11: BASE DE DATOS VII.pdf

create sequence NOMBRESECUENCIA

start with VALORENTERO

increment by VALOR ENTERO + o -

maxvalue VALOR ENTERO

minvalue VALOR ENTERO, si se omite el valor es 1

cycle | nocycle; al llegar al maxvalue se reinicia, defecto es nocycle.

SintaxisSEQUENCE

Page 12: BASE DE DATOS VII.pdf

create sequence nro_oc;

La secuencia nro_oc,

se inicia en 1

se incrementa en 1 y

su valor máximo es

999999999999999999999999

nocycle;

Creando Sequence

Page 13: BASE DE DATOS VII.pdf

create sequence sec_nro_libro start with 1 incrementby 1maxvalue 99999 minvalue 1;

create sequence sec_nro_docto increment by 5 cycle;

create sequence sec_nro_factura increment by 1 minvalue 5 nocycle;

Creando Sequence

Page 14: BASE DE DATOS VII.pdf

Dado que la secuencia (sequence) es una tabla, para obtener los datos se usa la sentencia select y se usan las pseudo columnas :

nexval : representa el valor siguientecurrval: representa el valor actual

Forma de obtención de los valores:Nro_oc.nexval oNro_oc.currval o select nexval from Nro_oc oselect currval from Nro_oc

UsandoSEQUENCE

Page 15: BASE DE DATOS VII.pdf

Los valores nexval y currval pueden ser usados en las sentencias insert y update

Ejemplo:

insert OC values (Nro_oc.currval, fecha,…..)

inserta el valor actual de la secuencia

insert OC values (Nro_oc.nexval, fecha,…..)

inserta el siguiente valor de la secuencia

UsandoSEQUENCE

Page 16: BASE DE DATOS VII.pdf

DROP SEQUENCE NOMBRE;

borra la tabla sequence

select * from all_sequences;

muetra todas las secuencias existentes

select * from all_objects

muetra todos los objetos de la BD

BorrarSEQUENCE y Otros

Page 17: BASE DE DATOS VII.pdf

Nombre de la tabla Descripción

ACCESSIBLE_COLUMNS columns of all tables, views, and clusters

ACCESSIBLE_TABLES tables and views accessible to the user

AUDIT_ACTIONSmaps action type numbers to action typenames

ALL_INDEXES descriptions of indexes on accessible

ALL_SEQUENCES descriptions of the user's own sequences

ALL_TABLES description of tables accessible to the user.....

USER_TABLES descriptions of the user's own tables

USER_TAB_COLUMNScolumns of the user's tables, views, andclusters

USER_TAB_GRANTS grants on objects where the user is the owner,grantor, or grantee

Page 18: BASE DE DATOS VII.pdf

CodigoRegion (PK)NombreRegion

NombreCortoRegion

Region

RutAcreedor (PK)NombreFantasia

RazonSocial Not nullCodigoGiroEmpresa (FK)

Nacionalidad (0:Nac, 1:Ext)FechaIngresoRegistro

FechaCaducidadRegistroIndicadorDefinitivo (0:Provisional,1:Definitivo)

CodigoActividad (FK)

AcreedorRutAcreedor (FK)(PK)

Sucursal (PK)TipoSucursal (0:Matriz, 1:Sucursal)

NombreSucursalDireccion

CodigoCiudad (FK)

SucursalAcreedor

CodigoCiudad (PK)NombreCiudad

CodigoPais (FK)CodigoProvincia

Ciudad

CodigoPais (PK)NombrePaisNacionalidadIndTlc (0:Sin

Tratado, 1:Con Tratado)

Pais

CodigoProvincia (PK)NombreProvincia

CodigoRegion (FK)

Provincia

CodigoGiro (PK)DecripcionGiro

Giros

Codigo (PK)DescripcionActividad

Actividad

Crear Esquema de modelo

Page 19: BASE DE DATOS VII.pdf

Lenguaje PL/SQL

Page 20: BASE DE DATOS VII.pdf

Tanto Procedimientos Almacenados como lafunciones son subprogramas en PL/SQL utilizadospara realizar tareas complejas y repetitivas

Son compilados y almacenados en la BD

Tanto las funciones como los SP reciben valoresdesde el medio exterior, es decir, parámetros deentrada.

Los parámetros pueden tener características de IN,OUT o INOUT.

La diferencia fundamental entre SP y funciones esque estás últimas retornan valores.

Page 21: BASE DE DATOS VII.pdf
Page 22: BASE DE DATOS VII.pdf

CREATE OR REPLACE PROCEDURE nombre[(parámetros [IN|OUT|INOUT] tipo de datos [{Default|:=}expresion][,…..])]IS|AS

declaraciones,…….Begin

sentencias……..SQL y PL/SQLEnd procedure;

Page 23: BASE DE DATOS VII.pdf

CREATE OR REPLACE PROCEDURE EJEMPLO ()as

DECLAREv_date VARCHAR2(10);v_day NUMBER; v_month NUMBER; v_year NUMBER;

BEGIN v_date := '18/10/1975';pkg_javasp.splitDate( v_date v_day, v_month, v_year); dbms_output.put_line('-------------------------------------------');dbms_output.put_line('SPLIT DATE: '); dbms_output.put_line('-------------------------------------------'); dbms_output.put_line('DIA: ' || v_day); dbms_output.put_line('MES: ' || v_month);dbms_output.put_line('ANIO: ' || v_year);dbms_output.put_line('-------------------------------------------');

END;

Page 24: BASE DE DATOS VII.pdf
Page 25: BASE DE DATOS VII.pdf

Estructura de código PL/SQL

DECLARE

-- Las declaraciones son opcionales

BEGIN

-- El cuerpo del programa es necesario

EXCEPTION

-- Los manejadores de excepciones son opcionales

END;

Lenguaje PL/SQL

Page 26: BASE DE DATOS VII.pdf
Page 27: BASE DE DATOS VII.pdf

Control de flujo:

WHILE condición LOOP

SENTENCIAS;

END LOOP;

FOR variable IN valorinicial .. valorfinal LOOP

SENTENCIAS;END LOOP;

Lenguaje PL/SQL

Page 28: BASE DE DATOS VII.pdf

Tipo de datos más comunes:

Float, integer, int,

numeric,real,

character, char, varchar2,string,

date, boolean,

number.

Lenguaje PL/SQL

Page 29: BASE DE DATOS VII.pdf

Uso de sentencias DML en PL/SQL Clausula SELECT ... INTO para asignar el valor devuelto por SELECT a una variable.

El resultado de la expresión SELECT ... INTO debe ser una sola fila. Si el resultado es más de una fila se carga la excepción TOO_MANY_ROWS.

Estructura de registro con el atributo %ROWTYPE

Permite definir una estructura del tipo de datos de las columnas de la tabla.

Lenguaje PL/SQL

Page 30: BASE DE DATOS VII.pdf

EXCEPCIONES (EXCEPTION)

Una excepción es una condición de error específica y un programa PL/SQL produce una excepción específica cuando detecta un error, pasando al control de manejo de excepciones del programa principal.

Oracle identifica cerca de 20 excepciones inclusive NO_DATA_FOUND y TOO_MANY_ROWS

Se puede manejar excepciones definidas por el usuario.

Lenguaje PL/SQL

Page 31: BASE DE DATOS VII.pdf

Cursores

Es un área de trabajo para una sentencia SQL.

Permite definir un apuntador al resultado de una expresión SELECT de varias filas.

Se declara un objeto del tipo cursor con una expresión SELECT. Se abre el cursor con OPEN cursor.

Se extrae las filas del cursor con FETCH.

El objeto del tipo cursor maneja atributos como %FOUND, %NOTFOUND, %ISOPEN y %ROWCOUNT para el control y manejo del cursor.

Cierra el cursor con CLOSE cursor.

Lenguaje PL/SQL

Page 32: BASE DE DATOS VII.pdf

FIN