16.6.11

LENGUAJE SQL(1) DLL & DML [SGBD]

Unidad 3: Lenguaje SQL (I). DDL y DML

http://es.scribd.com/fullscreen/2892924?access_key=key-1yxqdcrvwxz08skzzp5x

Guía de SQL




Para las consultas SQL indicadas, describir a que corresponde el resultado interpretando el modelo (indicar si la consulta es válida sintacticamente, en caso contrario resolverla).


  1. . Select nombre, salario, cargo

From empleado

Where salario >= all (select salario

From empleado)


Es una consulta que genera el sueldo de todos los empleados que reciben un sueldo mayor o igual, al mayor de los sueldos



  1. Select numempleado, nombre, apellido, numOficina

From empleado

Where numempleado not in (select numempleado

From propiedad)


Muestra todos empleados que no tienen propiedad



  1. select numoficina, count(*)

from empleado inner join oficina using (numoficina)

group by numoficina

having count (*) >3

Muestra Cuantos empleados hay en cada ofician que tenga tres o más empleados. El inner join es innecesario


  1. Update Empleado

Set salario = salario*1,2

having cargo = 'Asistente'


La consulta es erronea, lo correcto sería así:


Update Empleado

Set salario = salario*1.2

where cargo = 'Asistente'

Aumenta el salario de los empleados en un 20% de los que son 'Asistente'


Desarrollar las consultas que se indican a continuación


  1. Listar las mujeres, cuyo apellido comience con B y administren al menos una propiedad, mostrando nombre, apellido y salario.


select e.nombre, e.apellido, e.salario

from propiedad p, empleado e

where e.apellido like 'B%' and e.sexo = 'F' and e.numempleado = p.numempleado


  1. Listar las mujeres, cuyo salario sea mayor al de algún hombre, mostrando nombre, apellido y salario.


select nombre, apellido, salario

from empleado

where sexo = 'F' and salario>(select min(salario)

from empleado

where sexo = 'M')



  1. Listar los empleados que tienen el mismo nombre, indicando nombre y el numEmpleado.



select nombre, numempleado

from empleado

where nombre in (select nombre

from empleado

group by nombre

having count(nombre)>1)



  1. Listar todas las propiedades que han sido visitadas durante el mes de junio de 2007.


select *

from visita

where fecha like '%06/07%'



  1. Determinar los registros duplicados de la tabla propietarios, es decir que tengan el mismo nombre y el mismo apellido.


select *

from propietario

where nombre in (select nombre

from propietario

group by nombre

having count(nombre)>1) and apellido in (select apellido

from propietario

group by apellido

having count(apellido)>1)