miércoles, 28 de diciembre de 2011

28/12/2011 clase

DIAPOSITIVA 16 DE CLASE 4

---->Entrega fecha actual
select sysdate from dual

----> Agregar un mes a la fecha actual
select add_months (sysdate,1) from dual

----> Muestra dia actual
select to_char (sysdate, 'DAY') from dual

----> Saber que dia de la semana sera en un mes mas
select to_char (add_months (sysdate,1), 'day') from dual

----> Saber si el año 2012 el mes de feberero tiene 29 dias ocupando comando last_day
select to_char (last_day (to_date('01-02-2012','dd-mm-yyyy'))) from dual

---->diferencia de fechas en meses(tiempo)
select months_between (sysdate, (to_date('01-10-2012','dd-mm-yyyy'))) from dual

----> fecha del proximo dia por ejemplo el lunes
select next_day (sysdate,'Lunes') from dual

----> caracter de un numero (accii)
select chr(64) from dual

concatenando mensaje con pait
select ('Hola'||' '||'Mundo') from dual

INITCAP = conbierte la primera letra en mayuscula

---> comando lpad, rellenando con signos mas hasta 20 caracteres por el lado izquierdo
select lpad('hola',20,'+') from dual

---> comando rpad, rellenando con signos mas hasta 20 caracteres por el lado derecho
select rpad('hola',20,'+') from dual

-*---> reemplaza una lñetra del string
select replace ('hola mundo denuevo','v','b') from dual

--->substr , saca dentro de un caracter
select substr('el galeon español',4,6) from dual

----> translate reeemplaza un valor (en el ejemplo reemplaxza el * por la donde encuentra or en la frase)
select translate('corporate floor','or','**') from dual


---->ceil = entero proximo de un numero
select ceil(3.48) from dual

----> floor = entrega el numero entero anterios
select floor(3.48) from dual

----> power = potencia entre 2 numeros
select power(2,5) from dual

--->round = redeondea un valo
select round(2,99,9) from dual

---->Trunca números para que tengan una cierta cantidad de dígitos de precisión
select trunc(2,99.9) from dual

comando decode (en sexo que decia f lo dejamos en mujer)
select sexo, decode (sexo,'F','Mujer','M','Hombre', 'Ambiguo') from empleado

---> CAMBIAMOS EL SEXO A UNJ EMPLEADO CONUN UPDATE
update empleado
set sexo ='A'
where numempleado = 'SL65'

---> comando case dimos explesiona un sueldo segun su valor
select salario, case
when salario <100000 then 'reguleque' when salario >300000 then 'super sueldo'

else 'ta correcto'
end
from empleado


---> creamos funcion parimpar
create or replace function parimpar (pnumero int)
return varchar2
is
vtexto varchar2(5);
begin

if mod(pnumero,2) = 0 then
vtexto := 'par';
else
vtexto := 'impar';

end if;

return vtexto;
end parimpar;


----> provamos la anterios funcion
select parimpar (2) from dual

clase 28/12/11 por bady

select sysdate from dual;--
/*
suma un mes
*/
select
 -- verifica si es bicierto
select
 -- muestra entre fechas
select
 -- saber que dia es el proximo dia
select
 -- muestar asscii
select
 -- concat es penxca mejor el ||
select
 -- llena por derecha e izquierda

select
select
lpad ('hola',30,'p') from dual; rpad ('hola',30,'p') from dual;-- remplaza
select replace ('el profe es vacan', 'v', 'b') from dual;-- busca el cuarto espacio del largo seis
select substr ('el galeon español',4,6) from dual;-- corporate floor
select
 select
 select
 select
 select nvl(null,0) from dual;select nvl(trim,('')0) from dual; -- mala select power (2,5) from dual; select round (2.27,1) from dual; --redondea numeroselect trunc (2.27,1) from dual --corta el numerooselect
 select numempleado,sexo, decode(sexo,'F','Mujer','M','Hombre','ambiguo') from empleado;update empleadoset sexo = 'A'where numempleado = 'SL65';select salario, casewhen salario < 100000 then 'reguleke'when salario > 300000 then 'super bkn'
else 'ta bien' end
 
create or replace FUNCTION parimpar (pnumero int )RETURN varchar2
vtext
is varchar2 (5);
begin
vtext
if mod(pnumero,2)==0 then = 'par';elsevtext = 'impar';end if
return vtext;
 -- de esta forma se llama a la funcion par impar poniendole un parametro -- las funciones se crean con rallito arriba y se corre
select parimpar(5) from dual


end parimpar
from empleado
* from empleado;
mod(7,2) from dual; -- devuelve el resto de la divisuioon
floor (3.52) from dual; --redonde hacia abajo
ceil (3.52) from dual; -- redondea hacia arriba
translate ('corporate floor','or','tt') from dual;
'hola'||'mundo' from dual;
chr(64) from dual;
next_day (sysdate, 'Lunes') from dual;
MONTHS_BETWEEN (sysdate,(to_date('01-02-2012', 'dd-mm-yyyy'))) from dual;
to_char(last_day(to_date('01-02-2012', 'dd-mm-yyyy'))) from dual;
add_months (sysdate,1) from dual;

miércoles, 21 de diciembre de 2011

clases 21/12/2011

seleccionamos todas las tablas
pero en especial la con nuestro nombre (160311290)

select owner, table_name
from all_tables
where owner = '160311290'


funciones to_date y to_char
aplicamos para obtener el dia en que nacimos

select to_char (to_date('27-04-1985','dd-mm-yyyy' ), 'day') from dual

REPASAR %TIPE


USASNDO RECORD
SELECT a,b into vr

type mitiporecord is record
va varchar2(2)
vb int
);
vr mitiporecord

creamos tabla y obtenemos valores al azar
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;



select instr ('hola mundo','o',1,2) from dual

descontamos un mes a la fecha actual
select to_char (add_months (sysdate, -1), 'day') from dual

viernes, 16 de diciembre de 2011

Clase repaso para prueba 16.12.1011

el comando DELETE borra contenido
y el comando DROP borra todo


--listar las propiedades que tiene(arrienda) un cliente
(nombre, apellido, numprop, finicio(arriendo))

SELECT C.nombre, C.apellido, A.numpropietario, Afinicio
FROM cliente C, arriendo A
WHERE C.numcliente = A.numcliente
AND C.nombre = 'Juan'
AND C.apellido = 'Perez'

* aca arriba seleccionamos un dato de 2 tablas


----selecionamos numeros de oficinas de valdivia
select numOficina
from oficina
where ciudad = 'valdivia'

-----selecionamos empleados que trabajen en la oficna de valvidia
select numEmpleado, nombre, apellido
from empleado
where numOficina in (select numOficina
from oficina
where ciudad = 'Valdivia')


----salario maximo de las mujeres
select max(salario)
from empleado
where sexo = 'F'

comando TRIM quita los espacios en blanco

-----crear secuencia en tabla t1
create sequence seqt1
start with 10
increment by 10

select seqt1.nextval from dual
insert into t1 values (seqt1.nextval,'22')


----salario promedio de los empleados
select nombre, apellido, salario, (select avg(salario) from empleado) as promedio, salario - (select avg(salario) from empleado) as diferencia)



---agrupar por numero de oficina empleado reanta promedio max y min de empleados.
select numOficina, count(*), avg(salario) as promedio, max(salario) as salario_maximo, min(salario) as salario_minimo
from empleado
group by numOficina


----listar oficina con promedio de salario mas alto
select numOficina, avg(salario)
group by numOficina


having avg(salario) = (select max(salario))
from empleado
group by numoficina

---listar las ciudades que tengan mas de 2 oficinas

select ciudad, count(numoficina) as cantidad_de_oficinas
from Oficina
group by ciudad
having count(numoficina)>2

sábado, 10 de diciembre de 2011

Clase 10-12-2011

Progerama PL/SQL

drop table T1;
delete T1;
CREATE TABLE T1(
e integer,
f integer
);

select * from T1;
--Begin
-- DELETE FROM T1;
INSERT INTO T1 VALUES(1, 3);
INSERT INTO T1 VALUES(2, 4);
--End


select * from t1
/* Lo de arriba es SQL; debajo es el programa PL/SQL */
DECLARE
a NUMBER;
b NUMBER;
BEGIN
SELECT e,f INTO a,b
FROM T1
WHERE e>1; --Este select asigna el atributo e->a y f->b, de todos aquellos registros cuyo atributo e > 1
INSERT INTO T1 VALUES(b,a);
END;

el programa crea una tabla,
inserta 2 valores por cada campo,

luego el programa PL/SQL selecciona 2 valores mayores a 1 y los asigna a a y b.
inserta los valores.

Luego al querer ejecutar nuevamente entrega un error, ya que la seleccion ya no devuelve 2 datos, sino 4 y no sabe a que variable asignar.


Imprime salida a pantalla
begin
dbms_output.put_line('Hola washi');
end;
Es necesario activar DBMS Output, el botòn redondo debe estar en verde

Programa que implementa un if simple
declare
precio integer := 10;

begin
if precio > 5 then
dbms_output.put_line('Precio es : '|| precio);
end if;
end;

Programa que implementa un if con else y asignación y concatenación de variables

declare
precio integer := 10;
text varchar2(5);
begin
if precio > 15 then
text := 'mayor';
--dbms_output.put_line('Precio es : '|| precio);
else
text := 'menor';
--dbms_output.put_line('Precio es : '|| );
end if;
dbms_output.put_line('El precio es '|| text ||' y su valor es '|| precio);
end;

Programa que implementa un loop con una condición

declare
i integer:= 1;
begin
LOOP
dbms_output.put_line('Hola mundo '|| i);
i:=i+1;
EXIT WHEN i > 10;
END LOOP;
END;


Clase de recuperacion
select * from empleado where to_char(fechnac,'dd-mm-yyyy') like '%06-1963%'
select * from empleado where to_char(fechnac,'dd-mm-yyyy') not like '%06-1963%'

select * from empleado where upper(cargo) not in ('GERENTE', 'SUPERVISOR')

select * from cliente where upper(direccion) like ('%GLASGOW%')

select * from cliente where trim(upper(nombre)) like ('MARI_')

select * from visita where comentario is NULL

viernes, 9 de diciembre de 2011

clase 09/12/2011

que es la tabla dual y para que sirve???
es una tabla fictisia
por elemplo:
para mostrar la fecha no es necesario crear una tabla solo para mostrar la fecha.
selec sysdate from dual

creamos tabla persona
create
id
table persona ( integer primary key not null,nombre char(25),apellido char(30),fechaNac date,renta
);
numeric (5,1)
agregamos datos
insert into persona values (1,'pedro','picapiedra','1-12-1960',200.0);
incrementar automaticamente el valos de id (secuencia)
create sequence seqPersonastart with 1increment

agregarmos un registro a la tabla persona ocupando secuencia autoencrementable
insert
into persona values (seqPersona.nextval,'pablo','marmol','1-12-1965',199.0);
by 1;

Trabajo: Buenas practicas PL/SQL

El documento detalla algunas de las mejores prácticas para desarrollar en PL/SQL, variables y estructuras, manejo de excepciones, etc., para mayor detalle descargar.
Click para descargar

Integrantes:
Carlos Melo Paredes.
Andrés González.
Francisco Muñoz Hernandez.
Waddinton Zuñiga.

sábado, 3 de diciembre de 2011

03-12-2011

create table empleado(numempleado char(4) primary key, )
Crar tablas, distintos tipos de datos, integer, char, varchar, number, float, date
definir claves primarias, foráneas.

select 2/3 from dual
tabla virtual para hacer cualquier operaciòn donde se necesite una tabla

Investigar sobre buenas praticas en pl sql próximo sábado.
word
ppt

DDL ---> create table (define nuevos datos)
DML ---> insert (manipulacion de datos)

create table t1 (
id integer primary key not null
nombre char(25),
apellido char(30),
fecha date
);

viernes, 2 de diciembre de 2011

02-12-2011

select * from empleado where upper (sexo) = 'M'

upper transforma el atributo a mayuscula
lower transforma el atributo a minuscula

select cargo, count (*) as cantidad from empleado group by cargo order by (*)
selecciona los cargos y los cuenta

select CARGO, count(*) as cantidad from empleado group by cargo having count(*) >= 5 order by cargo
selecciona los cargos mayores a 5 y los cuenta

select ciudad, count(*) as numero_de_oficina from oficina group by ciudad

clases ACI-900

*viernes 22:00 hras (fin clases sin brake)
*Los sabados 10,17 dic y 07 enero
-clases desde las 8 de la mañana

catedra 1, 17 diciembre
catedra 2, 6 Enero
Examen 14 Enero
2 catedras (60%) + examen (40%)

dato de links
www.diigo.com/user/efischer