80 - Subconsulta e insert


Problema:

Un profesor almacena las notas de sus alumnos en una tabla llamada "alumnos" (documento, nombre, nota). Tiene otra tabla llamada "aprobados" (documento,nota) en la que guarda los alumnos que han aprobado el ciclo.

Eliminamos las tablas:

 drop table alumnos;
 drop table aprobados;

Creamos las tablas:

 create table alumnos(
  documento char(8) not null,
  nombre varchar2(30),
  nota number(4,2)
   constraint CK_alumnos_nota_valores check (nota>=0 and nota <=10),
  primary key(documento)
 );

 create table aprobados(
  documento char(8) not null,
  nota number(4,2)
   constraint CK_aprobados_nota_valores check (nota>=0 and nota <=10),
  primary key(documento)
 );

Ingresamos registros en "alumnos":

 insert into alumnos values('30000000','Ana Acosta',8);
 insert into alumnos values('30111111','Betina Bustos',9);
 insert into alumnos values('30222222','Carlos Caseros',2.5); 
 insert into alumnos values('30333333','Daniel Duarte',7.7);
 insert into alumnos values('30444444','Estela Esper',3.4);

Ingresamos registros en la tabla "aprobados" seleccionando registros de la tabla "alumnos":

 insert into aprobados 
  select documento,nota
   from alumnos
   where nota>=4;

Note que no se listan los campos en los cuales se cargan los datos porque tienen el mismo nombre que los de la tabla de la cual extraemos la información.

Veamos si los registros se han cargado:

 select *from aprobados;

Ingresemos el siguiente lote de comandos en el Oracle SQL Developer:

 drop table alumnos;
 drop table aprobados;

 create table alumnos(
  documento char(8) not null,
  nombre varchar2(30),
  nota number(4,2)
   constraint CK_alumnos_nota_valores check (nota>=0 and nota <=10),
  primary key(documento)
 );

 create table aprobados(
  documento char(8) not null,
  nota number(4,2)
   constraint CK_aprobados_nota_valores check (nota>=0 and nota <=10),
  primary key(documento)
 );

 insert into alumnos values('30000000','Ana Acosta',8);
 insert into alumnos values('30111111','Betina Bustos',9);
 insert into alumnos values('30222222','Carlos Caseros',2.5); 
 insert into alumnos values('30333333','Daniel Duarte',7.7);
 insert into alumnos values('30444444','Estela Esper',3.4);

 -- Ingresamos registros en la tabla "aprobados" 
 -- seleccionando registros de la tabla "alumnos":
 insert into aprobados 
  select documento,nota
   from alumnos
   where nota>=4;

 -- Veamos si los registros se han cargado:

 select *from aprobados;

La ejecución de este lote de comandos SQL genera una salida similar a:

SQL Developer Subconsulta e insert


Retornar