QUERY 1 =========================================
*/
Create Database Escuela
Create Table Alumnos
(
matricula char(8),
nombre char(12),
app char(12),
apm char(12),
carrera char(3),
f_nac DateTime,
sexo char(1),
)
Create Table MAT_Alumno
(
matricula char(8),
cve_mat char(4),
cve_prof char(6),
semestre numeric(2),
promedio numeric(5,2),
)
INSERT INTO Alumnos
values('10160269','HORACIO','PEREZ','RAMIREZ','ISC','25/09/1997','M')
INSERT INTO Alumnos
values('10160268','MIGUEL','DOMINGUEZ','LOPEZ','IME','14/07/1996','M')
INSERT INTO Alumnos
values('10160257','SAUL','GUTIERREZ','FLORES','IEI','12/11/1997','M')
INSERT INTO Alumnos
values('10160272','ADRIANA','SOSA','LUGO','ISC','09/01/1998','F')
INSERT INTO Alumnos
values('10160223','CRISTINA','SANCHEZ','PUENTE','IME','15/04/1997','F')
QUERY 2 =========================================
En SQL Server 2005 si se puede abrir tabla
1)
2)
3)
4)
5)
6)
7)
*/
Select *
From Alumnos
Where carrera='ISC' AND sexo='M'
Select *
From MAT_Alumno
Update MAT_Alumno
set promedio=100
where matricula='10160223'
/*
Y despus volver a ejecutar de nuevo lo siguiente para ver la tabla MAT_Alumno*/
Select *
From MAT_Alumno
/*No es necesario where en este caso*/
Alter table Alumnos
add FechaIngreso DateTime
Update Alumnos
set FechaIngreso = '23/08/2010'
Alter table MAT_Alumno
add hrs_clase Numeric(5,2)
Update MAT_Alumno
set hrs_clase = 5
where matricula = '10160269'
Update MAT_Alumno
set hrs_clase = 4
where matricula = '10160268'
Update MAT_Alumno
set hrs_clase = 8
where matricula = '10160257'
Update MAT_Alumno
set hrs_clase = 15
where matricula = '10160272'
Update MAT_Alumno
set hrs_clase = 7
where matricula = '10160223'
/*
QUERY 3 =========================================
*/
/*1) Mostrar la matricula, clave, materia y el promedio de las materias
de un alumno en particular*/
Select matricula, cve_mat, promedio
From MAT_Alumno
Where matricula = '10160269'
/*2) Crear una tabla materias que contenga la clave de la materia, descripcin,
semestre, numero de horas clase y creditos*/
Create Table materias
(
cve_mat char(4),
descripcion char(30),
semestre numeric(2),
num_horas numeric(1),
creditos numeric(5,2),
)
/*3) Agregar datos a la tabla del punto 2*/
Insert into materias
values('BADI','BASE DE DATOS I', 5, 5, 10)
Insert into materias
values('MATE','MATEMATICAS',2,4,6)
Insert into materias
values('REDE','REDES',4,6,9)
Insert into materias
values('CALC','CALCULO',1,7,4)
Insert into materias
values('CMUL','MATEMATICAS',2,4,6)
/*4) Cuantas materias lleva cursadas un Alumno X*/
Select count(matricula)
from MAT_Alumno
where matricula='10160269'
/*Le ingresare datos a la tabla MAT_Alumno para que me aparezca mas de un materia
por cada alumno*/
INSERT INTO MAT_Alumno
values('10160269','REDE','500009', 3, 100.00, 6)
INSERT INTO MAT_Alumno
values('10160268','BAD1','500021', 3, 87.42, 8)
INSERT INTO MAT_Alumno
values('10160257','MATE','500012', 5, 79.85, 7)
INSERT INTO MAT_Alumno
values('10160272','CMUL','500019', 2, 85.27, 5)
INSERT INTO MAT_Alumno
values('10160223','CALC','500017', 1, 83.39, 9)
/*4) Cuantas materias lleva cursadas un Alumno X*/
Select count(matricula)
from MAT_Alumno
where matricula='10160269'
/*El punto 4 mejorado ahora: */
Select A.nombre, A.app, A.apm, count(B.matricula)
from Alumnos A, MAT_Alumno B
where A.matricula='10160269' AND A.matricula=B.matricula
GROUP by A.nombre, A.app, A.apm
/*5) Mostrar el nombre de cada materia que ha cursado un Alumno X*/
Select B.matricula, A.descripcion
From materias A, MAT_Alumno B
Where B.matricula = '10160269' AND A.cve_mat = B.cve_mat
/*6) Agregar a la tabla materias un atributo "carrera"*/
ALTER Table materias
ADD carrera char(3)
/*
QUERY 4 =========================================
*/
/*1) Antes de utilizar ests tres lineas hacemos unos ajustes para que no nos marque
0 filas afectadas
update materias
set num_horas = 5
where semestre = 5 AND num_horas = 3
*/
Update materias
set num_horas = 3
where cve_mat = 'BADI'
Update materias
set num_horas = 3
where cve_mat = 'CMUL'
Update materias
set semestre = 5
where cve_mat = 'CMUL'
/*1) Modificar el numero de horas clase para todas aquellas materias cuyo semestre sea
igual a 5 (quinto semestre) y el numero de horas de clase sea 3 */
update materias
set num_horas = 5
where semestre = 5 AND num_horas = 3
/*2) Actualizar el atributo carrera para cada una de las materias segn a la carrera???
cve_mat???? a la que pertenece*/
/*4) Mostrar todos los alumnos de la carrera ISC cuyo promedio general sea mayor o igual
a 70.
(matricula, nombre completo y promedio general)*/
Select A.matricula, A.nombre, A.app, A.apm, AVG(B.promedio)
From Alumnos A, MAT_Alumno B
Where A.carrera = 'ISC' AND A.matricula = B.matricula
GROUP By A.matricula, A.nombre, A.app, A.apm
HAVING AVG(B.promedio) >= 70
/*5) Mostrar el nombre de la materia, la matricula, el semestre para cada uno de los
alumnos de la
carrera ISC que estn en el semestre 5*/
Select B.matricula, A.descripcion, A.semestre
FROM materias A, alumnos B
Where A.carrera = 'ISC' AND A.semestre=5 AND A.carrera = B.carrera
/*6) Agregar al ejercicio anterior el nombre del alumno*/
Select B.nombre , B.app, B.apm, B.matricula, A.descripcion, A.semestre
FROM materias A, alumnos B
Where A.carrera = 'ISC' AND A.semestre=5 AND A.carrera = B.carrera
/*7) Mostrar la matricula, cve_mat, cve_prof, nombre de la materia, crditos de los
alumnos que son
mujeres que estn en la carrera ISC*/
Select A.matricula, A.cve_mat, B.descripcion, A.cve_prof, B.creditos
FROM MAT_Alumno A, materias B, Alumnos C
Where C.sexo = 'F' AND C.carrera = 'ISC' AND C.matricula = A.matricula AND A.cve_mat
= B.cve_mat
/*
QUERY 5 =========================================
*/
/*1) Mostrar el nombre de las materias que imparte el maestro X*/
/*Antes tengo que corregir que en MAT_Alumno BAD1 sea BADI*/
Update MAT_Alumno
Set cve_mat = 'BADI'
Where cve_mat = 'BAD1'
/*Y ahora si el punto 1*/
Select B.descripcion
From MAT_Alumno A, materias B
Where A.cve_prof = '500021' AND A.cve_mat = B.cve_mat
/*La tabla mostrada despues de Ejutar las anteriores 3 lineas son repetidas porque deb de
ingresar de otra
manera los datos, o quizas las tres repeticiones nos muestra las matriculas de los alumnos
a cuales
les da clases*/
/*Antes tengo que crear la tabla Profesores con atributos de cve_prof y nombre_prof*/
Create Table Profesores
(
cve_prof char(6),
nombre_prof char(30),
)
/*Agregar datos a la tabla Profesores*/
INSERT INTO Profesores
values('500012','CARLOS GONZALEZ')
INSERT INTO Profesores
values('500009','ORLANDO ARZOLA')
INSERT INTO Profesores
values('500017','MARIA DE JESUS IBARRA')
INSERT INTO Profesores
values('500021','ABEL BAUELOS')
INSERT INTO Profesores
values('500019','ISMAEL')
INSERT INTO Profesores
values('500010','GLORIA CAMPOS')
INSERT INTO Profesores
values('500011','ALICIA')
INSERT INTO Profesores
values('500013','NANCY CHAVANA')
INSERT INTO Profesores
values('S00014','DANIEL MARTINEZ')
INSERT INTO Profesores
values('S00015','JOSE OLVERA')
INSERT INTO Profesores
values('S00016','CRISTOPHER ZAVALA')
INSERT INTO Profesores
values('S00018','JORGE HINOJOSA')
INSERT INTO Profesores
values('S00020','MIGUEL FLORES')
/*Y ahora si a hacer el punto 3*/
Select B.nombre_prof , A.descripcion
From materias A, Profesores B, MAT_Alumno C
Where B.cve_prof = C.cve_prof AND A.cve_mat = C.cve_mat
ORDER By B.nombre_prof , A.descripcion
/*Despues de ejecutar las anteriores 4 lineas se observa que hay ambiguedad de datos*/