Você está na 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 Mximo de 255. Por defecto 1.


NUMBER Mximo de 105 dgitos. Por defecto 44.
INTEGER Numrico sin decimal. Por defecto 38.
DATE Hasta el 31 de diciembre de 4712.
LONG Tipo caracter con tamao 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 (imgenes y sonido) con un ancho
mximo de 255.
LONGRAW 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 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));
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 tables and views accessible to the user
maps action type numbers to action type
AUDIT_ACTIONS 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
USER_TAB_COLUMNS clusters

USER_TAB_GRANTS grants on objects where the user is the owner,


grantor, or grantee
SucursalAcreedor Acreedor
RutAcreedor (FK)(PK) RutAcreedor (PK)
Sucursal (PK) NombreFantasia
TipoSucursal (0:Matriz, 1:Sucursal) RazonSocial Not null
NombreSucursal CodigoGiroEmpresa (FK)
Direccion Nacionalidad (0:Nac, 1:Ext)
CodigoCiudad (FK) FechaIngresoRegistro
FechaCaducidadRegistro
IndicadorDefinitivo (0:Provisional,1:Definitivo)
CodigoActividad (FK)

Ciudad
Giros
CodigoCiudad (PK)
NombreCiudad Pais CodigoGiro (PK)
CodigoPais (FK) CodigoPais (PK) DecripcionGiro
CodigoProvincia NombrePais
Nacionalidad
IndTlc (0:Sin Actividad
Tratado, 1:Con Codigo (PK)
Tratado) DescripcionActividad
Provincia
CodigoProvincia (PK)
NombreProvincia
CodigoRegion (FK) Crear Esquema de modelo

Region
CodigoRegion (PK)
NombreRegion
NombreCortoRegion
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

Você também pode gostar