SE CREA LA TABLA AMIGO. ENCABEZADO CON CREATE, LOS ATRIBUTOS Y SUS TIPOS. LA LINEA QUE DICE CONSTRAINT AMIGO ... SE SEÑALA IDAMIGO COMO LA PK
CREATE TABLE AMIGO
(
IDAMIGO NUMBER,
NOMBRE VARCHAR2(30),
APELLIDO VARCHAR2(30),
TELEFONO NUMBER,
EMAIL VARCHAR2(50),
TWITTER VARCHAR2(30),
FECHANACIMIENTO DATE,
CONSTRAINT AMIGO_PK PRIMARY KEY(IDAMIGO) ENABLE
);
SE CREA LA TABLA CERVEZA CON SUS ATRIBUTOS Y PK.
CREATE TABLE CERVEZA
(
IDCERVEZA NUMBER,
NOMBRE VARCHAR2(20),
MARCA VARCHAR2(10),
CONSTRAINT CERVEZA_PK PRIMARY KEY (IDCERVEZA) ENABLE
);
SE CREA TABLA PRUEBA, CON ATRIBUTOS Y PRIMARY KEY. LAS DOS LINEAS QUE DICEN CONSTRAINT PRUEBA_FK ... SEÑALA LAS LLAVES FORANEAS (FK). DICEN QUE POR EJEMPLO, IDCERVEZA SERA LO MISMO QUE LA PK IDCERVEZA DE LA TABLA CERVEZA. MEDIANTE ESO SE UNEN LAS TABLAS AMIGO, PRUEBA Y CERVEZA.
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
);
SE CREA LA TABLA BAR, CON SUS ATRIBUTOS Y PK.
CREATE TABLE BAR
(
IDBAR NUMBER,
NOMBRE VARCHAR2(25),
DIRECCION VARCHAR2(50),
COMUNA VARCHAR(20),
TELEFONO NUMBER,
CONSTRAINT BAR_PK PRIMARY KEY(IDBAR) ENABLE
);
SE CREA TABLA FRECUENTA, CON ATRIBUTOS, PK Y 2 FK. CON ESTO UNEN AMIGO, FRECUENTA Y BAR. ADEMAS EN EL ULTIMO CONSTRAINT FRECUENTA_HORARIO ... SE USA COMO UNA VALIDACION. MECIONA QUE EL ATRIBUTO HORARIO SOLO PODRA RECIBIR LOS VALORES MAÑANA, TARDE, NOCHE O INDIFERENTE.
CREATE TABLE FRECUENTA
(
IDFRECUENTA NUMBER,
IDAMIGO NUMBER,
IDBAR NUMBER,
HORARIO VARCHAR2(10),
CONSTRAINT FRECUENTA_PK PRIMARY KEY(IDFRECUENTA) ENABLE,
CONSTRAINT FRECUENTA_FK_AMIGO FOREIGN KEY (IDAMIGO) REFERENCES AMIGO (IDAMIGO) ENABLE,
CONSTRAINT FRECUENTA_FK2_BAR FOREIGN KEY (IDBAR) REFERENCES BAR (IDBAR) ENABLE,
CONSTRAINT FRECUENTA_HORARIO CHECK (HORARIO IN ('MAÑANA', 'TARDE', 'NOCHE', 'INDIFERENTE')) ENABLE
);
CREA TABLA SIRVE, CON SUS ATRIBUTOS, PK Y SUS 2 FK. SE CREA LA CONEXION BAR, SIRVE, CERVEZA.
CREATE TABLE SIRVE
(
IDSIRVE NUMBER,
IDBAR NUMBER,
IDCERVEZA NUMBER,
CONSTRAINT SIRVE_PK PRIMARY KEY(IDSIRVE) ENABLE,
CONSTRAINT SIRVE_FK_CERVEZA FOREIGN KEY (IDCERVEZA) REFERENCES CERVEZA (IDCERVEZA) ENABLE,
CONSTRAINT SIRVE_FK2_BAR FOREIGN KEY (IDBAR) REFERENCES BAR (IDBAR) ENABLE
);
ACA SE POBLA LA TABLA AMIGO, ES DECIR, SE LE AGREGAN DATOS. EL BEGIN Y EL END HACEN QUE SE PUEDAN AGREGAR TODOS LOS DATOS DE UNA VEZ.
Begin
Insert into Amigo values (10, 'Pedro', 'Picapiedra', 5555555, 'ppicapiedra@gmail.com','@Picapiedra', '06/06/1966');
insert into Amigo Values (20, 'Rick', 'Wackeman', 932456765, 'rwackeman@hotmail.com', '@wackeman', '25/05/1960');
insert into Amigo Values (30, 'Jack', 'Bauer', 74859632, 'jbauer@ctu.org', '@bauer', '24/06/1970');
insert into Amigo Values (40, 'Chuck', 'Norris', 7777777, 'cnorris@dios.com', '@DonChuck', '07/07/1940');
End
SE POBLA LA TABLA CERVEZA.
BEGIN
insert into Cerveza values (10, 'Escudo', 'CCU');
insert into Cerveza values (20, 'Pale Ale', 'Kunstmann');
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, 'Chimbombo', 'Cuneta');
END
SE POBLA LA TABLA PRUEBA
Begin
insert into prueba values (10, 10, 10);
insert into prueba values (11, 10, 20);
insert into prueba values (12, 10, 30);
insert into prueba values (13, 20, 10);
insert into prueba values (14, 20, 70);
insert into prueba values (15, 30, 40);
insert into prueba values (16, 30, 60);
insert into prueba values (17, 40, 70);
insert into prueba values (18, 40, 20);
END
SE POBLA LA TABLA BAR
BEGIN
insert into bar values (1, 'El Bar de Moe', 'Av. Siempre Viva 278', 'Springfield', 4884665);
insert into bar values (2, 'El Pobre Carlos', 'Av. Balmaceda 2487', 'Talagante', 8154879);
insert into bar values (3, 'Groops!', 'Downtown 200', 'Ciudad de York', 9905674);
insert into bar values (4, 'Atico', 'Santelices 669', 'Isla de Maipo', 8194596);
END
SE POBLA LA TABLA FRECUENTA
BEGIN
insert into frecuenta values (1, 10, 1, 'NOCHE');
insert into frecuenta values (2, 20, 1, 'MAÑANA');
insert into frecuenta values (3, 10, 2, 'NOCHE');
insert into frecuenta values (4, 10, 3, 'TARDE');
insert into frecuenta values (5, 30, 1, 'NOCHE');
insert into frecuenta values (6, 40, 1, 'TARDE');
insert into frecuenta values (7, 40, 3, 'MAÑANA');
insert into frecuenta values (8, 20, 4, 'NOCHE');
insert into frecuenta values (9, 40, 2, 'TARDE');
insert into frecuenta values (10, 30, 2, 'NOCHE');
END
SE POBLA LA TABLA SIRVE
BEGIN
insert into sirve values(30, 1, 10);
insert into sirve values(31, 2, 20);
insert into sirve values(32, 1, 10);
insert into sirve values(33, 2, 20);
insert into sirve values(34, 3, 60);
insert into sirve values(35, 3, 30);
insert into sirve values(36, 3, 20);
insert into sirve values(37, 4, 40);
insert into sirve values(38, 4, 60);
END
SELECT * FROM nombreTabla: DEVUELVE TODOS LOS REGISTROS (DATOS ALMACENADOS EN ATRIBUTOS) DE LA TABLA MENCIONADA
SELECT * FROM AMIGO
SELECT * FROM CERVEZA
SELECT * FROM PRUEBA
SELECT * FROM BAR
SELECT * FROM FRECUENTA
SELECT * FROM SIRVE
EN ESTA CONSULTA, SE ABREN LAS TABLAS AMIGO, CERVEZA Y PRUEBA, DONDE SE LE ASIGNAN ALIAS A, C Y P. SE DEVOLVERA SOLO EL NOMBRE Y EL APELLIDO DEL AMIGO. PRIMERO SE HACE EL JOIN, DONDE SE IGUALAN LAS ID DE UNA TABLA CON EL ID DE LA TABLA INTERMEDIA (EJ: IDAMIGO DE LA TABLA AMIGO CON IDAMIGO DE LA TABLA PRUEBA) . Y FINALMENTE SE ESCRIBE LA CONDICION. ESTA DICE QUE DEVUELVA EL NOMBRE Y APELLIDO DE LOS QUE HAN CONSUMIDO ESCUDO Y ADEMAS BOCK (SE HACE UNA INSTRUCCION ESPECIAL CON IN DONDE SOLO SE UTILIZA EL IDAMIGO PARA SABER LA SEGUNDA CERVEZA QUE BEBIO Y VOLVER A VERIFICAR).
SELECT A.NOMBRE, A.APELLIDO
FROM AMIGO A, CERVEZA C, PRUEBA P
WHERE A.IDAMIGO = P.IDAMIGO
AND P.IDCERVEZA = C.IDCERVEZA
AND C.NOMBRE = 'Escudo'
AND A.IDAMIGO IN
( SELECT IDAMIGO
FROM PRUEBA P, CERVEZA C
WHERE C.IDCERVEZA = P.IDCERVEZA
AND C.NOMBRE = 'Bock'
);
VISTA: ESTA LINEA CREA UNA VISTA PARA SER OCUPADA DESPUES Y VER CAMBIOS. TAMBIEN PUEDE SER LLAMADA COMO SELECT * FROM VISTA SIEMPRE Y CUANDO SE HAYA COLOCADO ARRIBA EN UNA CONSULTA DEFINIDA.
CREATE VIEW VISTA
ESTA CONSULTA DICE QUE OCUPARA LAS TABLAS AMIGO, BAR, FRECUENTA, CERVEZA Y SIRVE. SOLO DEVOLVERA EL NOMBRE DEL AMIGO, NOMBRE DE LA CERVEZA, NOMBRE DEL BAR Y EL HORARIO (SIN CONDICION, VALIDACION O FILTRACION). SE HACEN LOS JOIN.
SELECT A.NOMBRE, C.NOMBRE, B.NOMBRE, HORARIO
FROM AMIGO A, BAR B, FRECUENTA F, CERVEZA C, SIRVE S
WHERE A.IDAMIGO = F.IDAMIGO
AND F.IDBAR = B.IDBAR
AND B.IDBAR = S.IDBAR
AND S.IDCERVEZA = C.IDCERVEZA
USER_TABLES MUESTRA TODAS LA INFORMACION DE TODAS LAS TABLAS
SELECT * FROM USER_TABLES
ESTO DESCRIBE LA ESTRUCTURA DE LA TABLA CERVEZA
DESCRIBE CERVEZA
NAMASTE!!!