sábado, 31 de marzo de 2012

Clase 31 de Marzo

--- mostar hola mundo en sql developer

set serveroutput on
begin
dbms_output.put_line('Hola Mundo');
end;

 
-- mostar un nombre ingresado por teclado

set serveroutput on
declare
nombre varchar2(25);
begin
dbms_output.put_line('Hola '|| '&nombre');
end;

 
--ingresar un dia de la semana

set serveroutput on
declare
diaSemana integer;
begin
dbms_output.put_line('El numero ingresado es '|| '&diaSemana');
end;


set serveroutput on
declare
diaSemana integer;
fechaIngresada char(2);
begin
diaSemana := to_number('&fechaIngresada');
dbms_output.put_line('El numero ingresado es '|| diaSemana);
end;

 
--ingresar un numero entre 1 y 7 usando excepciones

set serveroutput on
declare
diaSemana integer;
IngreseValorNumerico char(2);
begin
diaSemana := to_number('&IngreseValorNumerico');
if diasemana >= 1 and diasemana <=7 then
dbms_output.put_line('El numero ingresado es Correcto ' ||diaSemana);
else
dbms_output.put_line('ERROR: El numero ingresado es Incorrecto ' ||diaSemana);
end if;
exception
when VALUE_ERROR then
dbms_output.put_line('OJO: El numero ingresado no es valido ');
end;


--calcular la suma de la serie 1+2+3+...+n

set serveroutput on
declare
n integer;
numeroIngresado varchar(10);
suma integer;
begin
  n := to_number('&IngreseValorNumerico');
  for i in 1..n loop
    suma := suma + i;
    end loop;
    dbms_output.put_line('El valor de la serie para n= ' || n ||' es: '||&suma);
exception
when VALUE_ERROR then
dbms_output.put_line('El numero ingresado no es valido');
end

sábado, 24 de marzo de 2012

Clase 24 de Marzo

--PPT 1 PL SQL--
--ejercicio pagina 14 ppt plsql--

create table t1(e number, f number);

insert into t1 values(1, 3);
insert into t1 values(2, 4);

select * from t1;

DECLARE    
   a NUMBER;    
   b NUMBER;
BEGIN    
   SELECT e,f INTO a,b FROM T1 WHERE e>1;    
   IF b=1 THEN        
        INSERT INTO T1 VALUES(b,a);    
   ELSE        
        INSERT INTO T1 VALUES(b+10,a+10);    
   END IF;
END;

--para ejecutar denuevo este programa, se selecciona y se ejecuta, ya que es un programa anonimo
--el programa ya no funciona, por que el select despues del begin, tiene q retornar solo una fila
--y ya existen 2 filas con e>1--


--escribir hola mundo 10 veces--

DECLARE
contador integer :=1;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE('HOLA MUNDO ' || contador);
contador:= contador+1;
EXIT WHEN contador > 10;
END LOOP;
END;


-- otra forma de contador --

BEGIN
FOR contador IN REVERSE 1..100
LOOP
DBMS_OUTPUT.PUT_LINE('hola cauro ' || contador);
END LOOP;
END;

--ciclo while

DECLARE
contador integer:= 1;
BEGIN
WHILE contador <= 10
LOOP
DBMS_OUTPUT.PUT_LINE('hola MUNDO ' || contador);
contador:= contador+1;
END LOOP;
END;


DECLARE
i integer;
BEGIN
i:= 1;
WHILE i <= 5
LOOP
DBMS_OUTPUT.PUT_LINE('HOLA ' || i);
i:= i+1;
END LOOP;
END;



--PPT 2 PLSQL FUNCIONES INTERNAS--

--TABLA DUAL DE ORACLE--

SELECT UPPER('hola') FROM DUAL;

SELECT SYSDATE FROM DUAL;

-- MOSTRAR EL DIA DE LA FECHA ACTUAL--
SELECT
to_char(SYSDATE),'day')
from dual;

--CONOCER EL DIA DE NACIMIENTO A PARTIR DE UNA FECHA. SE CONVIERTE EL STRING FECHA A TIPO FECHA--

SELECT TO_CHAR(TO_DATE('12-JUL-1987', 'DD-MON-YYYY'), 'DAY')
FROM DUAL;

SELECT TO_CHAR(TO_DATE('12-07-1987', 'DD-MM-YYYY'), 'DAY')
FROM DUAL;

-- CAMBIAR NOMBRE DE COLUMNA--
SELECT TO_CHAR(TO_DATE('12-07-1987', 'DD-MM-YYYY'), 'DAY') AS "FECHA DE NACIMIENTO"
FROM DUAL;

--activando usuario hr--

select * from employees;

select count(*) from employees;

DESCRIBE employees;

--EL ATRIBUTO ID TOMA EL MISMO TIPO DEL ATRIBUTO EMPLOYESS_ID DE LA TABLA EMPLOYEES--

DECLARE
id EMPLOYEES.EMPLOYEE_ID%TYPE;
BEGIN
NULL;
END;

--CONOCER EL NUMERO DE FILA QUE TIENEN LOS EMPLEADOS DE LA TABLA EMPLOYEES--
SELECT ROWNUM, FIRST_NAME FROM EMPLOYEES;

-- INSERTAR NUMEROS ALEATORIOS --
create table tx (x int,y varchar(5));

insert into tx
select rownum, trunc(dbms_random.value(1,99999))
from dual
connect by rownum <= 10;

select * from tx;


miércoles, 21 de marzo de 2012

Clase 21 de Marzo

--DECLARAMOS 2 VARIABLES Y MOSTRAMOS EN PANATALLA EL VALOR DE CADA UNA (TEXTO)--

DECLARE
MENSAJE1 VARCHAR2(4):='HOLA';
MENSAJE2 VARCHAR2(8):='MUNDO';
BEGIN
DBMS_OUTPUT.PUT_LINE(MENSAJE1 || MENSAJE2);
END



--EJERCICIO 2

CREATE TABLE T1(E INTEGER, F INTEGER);
BEGIN
INSERT INTO T1 VALUES(1, 3);
INSERT INTO T1 VALUES(2, 4);
END

SELECT * FROM T1;

DECLARE
A NUMBER;
B NUMBER;
BEGIN
SELECT E,F INTO A,B
FROM T1
WHERE E>1;
INSERT INTO T1 VALUES(B,A);
END;



--EJERCICIO 3 (SI EXISTE MAS DE UN REGISTRO)

DECLARE
A INTEGER;
BEGIN
SELECT COUNT(*) INTO A
FROM T1;
IF A>1 THEN
DBMS_OUTPUT.PUT_LINE('HAY MAS DE UN REGISTRO');
ELSE
DBMS_OUTPUT.PUT_LINE('HAY SOLO UN REGISTRO');
END IF;
END



--EJERCICIO 4 (NUMERO PAR O IMPAR)

DECLARE
A INTEGER;
MSG VARCHAR2(5);
BEGIN
SELECT COUNT(*) INTO A
FROM T1;
IF MOD(A,2)=0 THEN
MSG:='PAR';
ELSE
MSG:='IMPAR';
END IF;
DBMS_OUTPUT.PUT_LINE('HAY SOLO UN REGISTRO');
END

sábado, 17 de marzo de 2012

Clase 17 de Marzo

CREATE TABLE AUTOR (IDAUTOR INT PRIMARY KEY, NOMBRE VARCHAR2(30));
CREATE TABLE LIBRO (IDLIBRO INT PRIMARY KEY, IDAUTOR INT, NOMBRE VARCHAR2(30));

--CREAR LLAVE FORANEA IDAUTOR EN LIBRO
ALTER TABLE LIBRO
ADD CONSTRAINT FK_LIBRO_AUTOR FOREIGN KEY (IDAUTOR) REFERENCES AUTOR (IDAUTOR);

INSERT INTO AUTOR VALUES(01, 'GABRIEL GARCIA MARQUEZ');
INSERT INTO AUTOR VALUES(02, 'PABLO NERUDA');

--INSERTAR 5 LIBROS
INSERT INTO LIBRO VALUES(11, 01, 'EL ALQUIMISTA');
INSERT INTO LIBRO VALUES(12, 01, 'INGENIERIA DE SOFTWARE');
INSERT INTO LIBRO VALUES(13, 02, 'HOLA QUE TAL');
INSERT INTO LIBRO VALUES(14, 02, 'MI NOMBRE ES...');
INSERT INTO LIBRO VALUES(15, 01, '20 POEMAS DE AMOR Y...');


--MODIFICAR EL TAMAÑO DEL ATRIBUTO NOMBRE EN TABLA LIBRO A 50

ALTER TABLE LIBRO MODIFY NOMBRE VARCHAR2(50);

--AGREGAR LA FECHA DE NACIMIENTO A TABLA AUTOR

ALTER TABLE AUTOR ADD FECNAC DATE;

--COMPLETAR LA FECHA DE NACIMIENTO DE LOS AUTORES

UPDATE AUTOR SET FECNAC = '12-07-1904' WHERE NOMBRE = 'PABLO NERUDA';

UPDATE AUTOR SET FECNAC = '06-03-1927' WHERE NOMBRE = 'GABRIEL GARCIA MARQUEZ';

select * from autor
select * from libro

--seleccionar todos los libros del autor 'pablo neruda'

SELECT * FROM LIBRO L INNER JOIN AUTOR A ON L.IDAUTOR=A.IDAUTOR
WHERE A.NOMBRE = 'PABLO NERUDA';

SELECT * FROM LIBRO L, AUTOR A WHERE L.IDAUTOR = A.IDAUTOR
AND A.NOMBRE = 'PABLO NERUDA';

SELECT * FROM LIBRO WHERE IDAUTOR = (SELECT IDAUTOR FROM AUTOR WHERE autor.NOMBRE = 'PABLO NERUDA');

--CALCULAR LA EDAD DE GABRIEL GARCIA MARQUEZ

SELECT NOMBRE, (SYSDATE - FECNAC)/365 FROM AUTOR WHERE nombre='GABRIEL GARCIA MARQUEZ'

UPDATE Autor set fecNac = '12-07-1904'
WHERE UPPER(nombre) = UPPER('Pablo neruda');

SELECT UPPER ('AbCdEf') from dual

select 128*4 from dual

select 128*4 as tamaño from dual

SELECT * FROM TAB

UPDATE AUTOR SET FECNAC = '17-03-2012' WHERE NOMBRE = 'GABRIEL GARCIA MARQUEZ';

-- MOSTRAR EL FORMATO DE LA TABLA
DESC AUTOR

SELECT NOMBRE, ROUND((SYSDATE - FECNAC)/365) AS EDAD FROM AUTOR WHERE nombre='GABRIEL GARCIA MARQUEZ'

SELECT * FROM LIBRO L INNER JOIN ATOR A ON L.IDAUTOR=A.IDAUTOR WHERE A.NOMBRE='PABLO NERUDA';

--SELECCIONAR TODAS LAS COLUMNAS QUE EXISTEN EN LAS TABLAS

SELECT * FROM COL;

--LISTAR LOS NOMBRES DE LOS LOS AUTORES QUE HAN ESCRITO ALGUN LIBRO RELACIONADO CON AMOR--

SELECT NOMBRE FROM AUTOR WHERE IDAUTOR IN (SELECT IDAUTOR FROM LIBRO WHERE LOWER(NOMBRE) LIKE '%amor%')

miércoles, 14 de marzo de 2012

Clase 14 de Marzo

CREATE TABLE AUTOR (IDAUTOR INT PRIMARY KEY, NOMBRE VARCHAR2(30));
CREATE TABLE LIBRO (IDLIBRO INT PRIMARY KEY, IDAUTOR INT, NOMBRE VARCHAR2(30));

--CREAR LLAVE FORANEA IDAUTOR EN LIBRO
ALTER TABLE LIBRO
ADD CONSTRAINT FK_LIBRO_AUTOR FOREIGN KEY (IDAUTOR) REFERENCES AUTOR (IDAUTOR);

INSERT INTO AUTOR VALUES(01, 'GABRIEL GARCIA MARQUEZ');
INSERT INTO AUTOR VALUES(02, 'PABLO NERUDA');

--INSERTAR 5 LIBROS
INSERT INTO LIBRO VALUES(11, 01, 'EL ALQUIMISTA');
INSERT INTO LIBRO VALUES(12, 01, 'INGENIERIA DE SOFTWARE');
INSERT INTO LIBRO VALUES(13, 02, 'HOLA QUE TAL');
INSERT INTO LIBRO VALUES(14, 02, 'MI NOMBRE ES...');
INSERT INTO LIBRO VALUES(15, 01, '20 POEMAS DE AMOR Y...');


--MODIFICAR EL TAMAÑO DEL ATRIBUTO NOMBRE EN TABLA LIBRO A 50

ALTER TABLE LIBRO MODIFY NOMBRE VARCHAR2(50);

--AGREGAR LA FECHA DE NACIMIENTO A TABLA AUTOR

ALTER TABLE AUTOR ADD FECNAC DATE;

--COMPLETAR LA FECHA DE NACIMIENTO DE LOS AUTORES

UPDATE AUTOR SET FECNAC = '12-07-1904' WHERE NOMBRE = 'PABLO NERUDA';

UPDATE AUTOR SET FECNAC = '06-03-1927' WHERE NOMBRE = 'GABRIEL GARCIA MARQUEZ';

--seleccionar todos los libros del autor 'pablo neruda'

SELECT * FROM LIBRO L INNER JOIN AUTOR A ON L.IDAUTOR=A.IDAUTOR
WHERE A.NOMBRE = 'PABLO NERUDA';

SELECT * FROM LIBRO L, AUTOR A WHERE L.IDAUTOR = A.IDAUTOR
AND A.NOMBRE = 'PABLO NERUDA';

SELECT * FROM LIBRO WHERE IDAUTOR = (SELECT IDAUTOR FROM AUTOR WHERE A.NOMBRE = 'PABLO NERUDA');

--CALCULAR LA EDAD DE GABRIEL GARCIA MARQUEZ

SELECT NOMBRE, (SYSDATE - FECNAC)/365 FROM AUTOR WHERE 'GABRIEL GARCIA MARQUEZ'