Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INSERT INTO Jugador(idJugador, nombre, app, apm, fecnac, cel, email, idEquipo)
VALUES (102,'ROSARIO', 'ROSAS', 'ROMERO', '19/08/1995', '811222092',
'rosario@gmail.com',11);
--Operadores de Comparaci�n
/*
> Mayor que
>= Mayor 0 igual que
< Menor que
<= Menor o igual que
= Igua que
!= Diferente que
*/
--Traer todos los datos de los jugadores que su equipo es mayor a 10
SELECT *
FROM Jugador
WHERE Jugador.idEquipo > 10;
--Traer todos los datos de los jugadores que su equipo es mayor o igual 10
SELECT *
FROM Jugador
WHERE Jugador.idEquipo >= 10;
--Traer todos los datos de los jugaores que nacieron antes de 1996.
SELECT *
FROM Jugador
WHERE Jugador.fecNac < '1/1/1996';
--Traer todos los datos de los arbitros que su folio es menor o igual a 3
SELECT *
FROM Arbitro
WHERE Arbitro.idArbitro <= 3;
SELECT Jugador.*
FROM Jugador
WHERE Jugador.idEquipo != 8;
select *
from jugador
where not idequipo = 9 and not idequipo = 11;
--Mandar el nombre, app y apm, as� como la jornada, juego y los goles de todos los
juegos del torneo 1.
SELECT j.nombre, j.app, j.apm, ju.idJornada, g.idJuego, g.goles
FROM Jugador j, Juego ju, Gol g
WHERE j.idJugador = g.idJugador AND
ju.idJuego = g.idJuego AND
ju.idJornada < 200;
--Actualiza el uniforme del equipo TERCERAS ya que no es del TECOS sino de TOROS
NEZA.
UPDATE Equipo
SET Equipo.uniforme = 'TOROS NEZA'
WHERE Equipo.nombre = 'TERCERAS';
--Mandar el nombre del jugador concatenado, as� como la jornada, juego y los goles
--de todos los jugos del torneo 1 donde hayan anotado 1, 3 o 5 goles nada m�s.
SELECT j.nombre || ' ' || j.app || ' ' || j.apm AS "Nombre Completo",
ju.idJornada,
g.idJuego,
g.goles
FROM Jugador j, Juego ju, Gol g
WHERE j.idJugador = g.idJugador AND
ju.idJuego = g.idJuego AND
ju.idJornada < 200 AND
g.goles IN (1,3,5);
--Obtener la fecha de nacimiento de los jugadores separados por dia, mes y a�o.
--TO_CHAR(campoFecha,'DD'): Devuelve un caract�r que representa el d�a (del mes)
del argumento DATE especificado.
--TO_CHAR(campoFecha,'MM'): Devuelve un caract�r que representa la parte del mes de
la fecha DATE especificada.
--TO_CHAR(campoFecha,'YYYY)': Devuelve un caract�r que representa la parte del a�o
del par�metro DATE especificado.
--Mandar #Jugadador, Nombre concatendao, d�a, mes y a�o.
SELECT j.idJugador,
j.nombre || ' ' || j.app || ' ' || j.apm AS "Nombre Completo",
TO_CHAR(j.fecNac,'DD') AS Dia,
TO_CHAR(j.fecNac,'MM') AS Mes,
TO_CHAR(j.fecNac,'YYYY') AS A�o
FROM Jugador j
ORDER BY A�o ASC, Mes ASC, Dia ASC;
SELECT MAX(column_name)
FROM table_name
WHERE condition;
*/
--Selecciona el equipo con la clave mas baja
SELECT MIN(idEquipo) AS "Clave de Equipo M�nima"
FROM Equipo;
--UNION
/*
Combina los resultados de dos o m�s consultas "select" en un �nico resultado.
Se usan cuando los datos que se quieren obtener pertenecen a distintas tablas
y no se puede acceder a ellos con una sola consulta.
Es necesario que las tablas referenciadas tengan tipos de datos similares,
la misma cantidad de campos y
el mismo orden de campos en la lista de selecci�n de cada consulta.
*/
--Obt�n los puntos que lleve el equipo Mayas en el torneo 2.
SELECT SUM(ju.puntos1) AS Puntos
FROM Equipo e1, Juego ju
WHERE e1.idEquipo = ju.idEquipo1 AND
e1.nombre = 'MAYAS' AND
ju.idJornada BETWEEN 201 AND 299
UNION
SELECT SUM(ju.puntos2) AS Puntos
FROM Equipo e2, Juego ju
WHERE e2.idEquipo = ju.idEquipo2 AND
e2.nombre = 'MAYAS' AND
ju.idJornada BETWEEN 201 AND 299
;
SELECT *
FROM Arbitro
ORDER BY Arbitro.idArbitro;
SELECT DISTINCT(j.idArbitro),
a.nombre || ' ' || a.app || ' ' || a.apm AS Arbitro
FROM Arbitro a, Juego j
WHERE j.idArbitro = a.idArbitro
ORDER BY j.idArbitro;
DELETE
FROM Arbitro a
WHERE a.idArbitro IN (5,6);
--LIKE
--Se usa sobre todo con textos, permite obtener registros cuyo
--valor en un campo cumpla una condici�n textual.
/*
% Una serie cualquiera de caracteres
_ Un car�cter cualquiera
*/
--Manda los arbitros (nombre, app, apm) que su apellido materno empiece con gu
--Ordenar por apellido materno DESC
SELECT a.nombre, a.app, apm
FROM Arbitro a
WHERE a.apm LIKE 'GU%'
ORDER BY a.apm DESC;
--Manda los arbitros (nombre, app, apm) que su apellido paterno no empiece con G
--Ordenar por apellido paterno ASC
SELECT a.nombre, a.app, apm
FROM Arbitro a
WHERE a.app NOT LIKE 'G%'
ORDER BY a.app;
--Elimina el Equipo 11
DELETE FROM Equipo WHERE Equipo.idEquipo = 11;
--Vistas
/*
Una vista es una tabla l�gica basada en una tabla u otra vista.
No contiene datos en s� misma, pero es como una ventana a trav�s de la cual se
pueden ver o cambiar los datos de las tablas.
Podemos representar con ellas subconjuntos l�gicos o combinaciones de datos.
Las tablas sobre las cuales se basa una vista se llaman tablas base.
Se almacenan en el Diccionario de Datos, USER_VIEWS.
SELECT *
FROM torneo1;
SELECT *
FROM torneo2;
--Se desea tener un reporte para tener el contacto de todos los capitanes
-- de cada equipo. Se ocupa la clave del equipo, nombre del equipo, nombre
--del capit�n (nombre, app, apm),email y celular.
--Solo de los equipos activos.
--Haz una vista que se llame capitan
CREATE VIEW capitan
AS
SELECT e.idEquipo AS Equipo,
e.nombre AS NomEquipo,
j.nombre AS Nombre,
j.app,
j.apm,
j.email,
j.cel
FROM Jugador j, Equipo e
WHERE j.idJugador = e.capitan;
SELECT *
FROM Capitan;
--GROUP BY: Crea grupo de datos, por lo tanto se pueden usar funciones de grupo
--(tambi�n llamadas funciones de agregado) para devolver informaci�n resumida
--para cada grupo.
--Nota:
/*
Si se incluye una funci�n de grupo en una cl�usula SELECT, no se puede seleccionar
resultados individuales a menos que la columna
aparezca en la cl�usula GROUP BY.
No se pueden usar alias en GROUP BY.
Por defecto, tras un GROUP BY, las filas se ordenan de forma ascendente
*/
--Traer nombre de equipo y cuantos jugadores tiene cada equipo.
--Ordenas de forma descendente por n�mero de jugadores.
SELECT e.nombre, COUNT(j.idJugador) AS Jugadores
FROM Jugador j, Equipo e
WHERE j.idEquipo = e.idEquipo
GROUP BY e.nombre
ORDER BY Jugadores DESC;
--Traer el promedio de goles por partido cada jugador que anot� goles en el torneo
1.
--Mandar nombre completo del jugado y promedio de goles.
--Ordenar ascendente por app.
SELECT j.nombre || ' ' || j.app || ' ' || j.apm as Nombre,
ROUND(AVG(go.goles),0) as Goles
FROM Gol go, Jugador j, Torneo1 t1
WHERE j.idJugador = go.idJugador AND go.idJuego = t1.idJuego
GROUP BY j.nombre, j.app, j.apm
ORDER BY j.app;
--STORE PROCEDURES
/*
Un procedimiento almacenado (stored procedure en ingl�s) es un programa
(o procedimiento) almacenado f�sicamente en una base de datos.
La ventaja de un procedimiento almacenado es que al ser ejecutado, en respuesta
a una petici�n de usuario, es ejecutado directamente en el motor de bases de datos,
EXECUTE spHola;
EXECUTE spAgregarArbitro(1,'LEONARDO','TERAN',
'SILVA','lteran@gmail.com','8111234567','8182838485');
EXECUTE spAgregarArbitro(11,'LEONARDO','TERAN',
'SILVA','lteran@gmail.com','8111234567','8182838485');
EXECUTE spActualizarArbitro(13,'LEONARDO','RIVERA',
'SILVA','lrivera@gmail.com','8111234567','82838485');
EXECUTE spActualizarArbitro(11,'LEONARDO','RIVERA',
'SILVA','lrivera@gmail.com','8111234567','82838485');
EXECUTE spEliminarArbitro(12);
EXECUTE spEliminarArbitro(11);
EXECUTE spAgregarEquipo(12,'FANTASMAS','NECAXA','01/04/2019','N',92);
--spActualizarEquipo
CREATE OR REPLACE PROCEDURE spActualizarEquipo
(
pidEquipo IN Equipo.idEquipo%TYPE,
pnombre IN Equipo.nombre%TYPE,
puniforme IN Equipo.uniforme%TYPE,
pfecreg IN Equipo.fecreg%TYPE,
pactivo IN Equipo.activo%TYPE,
pcapitan IN Equipo.capitan%TYPE
)
IS
vtotal number;
BEGIN
vtotal := 0;
SELECT COUNT(e.idEquipo) INTO vtotal FROM Equipo e WHERE e.idEquipo = pidEquipo;
IF vtotal = 0 THEN
DBMS_OUTPUT.PUT_LINE('No existe un n�mero de equipo con la clave enviada');
ELSE
UPDATE Equipo
SET nombre = pnombre, uniforme = puniforme, fecreg = pfecreg, activo = pactivo,
capitan = pcapitan
WHERE idEquipo = pidEquipo;
END IF;
END;
EXECUTE spActualizarEquipo(12,'PODEROSOS','MEXICO','01/04/2019','S',92);
EXECUTE spEliminarEquipo(12);
--spBuscarEquipo
CREATE OR REPLACE PROCEDURE spBuscarEquipo
(
pidEquipo IN Number,
pEquipo OUT SYS_REFCURSOR
)
AS
BEGIN
OPEN pEquipo FOR
SELECT e.*
FROM Equipo e WHERE e.idEquipo = pidEquipo;
END;