Está en la página 1de 32

BASE DE DATOS

Creacin del Esquema de


Datos

Al terminar esta leccin, estars capacitado


para:
Describir cada sentencia DDL.
Crear , Modificar y Borrar Tablas.
Crear Restricciones.
Crear ndices.
Crear y Usar Secuencias.
Usar la informacin del Diccionario de
datos.

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|PUBLIC
WITH GRANT OPTION;
REVOKE {privilegio |ALL} [{nombre columnas}0]
ON objeto FROM {usuario|role } 1 |PUBLIC
[CASCADE CONSTRAINTS]
WITH GRANT OPTION;

Tablas
Cuando otro usuario la use debe referenciarla como:
owner.nombre_tabla
Mximo de columnas 254.

Columnas
Tipo de dato y su tamao
CHAR
NUMBER
INTEGER
DATE
LONG

RAW
LONGRAW

Mximo de 255.
Por defecto 1.
Mximo de 105 dgitos.
Por defecto 44.
Numrico sin decimal.
Por defecto 38.
Hasta el 31 de diciembre de 4712.
Tipo caracter con tamao variable hasta 65535 bytes.
Permite una sola columna LONG por tabla.
No se puede usar en subconsultas, funciones o
ndices.
dato en binario puro (imgenes y sonido) con un ancho
mximo de 255.
Igual que LONG, pero para almacenar datos en binario
puro.

Columnas
Su nombre va de 1 a 30 caracteres.
valor obligatorio: NOT NULL.
Rango de valores: Check
chequear 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 en
otra tabla.

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);

Tablas
Ejemplo:
CREATE TABLE clientes
(codigo
INTEGER
nombre
CHAR(30)
Direccion
CHAR(100),
anotacion
LONG,
PRIMARY KEY (codigo));

NOT NULL,
NOT NULL,

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));

ALTER TABLE nombre tabla


ADD ( column datatype [DEFAULT expr ][, column datatype ]...);
ALTER TABLE nombre tabla
MODIFY (column data type [DEFAULT expr ][, column datatype]...);
ALTER TABLE nombre tabla
DROP (column );
Ejemplo:
ALTER TABLE empleado
ADD (estado_civil VARCHAR2(9) check
(estado_civil=casada(o) or estado_civil=casada(o)));
ALTER TABLE empleado
MODIFY (apell_emp VARCHAR2(35));

Sintaxis
SEQUENCE
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.

Creando
Sequence
create sequence nro_oc;
La secuencia nro_oc,
se inicia en 1
se incrementa en 1 y
su valor mximo es
999999999999999999999999
nocycle;

Creando
Sequence
create sequence sec_nro_libro start with 1 increment
by 1
maxvalue 99999
minvalue 1;

create sequence sec_nro_docto increment by 5 cycle;


create sequence sec_nro_factura increment by 1
minvalue 5 nocycle;

Usando
SEQUENCE
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 siguiente
currval: representa el valor actual
Forma de obtencin de los valores:
Nro_oc.nexval o
Nro_oc.currval o
select nexval from Nro_oc o
select currval from Nro_oc

Usando
SEQUENCE
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

Borrar
SEQUENCE y Otros
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

Nombre de la tabla

Descripcin

ACCESSIBLE_COLUMNS

columns of all tables, views, and clusters

ACCESSIBLE_TABLES
AUDIT_ACTIONS

tables and views accessible to the user


maps action type numbers to action type
names

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


columns of the user's tables, views, and
clusters

USER_TAB_COLUMNS
USER_TAB_GRANTS

grants on objects where the user is the owner,


grantor, or grantee

SucursalAcreedor
RutAcreedor (FK)(PK)
Sucursal (PK)
TipoSucursal (0:Matriz, 1:Sucursal)
NombreSucursal
Direccion
CodigoCiudad (FK)

Ciudad
CodigoCiudad (PK)
NombreCiudad
CodigoPais (FK)
CodigoProvincia

Provincia
CodigoProvincia (PK)
NombreProvincia
CodigoRegion (FK)

Region
CodigoRegion (PK)
NombreRegion
NombreCortoRegion

Pais
CodigoPais (PK)
NombrePais
Nacionalidad
IndTlc (0:Sin
Tratado, 1:Con
Tratado)

Acreedor
RutAcreedor (PK)
NombreFantasia
RazonSocial Not null
CodigoGiroEmpresa (FK)
Nacionalidad (0:Nac, 1:Ext)
FechaIngresoRegistro
FechaCaducidadRegistro
IndicadorDefinitivo (0:Provisional,1:Definitivo)
CodigoActividad (FK)

Giros
CodigoGiro (PK)
DecripcionGiro

Actividad
Codigo (PK)
DescripcionActividad

Crear Esquema de modelo

Lenguaje PL/SQL

Tanto Procedimientos Almacenados como la


funciones son subprogramas en PL/SQL utilizados
para realizar tareas complejas y repetitivas

Son compilados y almacenados en la BD

Tanto las funciones como los SP reciben valores


desde el medio exterior, es decir, parmetros de
entrada.

Los parmetros pueden tener caractersticas de IN,


OUT o INOUT.

La diferencia fundamental entre SP y funciones es


que ests ltimas retornan valores.

CREATE OR REPLACE PROCEDURE nombre[(parmetros


[IN|OUT|INOUT] tipo de datos [{Default|:=}expresion][,..])]
IS|AS
declaraciones,.
Begin
sentencias..SQL y PL/SQL
End procedure;

CREATE OR REPLACE PROCEDURE EJEMPLO ()


as
DECLARE

v_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;

Lenguaje PL/SQL
Estructura de cdigo 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
Control de flujo:
WHILE condicin LOOP
SENTENCIAS;
END LOOP;
FOR variable IN valorinicial .. valorfinal LOOP
SENTENCIAS;
END LOOP;

Lenguaje PL/SQL
Tipo de datos ms comunes:
Float, integer, int,
numeric,real,
character, char, varchar2,string,
date, boolean,
number.

Lenguaje PL/SQL
Uso de sentencias DML en PL/SQL
Clausula SELECT ... INTO para asignar el valor
devuelto por SELECT a una variable.
El resultado de la expresin SELECT ... INTO
debe ser una sola fila. Si el resultado es ms de
una fila se carga la excepcin
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
EXCEPCIONES (EXCEPTION)
Una excepcin es una condicin de error
especfica y un programa PL/SQL produce una
excepcin especfica 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
Cursores
Es un rea de trabajo para una sentencia SQL.
Permite definir un apuntador al resultado de una expresin
SELECT de varias filas.
Se declara un objeto del tipo cursor con una expresin
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.

FIN

También podría gustarte