miércoles, 28 de diciembre de 2011

Recuperativa Miercoles 28 de diciembre

Se revisa las sentiencias de next_day

select next_day(sysdate, 'lunes')from dual

ademas

select chr(12) from dual

Concatenar caracteres

select ('hola''Mundo') from dual

Agregar caracteres a la derecha o a la izquierda con LPAD y RPAD

select lpad('hola',20,'+') from dual
resultado= ++++++++++++++++hola

Replace
select replace('El profe es vacan', 'v', 'b')from dual
Resultado= 'El profe es bacan'

substr
select substr('el galeon español', 4, 6)from dual
resultado= 'galeon'

instr (NO ENTENDI LO QUE HACE)
select instr('corporate floor', 'or', 3, 2)from dual
resultado= 14

Piso y cielo (floor, ceil) aproxima hacia arriba o hacia abajo
select ceil('3,58') from dual
resultado= 4

select floor('3,58') from dual
resultado=3

calcular potencia
select power(2,5)from dual
da el resultado de 2 elevado a 5 osea 32


diferencia entre round y trunc
select round(2.27, 1)from dual
resultado= 2.3

select trunc(2.27, 1)from dual
resultado= 2.2


Funcion case para seleccionar entre alternativas
select salario, case
when salario <100000 then 'Reguleque'
when salario >300000 then 'Super'
else 'Esta bien'
end
from empleado

se crea una funcion para identificar si un numero es par o impar

create FUNCTION paroimpar (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 paroimpar;

miércoles, 21 de diciembre de 2011

Clase miércoles 21/12/2011

CURSORES BIEN EXPLICADO ---> http://www.desarrolloweb.com/articulos/cursores-pl-sql-I.html
--atributos que nos interesan
ALL_TABLES
(owner)
(table_name)
(Tabid)
select owner, table_name
from all_tables
where owner = '154345272'

--atributos que nos interesan
ALL_TAB_COLUMNS
(column_name)
(owner)
(table_name)

Select distinct col.column_name
from all_tab_columns col
Where upper(owner)='154345272'

/*obtener todas las tablas, columnas y nombre owner*/

DECLARE
vPropietario varchar2(40);
vNombreTabla varchar2(40);
vNombreColumna varchar2(100);

/* Primer cursor */
cursor obtieneTablas is
select distinct t.owner, t.table_name
from all_tables t
where t.owner = '154345272';

/* Segundo cursor */
cursor obtieneColumnas is
select distinct c.column_name
from all_tab_columns c
where c.owner = vPropietario
and c.table_name = vNombreTabla;

begin
open obtieneTablas;
dbms_output.put_line('Abriendo Cursor - obtieneTablas');
loop fetch obtieneTablas into vPropietario, vNombreTabla;
exit when obtieneTablas%NOTFOUND;
dbms_output.put_line('Tabla : '||vPropietario||'.'||
vNombreTabla);
open obtieneColumnas;
loop fetch obtieneColumnas into vNombreColumna;
exit when obtieneColumnas%NOTFOUND;
dbms_output.put_line('=>'||vNombreTabla||'.'||
vNombreColumna);
end loop;
close obtieneColumnas;
end loop;
close obtieneTablas;
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20001,'Se ha detectado un error - '||
SQLCODE||' -ERROR- '||SQLERRM);
end;

*******************************************
select owner, table_name
from all_tables
where owner = '154345272'


Select distinct col.column_name
from all_tab_columns col
Where upper(owner)='154345272'

Select owner,Table_name,Column_name
from all_tab_columns
Where upper(owner)='154345272'


/*obtener todas las tablas, columnas y nombre owner*/

DECLARE
vPropietario varchar2(40);
vNombreTabla varchar2(40);
vNombreColumna varchar2(100);

/* Primer cursor */
cursor obtieneTablas is
select distinct t.owner, t.table_name
from all_tables t
where t.owner = '154345272';

/* Segundo cursor */
cursor obtieneColumnas is
select distinct c.column_name
from all_tab_columns c
where c.owner = vPropietario
and c.table_name = vNombreTabla;

begin
open obtieneTablas;
dbms_output.put_line('Abriendo Cursor - obtieneTablas');
loop fetch obtieneTablas into vPropietario, vNombreTabla;
exit when obtieneTablas%NOTFOUND;
dbms_output.put_line('Tabla : '||vPropietario||'.'||
vNombreTabla);
open obtieneColumnas;
loop fetch obtieneColumnas into vNombreColumna;
exit when obtieneColumnas%NOTFOUND;
dbms_output.put_line('=>'||vNombreTabla||'.'||
vNombreColumna);
end loop;
close obtieneColumnas;
end loop;
close obtieneTablas;
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20001,'Se ha detectado un error - '||
SQLCODE||' -ERROR- '||SQLERRM);
end;


--FUNCIONES
select sysdate from dual;

select to_char (to_date('20/09/1982','dd-mm-yyyy'),'DAY') from dual;

select '***'|| to_char (to_date('20/09/1982','dd-mm-yyyy'),'DAY')||'***' from dual;

--publicar 2 o 3 ejemplos de TO_CHAR con TO_DATE

-- RECORDANDO A UTILIZAR EL %TYPE
-- DECLARAR TIPO RECORD

select a,b into va,vb;

TYPE mitiporecord is RECORD
(
va varchar2(2),
vb int
);


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;

--probar de la segunda letra
select instr ('Hola mundo','o',1,2) from dual
--probar de la tercera letra
select instr ('Hola mundo','o',3,2) from dual
--agregar un mes
Select add_months (sysdate,1) from dual
--dia de la semana
Select to_char (add_months (sysdate,-1),'day') from dual

sábado, 17 de diciembre de 2011

Clase Sabado 17-12-2011


declare
begin
exception
end
vtipo propiedad.tipo%type
dbms_output.put_line( );
select nombre, sexo
from empleado
declare
 vnombre empleado.nombre%type;
 vsexo empleado.sexo%type;
 vtexto varchar(25);
cursor micursor is
 [select nombre, sexo from empleado]
begin
 open micursor;
 loop
  fetch micursor into vnombre, vsexo;
  exit when micursor%notfound
  if
   vsexo='M' then
   vtexto='Hombre'
  elsif
   vsexo='F' then
   vtexto='Mujer'
  else
   vtexto='Ambiguo'
  endif
  dbms_output.putline(vnombre ││ 'ø' ││ vsexo 'ø' ││ vtexto);
 end loop;
 close micursor

Recuperacion Sabado 17

Se reviso fechas de proxima prueba y examen


sababo 7 de enero catedra2
sabado 14 de enero examen



se continua con la clase normal...



CURSORES

Declare
vgenero varchar2(10);
vnombre empleado.nombre%type;
vsexo empleado.sexo%type;

cursor listageneroempleado is
select nombre, sexo from empleado;

Begin
open listageneroempleado;
loop
fetch listageneroempleado INTO vnombre, vsexo;
exit when listageneroempleado%notfound
if sexo='M' then
vgenero='Hombre';
else if sexo='F' then
vgenero='Mujer';
else
vgenero='Ambiguo';
end if;
DBMS_Output.put_line(vnombre' 'vsexo' 'vgenero);
End loop;
close listageneroempleado;
END;

viernes, 16 de diciembre de 2011

TABLAS CAMPOS

Propiedad(PK)-Arriendo(FK) numPropiedad
Cliente(PK)-Arriendo(FK) numCliente
Visita(PK)-Cliente(PK) numCliente
Propiedad(PK)-Visita(FK) numPropiedad
Propietario(PK)-Propiedad(FK) numPropietario
Empleado(PK)-Propiedad(FK) numEmpleado
Oficina(PK)-Empleado(FK) numOficina
"ESTUDIAR LAS SIGUIENTES INSTRUCCIONES"

INSERT
CONSTRAINT
SELECT
DELETE = ELIMINAR LOS REGISTROS
DML "data manipulation language" /DDL "data definition language"
NULL = es un valor especial para los atributos que nunca han tenido un contenido
DROP = ELIMINAR LA TABLA
IN
DUAL
GROUP
DISTINCT
TRIM
CREATE TABLE
CREATE SEQUENCE
LIKE
WHERE
COUNT/MAX/MIN/AVG
ORDER BY
RPUND
DESC
BETWEEN
UPPER / LOWER

--------------------------------------
EJEMPLO INSERT
TABLA T1 (
A INT PRIMARY KEY,
B VARCHAR (2)
);

INSERT INTO T1 VALUES (1,'...')

--------------------------------------
PK_T1

--------------------------------------

EJERCICIOS
--LISTAR LAS PROPIEDADES QUE TIENE UN CLIENTE (NOMBRE,APELLIDO,NUMPROP,F.INICIO ARRIENDO)

--FORMA MAS FACIL DE HACER UN JOIN

SELECT C.nombre, C.apellido, A.numPropiedad, A.inicioRenta
FROM CLIENTE C, ARRIENDO A
WHERE C.NumCliente = A.NumCliente
AND C.nombre = 'Jhon'
AND C.apellido = 'Perez'


--LISTAR EL NUMERO DE TODAS LAS OFICINAS QUE SE ENCUENTRAN EN VALDIVIA

SELECT numOficina
FROM OFICINA
WHERE CIUDAD = 'Valdivia'

--listar todos los empleaods que trabajan en la oficina de Valdivia

SELECT numEmpleado,Nombre,Apellido
FROM Empleado
Where numOficina IN ('B115','B015');

SELECT numEmpleado,Nombre,Apellido
FROM Empleado
Where numOficina IN (SELECT numOficina
FROM OFICINA
WHERE CIUDAD = 'Valdivia');

--que es lo que entrega el max

SELECT MAX (salario)
FROM Empleado
WHERE sexo = 'F';

--sequence

CREATE SEQUENCE seqt1
START WITH 10
INCREMENT BY 10;

--uso de la secuencia

SELECT seqt1.NEXTVAL FROM dual;
INSERT INTO T1 VALUES (seqT1.NEXTVAL,'1');

CREATE TABLE T1 (
A INT PRIMARY KEY,
B VARCHAR (2)
);

--calcular el salario mostrar nombre,apellido,salario,promedio y la diferencia

SELECT Nombre,Apellido,Salario,(SELECT AVG(Salario) FROM EMPLEADO) AS Promedio,
Salario - (SELECT AVG(Salario) FROM EMPLEADO) AS DIFERENCIA
FROM EMPLEADO

--numero de la oficina, cantidad de empleados(contar), sueldo promedio por oficina(promedio)

SELECT numOficina,count(*) AS CUENTA,AVG(Salario) AS SALARIO, MAX(Salario), MIN(Salario)
FROM Empleado
GROUP BY numOficina

SELECT O.ciudad,O.numOficina,count(*) AS CUENTA,AVG(Salario) AS SALARIO, MAX(Salario), MIN(Salario)
FROM Empleado E, Oficina O
WHERE E.numOficina = O.numOficina
GROUP BY O.ciudad, O.numOficina

--cantidad de oficinas por ciudad
SELECT O.ciudad,O.numOficina,count(*) AS CUENTA,AVG(Salario) AS SALARIO, MAX(Salario) AS MAXIMO, MIN(Salario) AS MINIMO
FROM Empleado E, Oficina O
WHERE E.numOficina = O.numOficina
GROUP BY O.ciudad, O.numOficina
ORDER BY O.Ciudad

SELECT ciudad,count(*) AS CUENTA,AVG(Salario) AS SALARIO, MAX(Salario), MIN(Salario)
FROM Oficina
GROUP BY ciudad

-- Listar las oficina que tiene el salario promedio más ALTO

SELECT numOficina,AVG (Salario) AS SALARIO --MAX(Salario) AS MAXIMO
FROM Empleado
GROUP BY numOficina
HAVING AVG(Salario) = (SELECT MAX(AVG(Salario)) FROM Empleado
GROUP BY numOficina)

--Listar las ciudades que tengan màs de 2 oficinas

SELECT Ciudad,count (numOficina)
FROM Oficina
GROUP BY Ciudad
HAVING count(numOficina) > 2

Clase Viernes 16-12-2011

Listar las propiedades que "tiene" un "cliente"
(nombre,apellido,numprop,finicio(arriendo))

Join:

select c.nombre, c.apellido, a.numpropiedad, a.finicio
from cliente c, arriendo a
where c.numcliente=a.numcliente
and nombre='Juan'
and apellido='Perez'

select c.nombre, c.apellido, a.numpropiedad, a.finicio
from cliente c, arriendo a
where c.numcliente=a.numcliente
and a.numpropiedad=p.numpropiedad
and p.numempleado=e.numempleado

Para lista el numero de oficinas que estan en Valdivia:

select numoficina
from oficina
where ciudad='Valdivia';

Listar empleados que estan en Valdivia:

select numempleado,nombre,apellido
from empleado
where numoficina in (select numoficina
from oficina
where ciudad='Valdivia');

Secuencias:

create
start with 10
increment by 10;

Prueba de la secuencia:

select
insert into t1 values (seqt1.nextval,'1');

Promedio del salario de los empleados:

select
salario - (select avg (salario) from empleado) as diferencia
from empleado

select numoficina, count (*), avg(salario), max(salario), min(salario)
from empleado
group by numoficina

select
from empleado e, oficina o
where e.numoficina=o.numoficina
group by o.ciudad, o.numoficina

Listar las oficinas con el salario promedio mas alto:

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

numoficina,avg(salario)
o.ciudad, o.numoficina, count (*), avg(salario), max(salario), min(salario)
nombre, apellido, salario, round((select avg (salario) from empleado),1) as promedio,
seqt1.nextval from dual;
sequence seqt1

Clase Viernes 16 diciembre

Un Join mas complejo

select c.nombre, c.apellido, a.numpropiedad, a.finicio, e.numempleado
from cliente c, arriendo a, propiedad p, empleado e
where c.numcliente=a.numcliente
and a.numpropiedad=p.numpropiedad
and p.numempleado=e.numpropiedad...


Teoria

DDL = Lenguaje de definicion de datos
DML= Lenguaje de manipulacion de datos


IN


select * from empleado where numoficina IN( Select numoficina from oficina where ciudad='Valdivia')

MAX
select max(salario) from empleado where sexo='M'


SEQUENCE
create sequence seqt1
start with 10 increment by 10;
select seqt1.nextval from dual;

insert into t1 values (seqt1.nextval, '6');
select * from t1

Promedio y round (avg, round)

select nombre, apellido, salario, round((select avg(salario) from empleado),1) as promedio, salario-round((select avg(salario) from empleado),1) as diferencia
from empleado



select numoficina, count (*), avg(salario), max(salario), min(salario)
from empleado
group by numoficina




select o.ciudad, o.numoficina, count (*), avg(salario), max(salario), min(salario)
from empleado e, oficina o
where e.numoficina=o.numoficina
group by o.ciudad, o.numoficina
order by o.ciudad

sábado, 10 de diciembre de 2011

Clases Sabado 10

Se crea un programa simple usando variables y SQL

la PPT de la materia ya esta disponible en el sitio de la U

el codigo de ejemplo es:

/*Creacion de la tabla*/
create table T1(
e integer,
f integer
);

/*se consulta la tabla creada*/
select * from T1


/*Se insertan datos a la tabla*/
Begin
DELETE FROM T1;
INSERT INTO T1 VALUES(1, 3);
INSERT INTO T1 VALUES(2, 4);
End;


/*se ejecuta el programa*/
DECLARE
a NUMBER;
b NUMBER;

BEGIN
SELECT e,f INTO a,b
FROM T1 WHERE e>1;
INSERT INTO T1 VALUES(b,a);
END;


/*se consulta nuevamente la tabla creada*/
select * from T1


/*para mostrar registros por pantalla*/


BEGIN
DBMS_OUTPUT.PUT_LINE('HOLA MUNDO');
END;


/*Ejemplo de impresion con el uso de un programa y el uso de IF*/

declare

precio integer:=150;

BEGIN

if precio>=15 then
DBMS_OUTPUT.PUT_LINE('El precio es: 'precio);
end if;

end;

/*OTRO EJEMPLO*/


declare

precio integer:=150;
texto varchar2(5);

BEGIN

if precio>=15 then
texto:='mayor';
else
texto:='menor';
end if;
DBMS_OUTPUT.PUT_LINE('El precio es 'texto' y es: 'precio);
end;

Recuperacion Sabado 10 de diciembre

Para encontrar un valor entre ciertos rangos

select * from empleado
where salario >= 200000
and salario <= 300000;

otra manera de hacer lo mismo es:

select * from empleado
where salario between 200000 and 300000;

select * from empleado
where fechanac between '01-12-1960' and '31-12-1960';


hacer un join entre 2 tablas

select e.numempleado, e.nombre, o.ciudad
from empleado e, oficina o
where e.numoficina=o.numoficina;


listar los gerentes que ganan mas de 200000

select * from empleado
where cargo='gerente' and salario>=200000;


listar todos los clientes que contengan 'Glasgow' en su direccion

select * from cliente
where direccion like '%Glasgow%';

clientes que su nombre empieza con 'P'

select * from cliente
where nombre like 'P%'

estudiar comando trim, ltrim y rtrim, para no considerar espacios en un campo

ejemplo de trim
select * from empleado
where trim(cargo) like 'Gerent_'


listar todas las visitas que tienen comentario

select * from visita
where comentario is not null;

viernes, 9 de diciembre de 2011

Viernes 09/12/2011

Herramientas
*Dropbox
Permite compartir archivos con la nube
*DIIGO
Permite guardar las URL y publicarlas
ejemplo: www.diigo.com/user/efischer


Diapositiva DreamHome

Tablas
Arriendo
Cliente
Visita
Propietario
Oficina
Propiedad
Empleado

El código de la creación de las tablas se encuentra en ORAHELP.BLOGSPOT.COM

Para que es la tabla dual
¿que es?
Oracle es una base de datos relacional, quiere decir que todos los elementos son relaciones. Entonces cuando
necesitamos realizar una operación podemos hacer uso del dual.
ejemplo

Fecha actual
SELECT SYSDATE FROM DUAL

Ejercicio 1
Crear tabla persona
atributos:
id
nombre
apellido
fechanac
renta

Desarrollo ejercicio 1
CREATE TABLE Persona (
id integer not null,
Nombre integer not null,
Apellido varchar(40),
Fechanac date,
Renta numeric(5,1),
constraint pk_persona primary key(id)
);

Importante
¿Qué comando debo utilizar para saber cuantas tablas tengo creadas?
select * from tab

¿Cómo sé la estructura que tiene una tabla?
DEsC nombre tabla ejemplo: DESC Persona

AUTOINCREMENTO
CREATE SEQUENCE SEQPersona;


LISTAR NUMERO DE PROPIEDAD (numpropiedad) DE TODAS LAS PROPIEDADES QUE HAN SIDO VISITADAS
LISTAR EL SALARIO MENSUAL PARA TODOS LOS EMPLEADOS
LISTAR EL NOMBRE EMPLEADO
LISTAR EL NUMERO EMPLEADO

SELECT NUMEMPLEADO,NOMBRE,ROUND (SALARIO/12,1) AS "SALARIO MENSUAL"
FROM EMPLEADO;

LISTAR TODOS LOS EMPLEADOS QUE GANA MAS DE 100 DOLARES
SELECT NUMEMPLEADO,NOMBRE,ROUND (SALARIO) AS "SALARIO MENSUAL"
FROM EMPLEADO;
WHERE SALARIO > 100000

LISTAR LA INFORMACION DE TODAS LAS OFICINAS QUE ESTAN EN CASTELLON O SANTIAGO? (atributos distintos)
SELECT *
FROM OFICINA
WHERE CIUDAD= 'Arica'
OR CIUDAD= 'Santiago';

SELECT *
FROM OFICINA
WHERE UPPER (CIUDAD)= 'ARICA'
OR LOWER (CIUDAD)= 'santiago';

SELECT *
FROM OFICINA
WHERE UPPER (CIUDAD) IN ('ARICA','SANTIAGO');

LISTAR TODOS LOS EMPLEADOS QUE NO SON GERENTES NI SUPERVISORES
SELECT *
FROM EMPLEADO
WHERE UPPER (CARGO) NOT IN ('GERENTES','SUPERVISORES');

link de interes: http://cursos.atica.um.es/DBA9i1/sqlplus.html

clase viernes 9 de dic

Dual es una tabla ficticia que crea y utiliza para ciertas consultas


create table persona (
id integer,
nombre varchar (35),
apellido varchar (40),
fechanac date,
renta numeric (5,1),
constraint pk_persona primary key (id)
);


/*Consultas*/


/*Consultar tablas de la base*/
select * from tab


select * from empleado

select * from persona


/*Para borrar un registro*/
delete from persona where nombre='Pedro';


insert into persona values (2, 'Pedro', 'Picapiedra', '1-04-1950', 1200.0);
insert into persona values (seqPersona.nextval, 'Pablo', 'Marmol', '1-04-1955', 0.0);


/*Para crear un autoincremento*/
create sequence seqPersona
start with 2
increment by 1;




select distinct numpropiedad from visita order by numpropiedad;


/*Listar el salario mensual de todos los empleados*/

select numempleado, nombre, round (salario/12,1) as "Salario Mensual" from empleado;

/*Pregunta de prueba, que hace el round*/



select * from oficina where upper(ciudad)='ARICA' OR lower(ciudad)='santiago';


select * from oficina where upper(ciudad) in('ARICA','SANTIAGO');
select * from oficina where upper(ciudad) NOT in('ARICA','SANTIAGO');

Clases Viernes 09-12-2011.

Crear una pregunta y publicarla el Sabado 10-12-2011 que ira en la Catedra del 17-12-2011.

Herramientas:
-Dropbox
-Diigo

www.diigo.com/user/efischer

http://orahelp.blogspot.com/search?q=completo

Tabla dual, pregunta de prueba. Es una tabla ficticia para hacer consultas.
Ejemplo:
select sysdate from dual

---

Para crear una tabla persona2:
create table persona2 (
id integer,
nombre varchar2(35),
apellido varchar2(40),
fecha date,
renta numeric (5,1),
constraint pk_persona2 primary key (id)
);


---

Para saber cuales tablas tengo:
select * from tab
              cat


---

desc persona

---

Para insertar Valores en la tabla:
insert into persona2 values (seqPersona2.nextval,'Pablo','Marmol','1-12-1960',200.0);

---

Para Ver los valores insertados:
select * from persona2

---

Para que automaticamente incremente en 1 la id:
create sequence seqPersona2
start with 1
increment by 1;


---

Listar numero de propiedad (numpropiedad) las propiedades que han sido visitadas

select
from visitaorder by numpropiedad;

---

select numempleado, nombre, round(salario/12,1) as "SALARIO MENSUAL"from empleado;

Round sirve para aproximar valores.

---

select *
from oficina
where upper(ciudad)='ARICA'
or lower(ciudad)='santiago';


---

Recordar compañeros que el grupo del curso se encuentra en el siguiente link
http://groups.google.com/group/aci900?pli=1

Buenas practicas en PL / SQL

Link del trabajo:
http://dl.dropbox.com/u/52808587/Buenas%20Practicas%20PL-SQL.docx

Buena practica 1: En los datos numericos, definir la presicion

Oracle soporta hasta 38 digitos de presicion en los tipos de datos "NUMBER", si no se define en forma correcta se esta derrochando memoria.

Forma erronea:
DECLARE
Variable1 NUMBER;

Forma correcta:
DECLARE
Variable1 NUMBER(12 , 2);




Buena Practica 2: Cuidar las conversiones implícitas de tipos de datos


Como es sabido PL/SQL maneja las conversiones implícitas pero existen dos grandes problemas en esto.
Las conversiones no son intuitivas, aveces se realizan de formas no esperadas y ocurren problemas, especialmente dentro de sentencias SQL.
Las reglas de conversión no están bajo el control del desarrollador. Pueden cambiar con una actualización o upgrade de Oracle.


Se puede convertir con el uso explicito de funciones como son: TO_DATE, TO_CHAR, TO_NUMBER y CAST.


Forma erronea:
DECLARE
fecha_fin DATE: = '01-MAR-11';


Forma correcta:





DECLARE





fecha_fin DATE: = TO_DATE ('01-MAR-11' , 'DD-MON-RR');

sábado, 3 de diciembre de 2011

Clase 03-12-2012

Clase 03-12-2012:


Tablas


create table empleado
numempleado char(4)
varchar2(35)


integer
char(4)
varchar2(4)
number(2,1)
float
date


select 2/3
from dual */funcion virtual para hacer operaciones/*


primary key */crear llave primaria/*
constraint PK_XXX primary key (numarriendo)


Investigar sobre las mejores practicas en PL-SQL para el proximo Sabado a traves del Blogger.com


Formato:
-Encabezado
-Pequeño resumen
-Accesos a Word, etc mediante DropBox (Public-Guardar archivo-Copiar la URL-Pegarla)

create table t1 (id_t1 integer,nombre varchar2(25),apellido varchar2(30),fecha date
constraint pk_t1 primary key
);
 insert into t1 values(1,'Mauricio','Ribot',sysdate)desc t1

http://groups.google.com/group/aci900

Clase del sabado 3 de diciembre

Material de SQL para consultas disponible en la pagina de la U

script para crear base de datos en orahelp.blogspot.com (completo)


preguntas de prueba
al crear tabla tipo de dato number(6,2) (averiguar que significa "6,2"
que es DUAL en oracle


crear tablas, ejemplo
create table ARRIENDO(
numarriendo integer not null,
numpropiedad char(4),
numcliente char(4),
renta float,
formapago char(10),
deposito float,
pagado char(1),
iniciorenta date,
finrenta date,
constrain pk_arriendo primary key (numarriendo)
);

fin ejemplo

verificar importancia de los DDL(lenguaje de definicion de datos) y DML(lenguaje de manipulacion de datos)
los DDL Define datos y el DML modifica datos

insert into para agregar datos a una tabla

viernes, 2 de diciembre de 2011

Consultar SQL de clases

OraHelp

http://orahelp.blogspot.com/search?q=completo

---------------------------------------
select *
from empleado

---------------------------------------
desc empleado
---------------------------------------
select * from empleado
where upper (sexo)= 'M'
---------------------------------------
SELECT * from empleado
where lower (sexo)= 'm'
---------------------------------------
SELECT cargo, count (numempleado) /* Seleccionamos el campo cargo de la tabla empleado y colocamos un contador*/
FROM empleado
GROUP BY cargo
HAVING count(*) >=5 /*agrupamos los registros del campo cargo*/
ORDER BY cargo DESC /* al colocar DESC los ordena en forma descendente y sin nada en forma ascendente*/
---------------------------------------
Listar cuantos asistentes mujeres

SELECT count (*)
FROM empleado
WHERE UPPER (sexo) = 'F'
AND UPPER (cargo) = 'ASISTENTE'

----------------------------------------

SELECT *
FROM OFICINA

¿CUANTAS OFICINAS TENGO POR CIUDAD?

SELECT CIUDAD, count (*) as "numoficina"
FROM oficina
GROUP BY ciudad

clase de SQL

orden de uso de select y sus condiciones

select *
from
where
group by
having
order by

select cargo, count(numempleado) as cantidad from empleado group by cargo having count(*) >=4