laboratorio de SQL: consulta de tabla - avanzado
¿Crear?tabla?Departamento
( IDDep?int?primaria?key, NombreDep?varchar(20)?NOT?NULL
);
¿Crear?tabla?Estudiante?
(StuID?char(10)?constraint?pkStuID?primary?key constraint?chkStuID?check(StuID?like?' [A,B,Z][0-9][0-9][ 0-9][0-9][0-9][0-9]'), StuName?varchar(20)?not?null , StuAge?int?restricción?chkStuAge?check(StuAge?entre?y?100), StuSex?char(2)?constraint?chkStuSex?check(StuSex?in('masculino','femenino')) restricción?defStuSex? ¿Stugrade?float?constraint?chkStugrade?check(Stugrade?entre?0?y?100)?DepID?int?constraint?fkDepID?foreign?key?references?Department(DepID),
);
¿Crear?
¿Restringir la clave principal de pkStuCourse (StuID, CourseID)? CourseID)? ¿Puntuación?float?constraint?chkScore?check(Puntuación?entre?0?y?100)
); --P:
--Escribe la siguiente declaración de consulta
--. -1. Mostrar los campos de identificación del estudiante, nombre, número de departamento y nombre del departamento del Departamento de Ciencias de la Computación.
SELECCIONAR?SS.STUID,?SS.STUNAME,?DD.DEPID,?DD.DEPNAME DE?ESTUDIANTE?SS,?DEPARTAMENTO?DD DONDE?SS.DEPID?=?DD.DEPID p>
AND?DD.DEPNAME?=?Departamento de Ciencias de la Computación';
-2. Muestra los nombres, títulos de los cursos y calificaciones de los estudiantes del Departamento de Ciencias de la Computación.
SELECCIONE?SS.STUNAME,?CC.COURSENAME,?SSCC.SCORE FROM?STUDENT?SS,?DEPARTAMENTO?DD,?SC?SSCC,?CURSO?CC DONDE?SS.DEPID?=? DD.DEPID
Y?SS.STUID?=?SSCC.STUID
Y?SSCC.COURSEID?=?CC.COURSEID
Y?DD. DEPNAME?=?Departamento de Ciencias de la Computación';
--3. Haga coincidir la tabla de estudiantes y la tabla de departamento como la tabla principal. Cuando hay estudiantes que pertenecen al departamento correspondiente, se mostrará el nombre del departamento, el número de estudiante y el nombre del estudiante del departamento; si no hay estudiantes en un departamento, se mostrará una entrada vacía que contiene el nombre del departamento, el número de estudiante y el nombre del estudiante; se mostrará.
SELECCIONAR?DD.DEPNAME,?SS.STUID,?SS.STUNAME FROM?DEPARTMENT?DD,?STUDENT?SS --Unirse a la izquierda WHERE?DD.DEPID?=?SS.DEPID( );
- -4. Utilice una subconsulta para encontrar los nombres de los estudiantes en la misma ciudad que "Tom".
SELECT?SS.STUNAME FROM?STUDENT?SS WHERE?SS.STUCITY?=?(SELECT?STUCITY?FROM?STUDENT?WHERE?STUNAME?=?" Tom");
--5. Utilice subconsulta para buscar los nombres de los estudiantes que han tomado el curso "Base de datos".
SELECCIONAR?STUNAME DE?ESTUDIANTE DONDE?ESTUDIO?EN
(SELECCIONAR?ESTUDIO DE?SC?SSCC DONDE?SSCC.CURSEID?=
(SELECCIONAR ?COURSEID?DROM?COURSE?WHERE?COURSENAME?=?' Database'));
--6. /p>
SELECCIONAR ?DD.DEPID, ?DD.DEPNOMBRE DE?DEPARTAMENTO ?DD, ?ESTUDIANTE ?ST DONDE ?DD.DEPID?=?ST.DEPID GRUPO?POR?ST.DEPID
HAVING?AVG (ST.STUGRADE)?(SELECT?AVG(SS.STUGRADE)?FROM?STUDENT?SS);
--Consulta el número y número de estudiantes que obtuvieron calificaciones no inferiores a. 80 puntos en cualquier curso Nombre.
SELECT?SS.STUID,?SS.STUNAME FROM?STUDENT?SS ¿DÓNDE?SS.STUID?NOT?IN
(SELECT?SSCC.STUID?FROM?SC?SSCC ?WHERE?SSCC. SCORE?lt;?80);
--8. Consultar el nombre del estudiante con mayor puntaje en el curso "Principios de Bases de Datos"
SELECT? SS1.STUNAME DE?ESTUDIANTE?SS1,?SC?SSCC1,?CURSO?CC1 ¿DÓNDE?SS1.STUID?=?SSCC1.STUID
Y?SSCC1.COURSEID?=?CC1.COURSEID
AND ?CC1.COURSENAME?=?Principio de base de datos'
AND?SSCC1.SCORE?=?(SELECT?MAX(SSCC.SCORE)
FROM?SC? SSCC,?CURSO?CC
donde ?SSCC.COURSEID?=?CC.COURSEID y ?CC.COURSENAME?=?PRINCIPIOS DE BASE DE DATOS'
GRUPO?POR?SSCC.COURSEID) ;
--9.Establezca las calificaciones de todos los estudiantes en el Departamento de Ciencias de la Computación en 0.
ACTUALIZAR?SC?SSCC1
SET?SSCC1.SCORE ?=?0 ¿DÓNDE?SSCC1 .STUID?STUID(SELECCIONAR?SS.STUID DE?ESTUDIANTE?SS,?DEPARTAMENTO?DD
DÓNDE?SS.DEPID?=?DD.DEPID Y?DD.DEPNAME ?=?Departamento de Informática');
-10. Consulta a todos los estudiantes que no son "Departamento de Informática" y son menores de la edad mínima del "Departamento de Informática".
SELECCIONAR?ST.* DE?ESTUDIANTE?ST,?DEPARTAMENTO?DE DONDE?ST.DEPID?=?DE.DEPID
Y?DD.DEPNOMBRE?lt;gt; ?Departamento de Informática'
AND?ST.STUID?lt;gt;?(SELECT?MIN(SS.STUAGE) FROM?STUDENT?SS,?DEPARTMENT?DD
DÓNDE ?SS.DEPID?=?DD.DEPID AND?DD.DEPNAME?=?Departamento de Informática');
A ver si es tan agotador como quieres