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