viernes, 20 de mayo de 2011

Recordatorio para las siguientes clases

Los Objetivos de 'Amigos y Cervezas'

1) Modelar

2) Crear Tablas

 CREATE TABLE  AMIGO
   (   
    IDAMIGO         NUMBER,
    NOMBRE             VARCHAR2(30),
    APELLIDO         VARCHAR2(30),
    TELEFONO         NUMBER,
    EMAIL             VARCHAR2(40),
    TWITTER         VARCHAR2(30),
    FECHANACIMIENTO DATE,
     CONSTRAINT AMIGO_PK PRIMARY KEY (IDAMIGO) ENABLE
   );

 CREATE TABLE  CERVEZA
   (   
    IDCERVEZA     NUMBER,
    NOMBRE         VARCHAR2(30),
    MARCA         VARCHAR2(20),
     CONSTRAINT CERVEZA_PK PRIMARY KEY (IDCERVEZA) ENABLE
   );


   CREATE TABLE  BAR
   (    IDBAR NUMBER,
    NOMBRE VARCHAR2(30),
    DIRECCION VARCHAR2(30),
    COMUNA VARCHAR2(20),
    TELEFONO NUMBER,
     CONSTRAINT BAR_PK PRIMARY KEY (IDBAR) ENABLE
   );


  
   CREATE TABLE  PRUEBA
   (   
    IDPRUEBA  NUMBER,
    IDAMIGO   NUMBER,
    IDCERVEZA NUMBER,
     CONSTRAINT PRUEBA_PK PRIMARY KEY (IDPRUEBA) ENABLE,
     CONSTRAINT PRUEBA_FK_AMIGO FOREIGN KEY (IDAMIGO)
      REFERENCES  AMIGO (IDAMIGO) ENABLE,
     CONSTRAINT PRUEBA_FK2_CERVEZA FOREIGN KEY (IDCERVEZA)
      REFERENCES  CERVEZA (IDCERVEZA) ENABLE
   );

   CREATE TABLE  SIRVE
   (    IDSIRVE NUMBER,
    IDCERVEZA NUMBER,
    IDBAR NUMBER, 

    GUSTA VARCHAR2(20),
     CONSTRAINT SIRVE_PK PRIMARY KEY (IDSIRVE) ENABLE, 
CONSTRAINT SIRVE_GUSTA CHECK ( GUSTA in ('NADA', 'NORMAL', 'MUCHO') ) ENABLE
     CONSTRAINT SIRVE_FK_CERVEZA FOREIGN KEY (IDCERVEZA)
      REFERENCES  CERVEZA (IDCERVEZA) ENABLE,
     CONSTRAINT SIRVE_FK_BAR FOREIGN KEY (IDBAR)
      REFERENCES  BAR (IDBAR) ENABLE
   );

   CREATE TABLE  FRECUENTA
   (    IDFRECUENTA NUMBER,
    IDAMIGO NUMBER,
    IDBAR NUMBER,
    HORARIO VARCHAR2(20),
     CONSTRAINT FRECUENTA_PK PRIMARY KEY (IDFRECUENTA) ENABLE,
     CONSTRAINT FRECUENTA_HORARIO CHECK ( HORARIO in ('MAÑANA', 'TARDE', 'NOCHE', 'INDIFERENTE') ) ENABLE,
     CONSTRAINT FRECUENTA_FK_AMIGO FOREIGN KEY (IDAMIGO)
      REFERENCES  AMIGO (IDAMIGO) ENABLE,
     CONSTRAINT FRECUENTA_FK_BAR FOREIGN KEY (IDBAR)
      REFERENCES  BAR (IDBAR) ENABLE
   );



3) Creacion de Llave primaria y Llave Foranea

   Alter table Amigo
   add constraint pk_Amigo Primary Key (idAmigo);

   Alter Table Prueba
   Add constraint fk_Prueba_Amigo
   foreign key (IdAmigo) references Amigo (idAmigo)
   Add constraint fk_Prueba_Cerveza
   foreign key (IdCerveza) references Cerveza (idCerveza);

                           ***TIPS***
   La tabla USER_TABLES tiene la lista de las tablas definidas en la cuenta+
    select Table_name from USER_TABLES
  
   El comando DESCRIBE permite conocer la estructura de la tabla
    Describe cerveza
  
   Alter table para MODIFICAR la estructura de la Tabla
    Alter Table Amigo
    modify email varchar2(35);
  
   Para modificar un atributa ya ingresado UPDATE


    set email = 'ppicapiedra@gmail.com'
    Update Amigo
    where idAmigo = 10;



       
   Para ver todas las tablas
 
    Select * from user_tables


4) Agregar registros a las tablas

  Begin
Insert into Amigo values (10, 'jesus', 'angel', 5554555, 'jesusangel@gmail.com','@jesus', '06/06/1966');
Insert into Amigo Values (20, 'ala', 'Wackeman', 932456765, 'rwackeman@hotmail.com', '@ala', '25/05/1960');
Insert into Amigo Values (30, 'jose', 'sito', 94286765, 'ianderson@hotmail.com', '@elmasactivao', '20/02/1950');
Insert into Amigo values (40, 'buda', 'Araya', 533542355, 'alan.alone@gmail.com','@alan', '06/06/1966');
Insert into Amigo Values (50, 'Cristo', 'manuel', 934275765, 'cris.death@hotmail.com', '@Cris', '25/05/1960');
Insert into Amigo Values (60, 'Marko', 'Smith', 942346765, 'markjon@hotmail.com', '@marko', '20/02/1950');

End

BEGIN
insert into Cerveza values (20, 'Duff', 'moes');
insert into Cerveza values (30, 'Bock', 'Kunstmann');
insert into Cerveza values (40, 'Cristal', 'CCU');
insert into Cerveza values (50, 'Baltica', 'CCU');
insert into Cerveza values (60, 'Heinecken', 'Heinecken');
insert into Cerveza values (70, 'Escudo', 'piraña rock');
END




Begin
Insert into Bar values (10, 'moes', 'independencia #6534', 'conchali', 7873434);
Insert into Bar Values (20, 'y tu mama?', 'dorsal #3245', 'quinta normal', 56434234);
Insert into Bar Values (30, 'revolution', 'cardenal caro #3242', 'vitacura', 4375235);
Insert into Bar values (40, 'pistolas y rosas', 'manuel Araya #6483', 'la florida',4763523);
Insert into Bar Values (50, 'Aguante!!', 'vivaceta #1313', 'independencia', 4343456);
Insert into Bar Values (60, 'tio bob', 'roma #1434', 'quilicura', 4563623);
End 



Begin
insert into prueba values (10, 10, 20);
insert into prueba values (11, 20, 30);
insert into prueba values (12, 30, 40);
insert into prueba values (13, 40, 50);
insert into prueba values (14, 50, 60);
insert into prueba values (15, 60, 70);
END









Begin
insert into sirve values (10,20,10,'NADA');
insert into sirve values (20,30,20,'NORMAL');
insert into sirve values (30,40,30,'NADA');
insert into sirve values (40,50,40,'MUCHO');
insert into sirve values (50,60,50,'MUCHO');
insert into sirve values (60,70,60.'NADA');

End     



Begin
insert into frecuenta values (10,10,10,'MAÑANA');
insert into frecuenta values (20,20,20,'TARDE');
insert into frecuenta values (30,30,30,'INDIFERENTE');
insert into frecuenta values (40,40,40,'NOCHE');
insert into frecuenta values (50,50,50,'TARDE');
insert into frecuenta values (60,60,60,'INDIFERENTE');

End



Select * from Cerveza
Select * from Amigo
Select * from Prueba

Select * from Prueba
Select * from Sirve
Select * from frecuenta

// buscar 2 cervezas diferentes

Select a.nombre
from Amigo a, Prueba p, Cerveza c
where a.idAmigo = p.idAmigo
  and p.idCerveza = c.idCerveza
  and (c.nombre = 'Cristal'
   or c.nombre = 'Escudo')

//buscar otra cerveza

Select a.nombre
from Amigo a, Prueba p, Cerveza c
where a.idAmigo = p.idAmigo
  and p.idCerveza = c.idCerveza
  and c.nombre = 'Cristal'
  and a.idAmigo in (Select idAmigo
                    from Prueba p, Cerveza c
                    where p.idCerveza = c.idCerveza
                    and c.nombre = 'Baltica') 

//otros codigos

create view amigosbar as
Select a.nombre,apellido,horario,b.nombre as "Nombre Bar"
from bar b, frecuenta f, Amigo a
where a.idAmigo = f.idAmigo
  and f.idBar = b.idBar
  and (b.nombre = 'moes')
select * from amigosbar



//buscar nombre del bar que sirve cerveza duff
Create view barcerveza as
Select c.nombre, gusta, b.nombre as "Nombre Bar"
from bar b, Sirve s, Cerveza c
where b.idBar = s.idBar
  and s.idCerveza = c.idCerveza
  and (b.nombre = 'moes')
select * from barcerveza