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
miércoles, 28 de diciembre de 2011
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;
/*
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
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
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
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;
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.
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
);
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
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
*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
Suscribirse a:
Entradas (Atom)