jueves, 30 de junio de 2011

jueves, 9 de junio de 2011

Condiciones de búsqueda

  • Join
La sentencia join en SQL permite combinar registros de dos o más tablas en una base de datos relacional.







  • GROUP BY
La palabra clave GROUP BYse utiliza cuando estamos seleccionado columnas múltiples desde una tabla (o tablas) y aparece al menos un operador aritmético en la instrucción SELECT. Cuando esto sucede, necesitamos GROUP BY todas las otras columnas seleccionadas, es decir , todas las columnas excepto aquella(s) que se operan por un operador aritmético.



  • HAVING
Especifica una condición de búsqueda para un grupo o agregado. HAVING sólo se puede utilizar con la instrucción SELECT. Normalmente, HAVING se utiliza en una cláusula GROUP BY. Cuando no se utiliza GROUP BY, HAVING se comporta como una cláusula WHERE.


  • OUTER JOIN
Este tipo de operación se subdivide dependiendo de la tabla a la cual se le admitirán los registros que no tienen correspondencia, ya sean de tabla izquierda, de tabla derecha, o combinación completa.


Implementación de condiciones de búsqueda en consultas (Campeonato)

1) Construir 02 consultas que utilicen JOIN
  • OBTENER LA FECHA Y EL CAMPEONATO DE CADA PARTIDO
 Código
SELECT Ca.C_CAMPEONATO, Pa.D_PARTIDO
FROM CAMPEONATO Ca JOIN
PARTIDO Pa
ON (Ca.C_CAMPEONATO = Pa.C_CAMPEONATO
)
ORDER BY Ca.C_CAMPEONATO, Pa.
D_CAMPEONATO



  • OBTENER EL NOMBRE DEL ESTADIO Y DE LOS ALUMNOS QUE HAYAN PARTICIPADO
Código
SELECT Pa.N_ARBITRO, Es.N_ESTADIO
FROM ESTADIO Es JOIN
PARTIDO Pa
ON (Es.N_ESTADIO= Pa.N_ARBITRO
)
ORDER BY Es.N_ESTADIO, Pa.
N_ARBITRO


2) Construir 02 consultas que utilicen GROUP BY
  • TODOS LOS EQUIPOS Y SUS JUGADORES QUE HAN PARTICIPADO EN EL CAMPEONATO APERTURA 2010
 Código
SELECT E.C_EQUIPO, E.N_EQUIPO, J.C_JUGADOR, J.N_JUGADOR, P.NRO_PARTIDO, P.N_POSICION
FROM JUGADOR J JOIN JUG_EQ_CAMP JEC ON (J.C_JUGADOR = JEC.C_JUGADOR)JOIN CAMPEONATO C ON (C.C_CAMPEONATO = JEC.C_CAMPEONATO)
JOIN EQUIPO E ON (E.C_EQUIPO = JEC.C_EQUIPO)
WHERE C.C_CAMPEONATO ='A10'
GROUP BY E.C_EQUIPO, E.N_EQUIPO, J.C_JUGADOR, J.N_JUGADOR, P.NRO_PARTIDO, P.N_POSICION



  • TODOS LOS EQUIPOS Y SUS JUGADORES QUE HAN PARTICIPADO EN EL CAMPEONATO APERTURA 2010 Y CUYOS NOMBRES TERMNAN EN "O"
  • 3) Construir 02 consultas que utilicen HAVING
  • JUGADORES DEL EQUIPO 2 CUYO NUMERO DE PARTIDOS JUGADOS ES MAYOR A 1
Código
SELECT FROM JUGADOR J JOIN JUG_EQ_CAMP JEC ON (J.C_JUGADOR = JEC.C_JUGADOR)JOIN EQUIPO E ON (E.C_EQUIPO = JEC.C_EQUIPO) JOIN JUG_PARTIDO P ON (P.C_JUGADOR = JEC.C_JUGADOR)WHERE E.C_EQUIPO ='E2'AND P.NRO_PARTIDO >1 GROUP BY E.C_EQUIPO, E.N_EQUIPO, J.C_JUGADOR, J.N_JUGADOR, P.NRO_PARTIDO, P.N_POSICION HAVING COUNT (DISTINCT P.NRO_PARTIDO)>=1
            Código
             SELECT E.C_EQUIPO, E.N_EQUIPO, J.C_JUGADOR, J.N_JUGADOR, P.NRO_PARTIDO, P.N_POSICION FROM JUGADOR J JOIN JUG_EQ_CAMP JEC ON (J.C_JUGADOR = JEC.C_JUGADOR)JOIN EQUIPO E ON (E.C_EQUIPO = JEC.C_EQUIPO) JOIN JUG_PARTIDO P ON (P.C_JUGADOR = JEC.C_JUGADOR)WHERE P.N_POSICION = 'DELANTERO'GROUP BY E.C_EQUIPO, E.N_EQUIPO, J.C_JUGADOR, J.N_JUGADOR, P.NRO_PARTIDO, P.N_POSICION HAVING  COUNT (DISTINCT P.NRO_PARTIDO)>=1 E.C_EQUIPO, E.N_EQUIPO, J.C_JUGADOR, J.N_JUGADOR, P.NRO_PARTIDO, P.N_POSICION
            • JUGADORES QUE HAYAN JUGADO UNO O MAS PARTIDOS Y QUE SEAN DELANTERO
             Código
            SELECT E.C_EQUIPO, E.N_EQUIPO, J.C_JUGADOR, J.N_JUGADOR, P.NRO_PARTIDO, P.N_POSICION
            FROM JUGADOR J JOIN
            JUG_EQ_CAMP JEC ON (J.C_JUGADOR = JEC.C_JUGADOR)JOIN CAMPEONATO C ON (C.C_CAMPEONATO = JEC.C_CAMPEONATO)

            JOIN EQUIPO E ON (E.
            C_EQUIPO = JEC.C_EQUIPO)

            WHERE C.
            C_CAMPEONATO =
            'A10' GROUP BY E.C_EQUIPO, E.N_EQUIPO, J.C_JUGADOR, J.N_JUGADOR, P.NRO_PARTIDO, P.N_POSICION

                
            4) Construir 02 consultas que utilicen JOIN, WHERE, GROUP BY y HAVING
            • LISTADO DE JUGADORES CUYO NOMBRE ACABA EN "O" Y HAN JUGADO MAS DE UN PARTIDO
            Código SELECT  E.C_EQUIPO, E.N_EQUIPO, J.C_JUGADOR, J.N_JUGADOR, P.NRO_PARTIDO, P.N_POSICION FROM JUGADOR J JOIN JUG_EQ_CAMP JEC ON (J.C_JUGADOR = JEC.C_JUGADOR)JOIN EQUIPO E ON (E.C_EQUIPO = JEC.C_EQUIPO) JOIN JUG_PARTIDO P ON (P.C_JUGADOR = JEC.C_JUGADOR)WHERE J.N_JUGADOR LIKE '%O' GROUP BY E.C_EQUIPO, E.N_EQUIPO, J.C_JUGADOR, J.N_JUGADOR, P.NRO_PARTIDO, P.N_POSICION HAVING COUNT (DISTINCT P.NRO_PARTIDO)>=1 
                    

            • LISTADO DE JUGADORES DEL EQUIPO DE ALIANZA QUE HAN JUGADO MAS DE UN PARTIDO
                Código
                SELECT E.C_EQUIPO, E.N_EQUIPO, J.C_JUGADOR, J.N_JUGADOR, P.NRO_PARTIDO, P.N_POSICION FROM JUGADOR J JOIN JUG_EQ_CAMP JEC ON (J.C_JUGADOR = JEC.C_JUGADOR)JOIN EQUIPO E ON (E.C_EQUIPO = JEC.C_EQUIPO) JOIN JUG_PARTIDO P ON (P.C_JUGADOR = JEC.C_JUGADOR)WHERE E.C_EQUIPO ='E1'AND E.N_EQUIPO='ALIANZA LIMA'AND P.NRO_PARTIDO >1 AND P.N_POSICION ='DELANTERO' GROUP BY E.C_EQUIPO, E.N_EQUIPO, J.C_JUGADOR, J.N_JUGADOR, P.NRO_PARTIDO, P.N_POSICION HAVING COUNT (DISTINCT P.NRO_PARTIDO)>=1
            5) Construir 02 consultas que utilicen OUTER JOIN

            • LEFT OUTER JOIN DE LAS TABLAS JUG_PARTIDO Y JUGADOR
            • LEFT OUTER JOIN DE LAS TABLAS JUG_EQUI_CAMP Y EQUIPO



            jueves, 2 de junio de 2011

            Query's del caso "Campeonato" en 4 Diferentes Motores de Base de Datos

            Modelo 1:  "Campeonato"

            1. SQL Server 2008
            • Creación de las tablas 
            CREATE TABLE CAMPEONATO(
              C_CAMPEONATO CHAR(3) NOT NULL,
              N_CAMPEONATO VARCHAR(220),
              Q_PARTIDOS INT,
              PRIMARY KEY (C_CAMPEONATO))

            CREATE TABLE EQUIPO(
              C_EQUIPO CHAR(2) NOT NULL,
              N_EQUIPO VARCHAR(220),
              PRIMARY KEY (C_EQUIPO))

            CREATE TABLE JUGADOR(
              C_JUGADOR CHAR(3) NOT NULL,
              N_JUGADOR VARCHAR(220),
              D_NACIMIENTO DATE,
              PRIMARY KEY (C_JUGADOR));
             
            CREATE TABLE JUG_EQ_CAMP(
              C_JUGADOR CHAR(3) NOT NULL,
              C_CAMPEONATO CHAR(3) NOT NULL,
              C_EQUIPO CHAR(2),
              PRIMARY KEY (C_JUGADOR, C_CAMPEONATO),
              FOREIGN KEY (C_JUGADOR) REFERENCES JUGADOR(C_JUGADOR)
            )

            -- ADICIONA CLAVES FORANEAS
            ALTER TABLE JUG_EQ_CAMP
              ADD FOREIGN KEY (C_CAMPEONATO)
              REFERENCES CAMPEONATO(C_CAMPEONATO)

            ALTER TABLE JUG_EQ_CAMP
              ADD FOREIGN KEY (C_EQUIPO)
              REFERENCES EQUIPO(C_EQUIPO)

            -- BORRA UNA CLAVE FORANEA
            -- ALTER TABLE JUG_EQ_CAMP
            --   DROP FK__JUG_EQ_CA__C_CAM__1A14E395

            CREATE TABLE ESTADIO(
              C_ESTADIO CHAR(3) NOT NULL,
              N_ESTADIO VARCHAR(220),
              PRIMARY KEY (C_ESTADIO))

            CREATE TABLE PARTIDO(
              NRO_PARTIDO INT NOT NULL,
              C_ESTADIO_PART CHAR(3),
              C_EQUIPO_1 CHAR(2),
              C_EQUIPO_2 CHAR(2),
              C_CAMPEONATO CHAR(3),
              D_PARTIDO DATE,
              N_JUEZ_LINEA1 VARCHAR(250),
              N_JUEZ_LINEA2 VARCHAR(250),
              Q_GOLES_E1 INT,
              Q_GOLES_E2 INT,
              N_ARBITRO VARCHAR(220),
              C_RESULTADO VARCHAR(20),
              PRIMARY KEY (NRO_PARTIDO),
              FOREIGN KEY (C_ESTADIO_PART)
                          REFERENCES ESTADIO(C_ESTADIO),
              FOREIGN KEY (C_EQUIPO_1)
                          REFERENCES EQUIPO(C_EQUIPO),
              FOREIGN KEY (C_EQUIPO_2)
                          REFERENCES EQUIPO(C_EQUIPO),
              FOREIGN KEY (C_CAMPEONATO)
                          REFERENCES CAMPEONATO(C_CAMPEONATO)                                          
            )

            CREATE TABLE JUG_PARTIDO(
              C_JUGADOR   CHAR(3) NOT NULL,
              NRO_PARTIDO INT NOT NULL,
              N_POSICION  VARCHAR(220),
              NRO_CAMISETA INT NOT NULL,
              F_EXPULSADO  CHAR(1),
              F_AMONESTADO CHAR(1),
              F_GOLEADOR   CHAR(1),
              PRIMARY KEY (C_JUGADOR, NRO_PARTIDO),
              FOREIGN KEY (C_JUGADOR)
                          REFERENCES JUGADOR(C_JUGADOR),
              FOREIGN KEY (NRO_PARTIDO)
                          REFERENCES PARTIDO(NRO_PARTIDO)
                         
            )
            •  Diagrama del caso

            • Ingreso de datos
            INSERT INTO EQUIPO VALUES
            ('E1', 'ALIANZA LIMA'),
            ('E2', 'UNIVERSITARIO'),
            ('E3', 'SPORT ANCASH'),
            ('E4', 'CRISTAL'),
            ('E5', 'BOYS')



            INSERT INTO CAMPEONATO
            (N_CAMPEONATO, Q_PARTIDOS, C_CAMPEONATO)
            VALUES
            ('APERTURA 2011', 32, 'A11'),
            ('APERTURA 2010', 12, 'A10'),
            ('CLAUSURA 2011', 28, 'C11'),
            ('CLAUSURA 2010', 24, 'C10')



            INSERT INTO JUGADOR(C_JUGADOR, N_JUGADOR)
            VALUES
            ('J01','WALDIR SAENZ'),
            ('J02','JOSE LUIS CARRANZA'),
            ('J03','Roberto Palacios'),
            ('J04','Héctor Chumpitaz'),
            ('J05','Jorge Soto'),
            ('J06','Juan Jayo'),
            ('J07','Nolberto Solano'),
            ('J08','Rubén Díaz'),
            ('J09','Juan Reynoso'),
            ('J10','Percy Olivares'),
            ('J11','José Velásquez'),
            ('J12','Teófilo Cubillas'),
            ('J13','Teodoro Fernández'),
            ('J14','Franco Navarro'),
            ('J15','Hugo Sotil'),
            ('J16','Oswaldo Ramírez'),
            ('J17','Pedro Pablo León'),
            ('J18','Óscar Gómez Sánchez'),
            ('J19','Jorge Alcalde'),
            ('J20','Claudio Pizarro')


            
            INSERT INTO JUG_EQ_CAMP VALUES
            ('J01','A10','E1'),
            ('J02','A10','E1'),
            ('J03','A10','E1'),
            ('J04','A10','E1'),
            ('J05','A10','E1'),
            ('J07','A10','E2'),
            ('J08','A10','E2'),
            ('J09','A10','E2'),
            ('J10','A10','E2'),
            ('J11','A10','E2'),
            ('J06','A10','E3'),
            ('J12','A10','E3'),
            ('J13','A10','E3'),
            ('J14','A10','E3'),
            ('J15','A10','E3'),
            ('J16','A10','E4'),
            ('J17','A10','E4'),
            ('J18','A10','E4'),
            ('J19','A10','E5'),
            ('J20','A10','E5'),
            ('J01','C10','E5'),
            ('J02','C10','E5'),
            ('J03','C10','E5'),
            ('J04','C10','E5'),
            ('J05','C10','E5'),
            ('J07','C10','E3'),
            ('J08','C10','E3'),
            ('J09','C10','E3'),
            ('J10','C10','E3'),
            ('J11','C10','E3'),
            ('J06','C10','E2'),
            ('J12','C10','E2'),
            ('J13','C10','E2'),
            ('J14','C10','E2'),
            ('J15','C10','E2'),
            ('J16','C10','E1'),
            ('J17','C10','E1'),
            ('J18','C10','E1'),
            ('J19','C10','E1'),
            ('J20','C10','E1')

            INSERT INTO ESTADIO VALUES
            ('ES1','ESTADIO MONUMENTAL'),
            ('ES2','ESTADIO NACIONAL'),
            ('ES3','ESTADIO SAN GUSTIN'),
            ('ES4','ESTADIO GARCILASO DE LA VEGA'),
            ('ES5','ESTADIO ALIANZA LIMA')


            INSERT INTO PARTIDO VALUES
            (1, 'ES1', 'E1', 'E2', 'A10', '20100120',
            'Albán Ynga,Edgard', 'Ávila Minchola,Julio César', 1, 2,
            'López Cruz,Raúl Eduardo', 'GA GANADOR'),
            (2, 'ES2', 'E4', 'E3', 'A10', '20100120',
            'Albán', 'Ávila', 2, 2, 'López', 'EM EMPATE'),



            • Consultas realizadas
            SELECT * FROM JUGADOR;
            SELECT * FROM EQUIPO;
            SELECT * FROM CAMPEONATO;
            SELECT * FROM JUG_EQ_CAMP;

            -- LOS JUGADORES QUE SE LLAMEN JORGE
            SELECT *
            FROM JUGADOR J
            WHERE J.N_JUGADOR LIKE '%JORGE%'



            -- CAMPEONATOS EN LOS QUE JUGO JORGE
            SELECT J.N_JUGADOR, C.N_CAMPEONATO, E.N_EQUIPO
            FROM JUGADOR J JOIN JUG_EQ_CAMP JEC ON (J.C_JUGADOR = JEC.C_JUGADOR)
                           JOIN CAMPEONATO C ON (C.C_CAMPEONATO = JEC.C_CAMPEONATO)
                           JOIN EQUIPO E ON (E.C_EQUIPO = JEC.C_EQUIPO)
            WHERE J.N_JUGADOR LIKE '%JORGE%'



            -- LISTADO DE JUGADORES POR EQUIPO
            SELECT C.N_CAMPEONATO, E.C_EQUIPO, E.N_EQUIPO, J.C_JUGADOR, J.N_JUGADOR
            FROM JUGADOR J JOIN JUG_EQ_CAMP JEC ON (J.C_JUGADOR = JEC.C_JUGADOR)
                           JOIN CAMPEONATO C ON (C.C_CAMPEONATO = JEC.C_CAMPEONATO)
                           JOIN EQUIPO E ON (E.C_EQUIPO = JEC.C_EQUIPO)
            ORDER BY C.N_CAMPEONATO, E.N_EQUIPO



            SELECT * FROM PARTIDO
            SELECT * FROM ESTADIO
            SELECT * FROM JUG_PARTIDO

            SELECT J.C_JUGADOR, J.N_JUGADOR, E1.N_EQUIPO, E2.N_EQUIPO, P.NRO_PARTIDO,
                   JP.F_GOLEADOR 'GOLEADOR'
            FROM JUGADOR J JOIN JUG_PARTIDO JP ON(J.C_JUGADOR = JP.C_JUGADOR)
                           JOIN PARTIDO P ON (JP.NRO_PARTIDO = P.NRO_PARTIDO)
                           JOIN EQUIPO E1 ON (E1.C_EQUIPO = P.C_EQUIPO_1)
                           JOIN EQUIPO E2 ON (E2.C_EQUIPO = P.C_EQUIPO_2)
                         
            SELECT J.C_JUGADOR, J.N_JUGADOR, E1.N_EQUIPO, E2.N_EQUIPO, P.NRO_PARTIDO,
                   JP.F_GOLEADOR 'GOLEADOR'
            FROM JUGADOR J JOIN JUG_PARTIDO JP ON(J.C_JUGADOR = JP.C_JUGADOR)
                           JOIN PARTIDO P ON (JP.NRO_PARTIDO = P.NRO_PARTIDO)
                           JOIN EQUIPO E1 ON (E1.C_EQUIPO = P.C_EQUIPO_1)
                           JOIN EQUIPO E2 ON (E2.C_EQUIPO = P.C_EQUIPO_2)
            WHERE JP.F_GOLEADOR = 'S'
                          

                2. ORACLE
            • Ingreso del código



            • Ingreso de datos a las tablas








                3. MySQL
            • Código
            CREATE TABLE ARBITRO (
                   C_ARBITRO            VARCHAR(3) NOT NULL,
                   Q_AÑOS               INTEGER
            );

            CREATE UNIQUE INDEX XPKARBITRO ON ARBITRO
            (
                   C_ARBITRO
            );


            ALTER TABLE ARBITRO
                   ADD PRIMARY KEY (C_ARBITRO);


            CREATE TABLE HOTEL (
                   C_HOTEL              VARCHAR(3) NOT NULL,
                   N_HOTEL              VARCHAR(250),
                   T_DIRECCION          VARCHAR(250),
                   NRO_TELEFONO         NUMERIC(12)
            );

            CREATE UNIQUE INDEX XPKHOTEL ON HOTEL
            (
                   C_HOTEL
            );


            ALTER TABLE HOTEL
                   ADD PRIMARY KEY (C_HOTEL);


            CREATE TABLE JORNADA (
                   C_JORNADA            VARCHAR(3) NOT NULL,
                   D_FECHA_JORNADA      DATE
            );

            CREATE UNIQUE INDEX XPKJORNADA ON JORNADA
            (
                   C_JORNADA
            );


            ALTER TABLE JORNADA
                   ADD PRIMARY KEY (C_JORNADA);


            CREATE TABLE JUGADOR (
                   C_JUGADOR            VARCHAR(3) NOT NULL,
                   Q_NIVEL              INTEGER DEFAULT 5
                                               CHECK (Q_NIVEL BETWEEN 1 AND 12)
            );

            CREATE UNIQUE INDEX XPKJUGADOR ON JUGADOR
            (
                   C_JUGADOR
            );


            ALTER TABLE JUGADOR
                   ADD PRIMARY KEY (C_JUGADOR);


            CREATE TABLE MEDIO_COMUNICACION (
                   C_MEDIO              VARCHAR(3) NOT NULL,
                   N_MEDIO              VARCHAR(120)
            );

            CREATE UNIQUE INDEX XPKMEDIO_COMUNICACION ON MEDIO_COMUNICACION
            (
                   C_MEDIO
            );


            ALTER TABLE MEDIO_COMUNICACION
                   ADD PRIMARY KEY (C_MEDIO);


            CREATE TABLE MOVIMIENTO (
                   NUM_ORDEN              INTEGER NOT NULL,
                   NUM_PARTIDA            VARCHAR(3) NOT NULL,
                   N_FICHA              VARCHAR(20),
                   T_POS_INICIAL        VARCHAR(20),
                   T_POS_FINAL          VARCHAR(20),
                   T_COMENTARIO         VARCHAR(20)
            );

            CREATE UNIQUE INDEX XPKMOVIMIENTO ON MOVIMIENTO
            (
                   NUM_ORDEN,
                   NUM_PARTIDA
            );

            CREATE INDEX XIF12MOVIMIENTO ON MOVIMIENTO
            (
                   NUM_PARTIDA
            );


            ALTER TABLE MOVIMIENTO
                   ADD PRIMARY KEY (NUM_ORDEN, NUM_PARTIDA);


            CREATE TABLE PAIS (
                   C_PAIS               VARCHAR(2) NOT NULL,
                   N_PAIS               VARCHAR(20),
                   N_FEDERACION         VARCHAR(120),
                   Q_CLUBS_AJEDREZ      INTEGER
                                               CHECK (Q_CLUBS_AJEDREZ >= 0)
            );

            CREATE UNIQUE INDEX XPKPAIS ON PAIS
            (
                   C_PAIS
            );


            ALTER TABLE PAIS
                   ADD PRIMARY KEY (C_PAIS);


            CREATE TABLE PARTICIPANTE (
                   C_ASOCIADO           VARCHAR(3) NOT NULL,
                   C_PAIS               VARCHAR(2) NOT NULL,
                   N_NOMBRE             VARCHAR(120),
                   T_DIRECCION          VARCHAR(250),
                   D_FECHA_NAC          DATE
            );

            CREATE UNIQUE INDEX XPKPARTICIPANTE ON PARTICIPANTE
            (
                   C_ASOCIADO
            );

            CREATE INDEX XIF4PARTICIPANTE ON PARTICIPANTE
            (
                   C_PAIS
            );


            ALTER TABLE PARTICIPANTE
                   ADD PRIMARY KEY (C_ASOCIADO);


            CREATE TABLE PARTICIPANTE_HOTEL (
                   C_ASOCIADO           VARCHAR(3) NOT NULL,
                   C_HOTEL              VARCHAR(3) NOT NULL,
                   D_INICIO             DATE NOT NULL,
                   D_FIN                DATE
            );

            CREATE UNIQUE INDEX XPKPARTICIPANTE_HOTEL ON PARTICIPANTE_HOTEL
            (
                   C_ASOCIADO,
                   C_HOTEL,
                   D_INICIO
            );

            CREATE INDEX XIF6PARTICIPANTE_HOTEL ON PARTICIPANTE_HOTEL
            (
                   C_ASOCIADO
            );

            CREATE INDEX XIF7PARTICIPANTE_HOTEL ON PARTICIPANTE_HOTEL
            (
                   C_HOTEL
            );


            ALTER TABLE PARTICIPANTE_HOTEL
                   ADD PRIMARY KEY (C_ASOCIADO, C_HOTEL, D_INICIO);


            CREATE TABLE PARTIDA (
                   NUM_PARTIDA            VARCHAR(3) NOT NULL,
                   C_HOTEL              VARCHAR(3) NOT NULL,
                   N_SALA               VARCHAR(120) NOT NULL,
                   C_ARBITRO            VARCHAR(3) NOT NULL,
                   C_JUGADOR2           VARCHAR(3) NOT NULL,
                   C_JORNADA            VARCHAR(3) NOT NULL,
                   C_JUGADOR1           VARCHAR(3) NOT NULL,
                   N_COLOR_J1           VARCHAR(50),
                   N_COLOR_J2           VARCHAR(50),
                   Q_ENTRADAS           INTEGER
            );

            CREATE UNIQUE INDEX XPKPARTIDA ON PARTIDA
            (
                   NUM_PARTIDA
            );

            CREATE INDEX XIF10PARTIDA ON PARTIDA
            (
                   C_JUGADOR1
            );

            CREATE INDEX XIF11PARTIDA ON PARTIDA
            (
                   C_ARBITRO
            );

            CREATE INDEX XIF17PARTIDA ON PARTIDA
            (
                   C_HOTEL,
                   N_SALA
            );

            CREATE INDEX XIF8PARTIDA ON PARTIDA
            (
                   C_JORNADA
            );

            CREATE INDEX XIF9PARTIDA ON PARTIDA
            (
                   C_JUGADOR2
            );


            ALTER TABLE PARTIDA
                   ADD PRIMARY KEY (NUM_PARTIDA);


            CREATE TABLE SALA (
                   C_HOTEL              VARCHAR(3) NOT NULL,
                   N_SALA               VARCHAR(120) NOT NULL,
                   Q_CAPACIDAD          INTEGER
            );

            CREATE UNIQUE INDEX XPKSALA ON SALA
            (
                   C_HOTEL,
                   N_SALA
            );

            CREATE INDEX XIF13SALA ON SALA
            (
                   
            C_HOTEL
            );


            ALTER TABLE SALA
                   ADD PRIMARY KEY (C_HOTEL, N_SALA);


            CREATE TABLE SALA_MEDIO_COMUNICACION (
                   C_HOTEL              VARCHAR(3) NOT NULL,
                   N_SALA               VARCHAR(120) NOT NULL,
                   C_MEDIO              VARCHAR(3) NOT NULL
            );

            CREATE UNIQUE INDEX XPKSALA_MEDIO_COMUNICACION ON SALA_MEDIO_COMUNICACION
            (
                   C_HOTEL,
                   N_SALA,
                   C_MEDIO
            );

            CREATE INDEX XIF15SALA_MEDIO_COMUNICACION ON SALA_MEDIO_COMUNICACION
            (
                   C_HOTEL,
                   N_SALA
            );

            CREATE INDEX XIF16SALA_MEDIO_COMUNICACION ON SALA_MEDIO_COMUNICACION
            (
                   C_MEDIO
            );


            ALTER TABLE SALA_MEDIO_COMUNICACION
                   ADD PRIMARY KEY (C_HOTEL, N_SALA, C_MEDIO);


            ALTER TABLE ARBITRO
                   ADD FOREIGN KEY (C_ARBITRO)
                                         REFERENCES PARTICIPANTE
                                         ON DELETE CASCADE
                                         ON UPDATE CASCADE;


            ALTER TABLE JUGADOR
                   ADD FOREIGN KEY (C_JUGADOR)
                                         REFERENCES PARTICIPANTE
                                         ON DELETE CASCADE
                                         ON UPDATE CASCADE;


            ALTER TABLE MOVIMIENTO
                   ADD FOREIGN KEY (NUM_PARTIDA)
                                         REFERENCES PARTIDA
                                         ON DELETE RESTRICT
                                         ON UPDATE RESTRICT;


            ALTER TABLE PARTICIPANTE
                   ADD FOREIGN KEY (C_PAIS)
                                         REFERENCES PAIS
                                         ON DELETE RESTRICT
                                         ON UPDATE RESTRICT;


            ALTER TABLE PARTICIPANTE_HOTEL
                   ADD FOREIGN KEY (C_HOTEL)
                                         REFERENCES HOTEL
                                         ON DELETE RESTRICT
                                         ON UPDATE RESTRICT;


            ALTER TABLE PARTICIPANTE_HOTEL
                   ADD FOREIGN KEY (C_ASOCIADO)
                                         REFERENCES PARTICIPANTE
                                         ON DELETE RESTRICT
                                         ON UPDATE RESTRICT;


            ALTER TABLE PARTIDA
                   ADD FOREIGN KEY (C_HOTEL, N_SALA)
                                         REFERENCES SALA
                                         ON DELETE RESTRICT
                                         ON UPDATE RESTRICT;


            ALTER TABLE PARTIDA
                   ADD FOREIGN KEY (C_ARBITRO)
                                         REFERENCES ARBITRO
                                         ON DELETE RESTRICT
                                         ON UPDATE RESTRICT;


            ALTER TABLE PARTIDA
                   ADD FOREIGN KEY (C_JUGADOR1)
                                         REFERENCES JUGADOR
                                         ON DELETE RESTRICT
                                         ON UPDATE RESTRICT;


            ALTER TABLE PARTIDA
                   ADD FOREIGN KEY (C_JUGADOR2)
                                         REFERENCES JUGADOR
                                         ON DELETE RESTRICT
                                         ON UPDATE RESTRICT;


            ALTER TABLE PARTIDA
                   ADD FOREIGN KEY (C_JORNADA)
                                         REFERENCES JORNADA
                                         ON DELETE RESTRICT
                                         ON UPDATE RESTRICT;


            ALTER TABLE SALA
                   ADD FOREIGN KEY (C_HOTEL)
                                         REFERENCES HOTEL
                                         ON DELETE RESTRICT
                                         ON UPDATE RESTRICT;


            ALTER TABLE SALA_MEDIO_COMUNICACION
                   ADD FOREIGN KEY (C_MEDIO)
                                         REFERENCES MEDIO_COMUNICACION
                                         ON DELETE RESTRICT
                                         ON UPDATE RESTRICT;


            ALTER TABLE SALA_MEDIO_COMUNICACION
                   ADD FOREIGN KEY (C_HOTEL, N_SALA)
                                         REFERENCES SALA
                                         ON DELETE RESTRICT
                                         ON UPDATE RESTRICT;
            • Ingreso de datos
              Insertar datos a la tabla Equipo


                Insertar datos a la tabla Campeonato

                Insertar datos a la tabla Estadio


                Insertar datos a la tabla JugadorxEquipoxCampeonato



                Insertar datos a la tabla Jugador



                Insertar datos a la tabla jugadorxPartido

                Insertar datos a la tabla Partido


            • Consultas realizadas
             Extraer todos los datos de la tabla Jugador

            Extraer todos los datos de la tabla Equipo


            Extraer todos los datos de la tabla Campeonato



            Extraer todos los datos de la tabla JugadorxEquipoxCampeonato

            Extraer todos los datos de los jugadores que se llamen Jorge



            Extraer todos los datos de los equipos y campeonatos en los que jugo Jorge

            Extraer todos los datos de la tabla JugadorxEquipo


            Extraer todos los datos de la tabla Partido


            Extraer todos los datos de la tabla Estadio



            Extraer todos los datos de la tabla JugadorxPartido



            Extraer todos los datos de los equipos, partidos y si fue goleador o no de un jugador



            Extraer todos los datos de los jugadores que fueron goleadores



            4. PostgreSQL

            • Codigo
            CREATE TABLE CAMPEONATO (
            C_CAMPEONATO CHAR(3) NOT NULL,
            N_CAMPENATO VARCHAR(220),
            Q_PARTIDOS INTEGER
            );

            CREATE UNIQUE INDEX XPKCAMPEONATO ON CAMPEONATO
            (
            C_CAMPEONATO
            );

            ALTER TABLE CAMPEONATO
            ADD PRIMARY KEY (C_CAMPEONATO);

            CREATE TABLE EQUIPO (
            C_EQUIPO CHAR(2) NOT NULL,
             N_EQUIPO VARCHAR(220)
            );

            CREATE UNIQUE INDEX XPKEQUIPO ON EQUIPO
            (C_EQUIPO
            );

            ALTER TABLE EQUIPO
            ADD PRIMARY KEY (C_EQUIPO);

            CREATE TABLE ESTADIO (
            C_ESTADIO CHAR(3) NOT NULL,
            N_ESTADIO VARCHAR(220)
            );

            CREATE UNIQUE INDEX XPKESTADIO ON ESTADIO
            (
            C_ESTADIO
            );

            ALTER TABLE ESTADIO
            ADD PRIMARY KEY (C_ESTADIO);

            CREATE TABLE JUG_X_EQ_X_CAMP (C_JUGADOR CHAR(3) NOT NULL,
             C_CAMPEONATO CHAR(3) NOT NULL,
             C_EQUIPO CHAR(2) NOT NULL
            );

            CREATE UNIQUE INDEX XPKJUG_X_EQ_X_CAMP ON JUG_X_EQ_X_CAMP
            (
             C_JUGADOR,C_CAMPEONATO
            );

            CREATE INDEX XIF11JUG_X_EQ_X_CAMP ON JUG_X_EQ_X_CAMP
            (C_JUGADOR
            );

            CREATE INDEX XIF6JUG_X_EQ_X_CAMP ON JUG_X_EQ_X_CAMP
            (C_CAMPEONATO
            );

            CREATE INDEX XIF7JUG_X_EQ_X_CAMP ON JUG_X_EQ_X_CAMP
            (
            C_EQUIPO
            );

            ALTER TABLE JUG_X_EQ_X_CAMP
            ADD PRIMARY KEY (C_JUGADOR, C_CAMPEONATO);

            CREATE TABLE JUGADOR (
            C_JUGADOR CHAR(3) NOT NULL, N_JUGADOR VARCHAR(220), D_NACIMIENTO DATE
            );

            CREATE UNIQUE INDEX XPKJUGADOR ON JUGADOR
            (C_JUGADOR
            );

            ALTER TABLE JUGADOR
            ADD PRIMARY KEY (C_JUGADOR);

            CREATE TABLE JUGADOR_X_PARTIDO (C_JUGADOR CHAR(3) NOT NULL, NRO_PARTIDO INTEGER NOT NULL, N_POSICION VARCHAR(220),
            NRO_CAMISETA INTEGER, F_EXPULSADO CHAR(1), F_AMONESTADO CHAR(1), F_GOLEADOR CHAR(1)
            );

            CREATE UNIQUE INDEX XPKJUGADOR_X_PARTIDO ON JUGADOR_X_PARTIDO
            (
            C_JUGADOR,
             NRO_PARTIDO
            );

            CREATE INDEX XIF12JUGADOR_X_PARTIDO ON JUGADOR_X_PARTIDO
            (
            C_JUGADOR
            );

            CREATE INDEX XIF13JUGADOR_X_PARTIDO ON JUGADOR_X_PARTIDO
            (NRO_PARTIDO
            );

            ALTER TABLE JUGADOR_X_PARTIDO
            ADD PRIMARY KEY (C_JUGADOR, NRO_PARTIDO);

            CREATE TABLE PARTIDO (NRO_PARTIDO INTEGER NOT NULL, C_ESTADIO CHAR(3) NOT NULL, C_EQUIPO_2 CHAR(2) NOT NULL,
            C_CAMPEONATO CHAR(3) NOT NULL, C_EQUIPO_1 CHAR(2) NOT NULL,
             D_PARTIDO DATE, N_JUEZ_LINEA2 VARCHAR(220), N_JUEZ_LINEA1 VARCHAR(250), Q_GOLES_E1 INTEGER, Q_GOLES_E2 INTEGER, N_ARBITRO VARCHAR(220),
             C_RESULTADO VARCHAR(20)
            );

            CREATE UNIQUE INDEX XPKPARTIDO ON PARTIDO
            (
            NRO_PARTIDO
            );

            CREATE INDEX XIF1PARTIDO ON PARTIDO
            (C_CAMPEONATO
            );

            CREATE INDEX XIF2PARTIDO ON PARTIDO
            (
            C_EQUIPO_2
            );

            CREATE INDEX XIF3PARTIDO ON PARTIDO
            (
            C_EQUIPO_1
            );

            CREATE INDEX XIF4PARTIDO ON PARTIDO
            (C_ESTADIO
            );

            ALTER TABLE PARTIDO
            ADD PRIMARY KEY (NRO_PARTIDO);

            ALTER TABLE JUG_X_EQ_X_CAMP
            ADD FOREIGN KEY (C_JUGADOR)
                REFERENCES JUGADOR
                ON DELETE RESTRICT
                ON UPDATE RESTRICT;

            ALTER TABLE JUG_X_EQ_X_CAMP
            ADD FOREIGN KEY (C_EQUIPO)
               REFERENCES EQUIPO
               ON DELETE RESTRICT ON UPDATE RESTRICT;

            ALTER TABLE JUG_X_EQ_X_CAMP
            ADD FOREIGN KEY (C_CAMPEONATO)
               REFERENCES CAMPEONATO
               ON DELETE RESTRICT ON UPDATE RESTRICT;

            ALTER TABLE JUGADOR_X_PARTIDO
            ADD FOREIGN KEY (NRO_PARTIDO)
               REFERENCES PARTIDO
               ON DELETE RESTRICT ON UPDATE RESTRICT;

            ALTER TABLE JUGADOR_X_PARTIDO
            ADD FOREIGN KEY (C_JUGADOR)
                REFERENCES JUGADOR ON DELETE RESTRICT
                ON UPDATE RESTRICT;

            ALTER TABLE PARTIDO
            ADD FOREIGN KEY (C_ESTADIO)
                REFERENCES ESTADIO
                ON DELETE RESTRICT ON UPDATE RESTRICT;

            ALTER TABLE PARTIDO
            ADD FOREIGN KEY (C_EQUIPO_1)
               REFERENCES EQUIPO
               ON DELETE RESTRICT ON UPDATE RESTRICT;

            ALTER TABLE PARTIDO
            ADD FOREIGN KEY (C_EQUIPO_2)
                REFERENCES EQUIPO
               ON DELETE RESTRICT
               ON UPDATE RESTRICT;

            ALTER TABLE PARTIDO
            ADD FOREIGN KEY (C_CAMPEONATO)
                REFERENCES CAMPEONATO ON DELETE RESTRICT ON UPDATE RESTRICT;
            • Ingreso de datos
            Insertar equipos

            INSERT INTO EQUIPO VALUES
            ('E1', 'ALIANZA LIMA'),
            ('E2', 'UNIVERSITARIO'),
            ('E3', 'SPORT ANCASH'),
            ('E4', 'CRISTAL'),
            ('E5', 'BOYS');

            Insertar campeonatos

            INSERT INTO CAMPEONATO VALUES
            ('A11','APERTURA 2011', 32),
            ('A10','APERTURA 2010', 12),
            ('C11','CLAUSURA 2011', 28),
            ('C10','CLAUSURA 2010', 24);



            Insertar jugadores

            INSERT INTO JUGADOR(C_JUGADOR, N_JUGADOR)
            VALUES
            ('J01','WALDIR SAENZ'),('J02','JOSE LUIS CARRANZA'),
            ('J03','Roberto Palacios'),('J04','Héctor Chumpitaz'),
            ('J05','Jorge Soto'),('J06','Juan Jayo'),
            ('J07','Nolberto Solano'),('J08','Rubén Díaz'),
            ('J09','Juan Reynoso'),('J10','Percy Olivares'),
            ('J11','José Velásquez'),('J12','Teófilo Cubillas'),
            ('J13','Teodoro Fernández'),('J14','Franco Navarro'),
            ('J15','Hugo Sotil'),('J16','Oswaldo Ramírez'),
            ('J17','Pedro Pablo León'),('J18','Óscar Gómez Sánchez'),
            ('J19','Jorge Alcalde'),('J20','Claudio Pizarro');


            Insertar datos en la tabla JugadorxEquipoxPartido

            INSERT INTO JUG_EQ_CAMP VALUES
            ('J01','A10','E1'),('J02','A10','E1'),('J03','A10','E1'),('J04','A10','E1'),
            ('J05','A10','E1'),('J07','A10','E2'),('J08','A10','E2'),('J09','A10','E2'),
            ('J10','A10','E2'),('J11','A10','E2'),('J06','A10','E3'),('J12','A10','E3'),
            ('J13','A10','E3'),('J14','A10','E3'),('J15','A10','E3'),('J16','A10','E4'),
            ('J17','A10','E4'),('J18','A10','E4'),('J19','A10','E5'),('J20','A10','E5'),
            ('J01','C10','E5'),('J02','C10','E5'),('J03','C10','E5'),('J04','C10','E5'),
            ('J05','C10','E5'),('J07','C10','E3'),('J08','C10','E3'),('J09','C10','E3'),
            ('J10','C10','E3'),('J11','C10','E3'),('J06','C10','E2'),('J12','C10','E2'),
            ('J13','C10','E2'),('J14','C10','E2'),('J15','C10','E2'),('J16','C10','E1'),
            ('J17','C10','E1'),('J18','C10','E1'),('J19','C10','E1'),('J20','C10','E1');




            Insertar estadios
            INSERT INTO ESTADIO VALUES
            ('ES1','ESTADIO MONUMENTAL'),
            ('ES2','ESTADIO NACIONAL'),
            ('ES3','ESTADIO SAN GUSTIN'),
            ('ES4','ESTADIO GARCILASO DE LA VEGA'),
            ('ES5','ESTADIO ALIANZA LIMA');




            Insertar partidos

            INSERT INTO PARTIDO VALUES
            (1, 'ES1', 'E1','E2', 'A10', '2010/01/20',
            'Albán Ynga,Edgard', 'Ávila Minchola,Julio César', 1, 2,
            'López Cruz,Raúl Eduardo', 'GA GANADOR'),
            (2, 'ES2', 'E4', 'E3','A10',  '2010/01/20',
            'Albán', 'Ávila', 2, 2, 'López', 'EM EMPATE'),
            (3, 'ES3', 'E1', 'E3', 'A10', '2010/03/20',
            'Albán', 'Ávila', 2, 3, 'López', 'GA GANADOR'),
            (4, 'ES1', 'E2','E5', 'A10',  '2010/02/20',
            'Albán', 'Ávila', 3, 2, 'López', 'GA GANADOR');



            Insertar datos en la tabla JugadorxEquipoINSERT INTO JUG_PARTIDO VALUES
            ('J01', 1, 'DELANTERO'     ,10, 'N', 'S', 'S'),
            ('J02', 1, 'DEFENSA'       , 5, 'N', 'N', 'N'),
            ('J03', 1, 'MEDIO CAMPISTA', 8, 'S', 'N', 'N'),
            ('J04', 1, 'ARQUERO'       , 1, 'N', 'N', 'N'),
            ('J05', 1, 'VOLANTE'       , 6, 'N', 'S', 'N'),
            ('J07', 1, 'DELANTERO'     ,12, 'N', 'S', 'N'),
            ('J08', 1, 'DEFENSA'       , 7, 'S', 'N', 'N'),
            ('J09', 1, 'MEDIO CAMPISTA', 9, 'S', 'N', 'N'),
            ('J10', 1, 'ARQUERO'       , 1, 'N', 'N', 'N'),
            ('J11', 1, 'VOLANTE'       ,11, 'N', 'S', 'N'),
            ('J17', 2, 'DELANTERO'     ,10, 'N', 'S', 'S'),
            ('J18', 2, 'DEFENSA'       , 5, 'N', 'N', 'N'),
            ('J16', 2, 'MEDIO CAMPISTA', 8, 'S', 'N', 'N'),
            ('J06', 2, 'ARQUERO'       , 1, 'N', 'N', 'N'),
            ('J12', 2, 'VOLANTE'       , 6, 'N', 'S', 'N'),
            ('J13', 2, 'DELANTERO'     ,12, 'N', 'S', 'N'),
            ('J15', 2, 'DEFENSA'       , 7, 'S', 'N', 'N'),
            ('J14', 2, 'MEDIO CAMPISTA', 9, 'S', 'N', 'N');