Vous êtes sur la page 1sur 135

SQL

Esquema de HR

Descripcin de Tablas

Recuperacin de datos mediante


la instruccin SQL SELECT
Esquema Bsico

Sintaxis:
Select .- Identifica los columnas que se van a desplegar.
From.- identifica la tabla que contiene los campos.
Column/expression.- Selecciona los nombres de las
comunas o expresiones.
DISTINCT.- Suprime duplicados.
Alias.- da un nombre diferente a la columna
seleccionada

Seleccin de todos los


Campos

Seleccin de columnas

Utilizando Operaciones
matemticas

Operador Precedente

Usando Alias

Registros Duplicados

Limitacin de las filas


del Select

Sintaxis:
Where.- Restringe la consulta para filas que
cumplen una condicin.
Logical Expression.- Esta definida por nombres de
columnas, constantes y operador de comparacin.
En donde se especifica una combinacin de una o
ms expresiones y Operadores booleanos que
retornan un valor verdadero, falso o desconocido

Limitacin de las filas


del Select

Operadores de
comparacin
Sintaxis:
Where expr operador valor

Comparacin de Valores

Operador Between

Operador In

Operador Like
Like se usa para Buscar valores dentro
de una cadena de caracteres

Usando la condicin NULL

Definicin de condiciones usando


los operadores lgicos

Utilizando el Operador
NOT
El Operador NOT se puede utilizar
tambin con otros operadores SQL,
tales como: BETWEEN, LIKE, Y NULL.
Ejemplo:

Reglas de Precedencia o
orden

Usted puede utilizar perentheses para


anular reglas de precedencia.

Reglas de Precedencia

La primera condicin es que el Job_id es


AD_PRES y el salario es mayor que $ 15.000
La segunda condicin es job_id es SA_REP

Reglas de Precedencia

Reglas de Precedencia

La primera condicin ejecutada es job_id es 'AD_PRES ' OR


'SA_REP.
La segunda condicin es que el salario>15,000.

Utilizando la clausula
order by

Test

Preguntas
Conjunto de Operaciones para obtener
una determinada informacin de la
base de datos.
R: Consultas
En el Modelo E-R adjetivo que define
una caracterstica de una entidad.
R: atributo

Test
Conjunto de Normas que establecen
limitaciones del modelo. Lo que el
modelo no puede hacer.
R: Restricciones

Test

Test

Restriccin de datos en
consultas bsicas de SQL

Restriccin de datos
Limitar las filas recuperadas por una
consulta:
La clusula WHERE
1.- Los operadores de comparacin: =,
<=,
BETWEEN, IN, LIKE.
2.- Utilizando las Condiciones lgicas
AND, OR y
NOT

Restriccin de datos
Limitar filas utilizando una seleccin:

recuperar todos los empleados


en el departamento 90

Restriccin de datos
Restringir las filas recuperadas
utilizando la clusula Where:

Donde:
Where.-Restringe la consulta a las filas que cumplen una
condicin.
logical expression.- Compuesta de nombres de columna,
constantes y un operador de comparacin. Especifica una
combinacin de una o ms expresiones y operadores
booleanos y devuelve un valor de Verdad.

Restriccin de datos

Restriccin de datos

Tambin puede utilizar el operador BETWEEN en valores


de carcter:

Ordenar de datos
Ordenar filas utilizando la clusula
ORDER BY:

Ordenar de datos
Clasificar en orden descendente

Clasificacin por alias de columna

Ordenar de datos
Clasificacin por usar posicin numrica
de la columna

La clasificacin por varias columnas

Funciones

Restriccin de datos

Utilizando Funciones
Las funciones :
1.- Reciben argumentos y devolver un
valor
2.- Retorna un resultado por fila
3.- Puede modificar el tipo de datos
4.- Acepta argumentos que pueden ser
una columna o una expresin
5.- Se pueden anidar o combinar.

Funciones Consultas SQL

Funciones de carcter

Funciones de carcter

Funciones de carcter

Funciones numricas

Funciones numricas

Funciones numricas

Funciones numricas

Funciones

Funciones
Select Sum(total) As suma_pedidos
From pedidos
Select Sum(cantidad) as
suma_articulos
From pedidos Where id_articulo=6

Funciones generales

Funciones de la
jerarquizacin
Funciones de una sola fila se pueden
anidar a cualquier nivel.
Las funciones anidadas se evalan
desde el nivel ms profundo al nivel
menos profundo.

Funciones de la
jerarquizacin

Result1 = SUBSTR (LAST_NAME, 1, 8)

Uso de las funciones del


Grupo
Las funciones de grupo operan en
conjuntos de filas para dar un
resultado por grupo.

Tipos de Funciones de Grupo

Tipos de Funciones de Grupo

Sintaxis

Funciones de Grupo
Puede utilizar AVG y SUM para los
datos numricos.

Uso de la funcin COUNT


COUNT(*) devuelve el nmero de filas
de una tabla:

COUNT (expr) devuelve el nmero de


filas, valores no nulos de la expr

Formatos de la funcin
COUNT
La funcin COUNT tiene tres formatos:

COUNT (*) devuelve el nmero de filas de una tabla que satisfacen los criterios de
la sentencia SELECT, incluidas las filas duplicadas y las filas que contienen valores
nulos en cualquiera de las columnas. Si una clusula WHERE se incluye en la
instruccin SELECT, COUNT (*) devuelve el nmero de filas que satisfacen la
condicin en la clusula WHERE.
Por el contrario, COUNT (expr) devuelve el nmero de valores no nulos que estn
en la columna identificada por expr.
COUNT (DISTINCT expr) devuelve el nmero de valores nicos, no nulos que estn
en la columna identificada por expr

Formatos de la funcin
COUNT

Funciones de Grupo y Valores


Nulos
Las funciones de grupo ignoran los
valores nulos en la columna:

Creacin de grupos de datos

Creacin de grupos de datos


Puede dividir las filas de una tabla en
grupos ms pequeos mediante el uso
de la
Clusula GROUP BY.

Creacin de grupos de datos


Todas las columnas de la lista SELECT
que no estn en funciones de grupo
deben estar en la clusula GROUP BY

Creacin de grupos de datos


La columna GROUP BY no tiene que
estar en la lista SELECT

Creacin de grupos de datos


Puede utilizar la funcin de grupo en
la clusula ORDER BY?
SELECT department_id, AVG(salary)
FROM
employees
GROUP BY department_id
ORDER BY AVG(salary);

Consultas ilegales en el uso


de funciones de grupo
Cualquier columna o expresin en la
lista SELECT que no es una funcin de
agregacin deben estar en la clusula
GROUP BY

Consultas ilegales en el uso


de funciones de grupo
No se puede utilizar la clusula WHERE
para restringir grupos.
Se utiliza la clusula HAVING para
restringir grupos

Consultas ilegales en el uso


de funciones de grupo
No se puede utilizar la clusula WHERE
para restringir grupos.
Se utiliza la clusula HAVING para
restringir grupos

Restringir los resultados del


grupo con la Clusula HAVING

Restringir los resultados del


grupo con la Clusula HAVING

Funciones anidamiento de
grupos

Uso de sub consultas

Sintaxis

Puede colocar la sub consulta en una serie de clusulas


SQL, incluyendo las siguientes:
Clausula WHERE
Clausula HAVING
Clausula FROM
En la sintaxis:
operador incluye una condicin de comparacin como: >,
=, o IN.

Ejemplo

Uso de las funciones del Grupo


en una sub consulta

Clausula HAVING con sub


consultas

Uso de operadores SET

Uso de operadores SET

Uso de operadores SET


Operadores de conjunto se combinan los
resultados de dos o ms consultas de
componentes en un solo resultado. Las
consultas que contienen los operadores
establecidos se llaman consultas compuestas.

Operador UNION
1.- El nmero de columnas seleccionadas deben ser el
mismo en las consultas.
2.- Los tipos de datos de las columnas deben estar en el
mismo grupo de tipos de datos (como numrico o de
caracteres).
3.- Los nombres de las columnas no tienen que ser
idnticos.

Operador UNION

El operador UNION elimina los registros duplicados. Si los


registros que se producen en los empleados y las tablas
JOB_HISTORY son idnticos, los registros se muestran slo
una vez. Observe en el resultado que se muestra en la
diapositiva que el registro del empleado con la
EMPLOYEE_ID 200 aparece dos veces porque la JOB_ID es
diferente en cada fila

Operador UNION
Considere el siguiente ejemplo

Operador UNION
Considere el siguiente ejemplo

Operador UNION ALL


Considere el siguiente ejemplo

Operador INTERSECT
Utilice el operador INTERSECT para devolver todas las filas
que son comunes a varias consultas.
Directrices
El nmero de columnas y los tipos de datos de las
columnas que se seleccionan por las sentencias SELECT
en las consultas deben ser idnticos en todas las
sentencias SELECT utilizadas en la consulta. Los nombres
de las columnas, sin embargo, no tienen por qu ser
idnticos.
Invertir el orden de las tablas intersecadas no altera el
resultado.
INTERSECT no ignora los valores NULL

Operador INTERSECT

Operador MINUS
Muestra los employees ids de los empleados que no han
cambiado sus puestos de trabajo ni una sola vez

El uso de la clusula ORDER BY


en operaciones de conjunto
La clusula ORDER BY slo puede aparecer una vez al final
de la consulta compuesta.
La clusula ORDER BY slo reconoce las columnas de la
primera consulta SELECT.
Por defecto, la primera columna de la primera consulta
SELECT se utiliza para ordenar la salida en un orden
ascendente

Manipulacin de Datos

Sentencia INSERT
Aade nuevas filas a una tabla. El
formato de la sentencia INSERT es:

Con esta sentencia, nicamente podemos


insertar una fila en un instante de tiempo.

Sentencia INSERT
1.- Inserta una nueva fila que contiene los
valores para cada columna.
2.- Los valores de la lista deben estar en el
orden
predeterminado de las columnas de la
tabla.
3.- De forma opcional, se puede definir la lista
de
las columnas a insertar en la clusula
INSERT.

Sentencia INSERT

Copiar filas de otra tabla

Actualizar datos en una tabla


Update modifica los valores existentes en
una tabla. Sintaxis:

Actualiza ms de una fila si fuese


necesario.

Actualizar datos en una tabla

Actualizar columnas con una sub consulta

Actualice el job_id, salario del empleado


113 con job_id y salario del employee
205

Eliminar filas de una tabla

Test

Test
Usando una sub consulta es
equivalente a realizar dos consultas
secuenciales y usando el resultado de
la primera consulta como los valores
de bsqueda en la segunda consulta
a.- Verdadero
b.- Falso

Test
Usando una sub consulta es
equivalente a realizar dos consultas
secuenciales y usando el resultado de
la primera consulta como los valores
de bsqueda en la segunda consulta
a.- Verdadero
b.- Falso

Test
Tres de los siguientes operadores son
vlidos para la condicin WHERE.
Cules?
a.- >=
b.- !=
d.- IS LIKE
c.- IN BETWEEN
e.- <>

Test
Tres de los siguientes operadores son
vlidos para la condicin WHERE.
Cules?
a.- >=
b.- !=
d.- IS LIKE
c.- IN BETWEEN
e.- <>

Test
Identificar las dos consultas SELECT
que se ejecutan con xito

Test
Identificar las dos consultas SELECT
que se ejecutan con xito

Test
Qu hay de malo con esta
afirmacin?

Test
Cul ser el resultado de la siguiente
funcin?
ROUND(144.24,-1)
a. - 140 b. - 144
c. - 150 d. 100

Test
Cul ser el resultado de la siguiente
funcin?
ROUND(144.24,-1)
a. - 140 b. - 144
c. - 150 d. 100

Test
Cul de las siguientes afirmaciones es
verdadera con respecto a la funcin COUNT?
a.- COUNT (*) Cuenta los valores duplicados y los valores
NULL en columnas de cualquier tipo de datos.
b.- La Funcin COUNT no puede trabajar con tipos de
datos de fecha.
c.- COUNT (DISTINCT job_id) devuelve el nmero de filas
con exclusin de las filas que contienen los duplicados y
los valores NULL en la columna job_id.
d.- Una instruccin SELECT utilizando la funcin CONTAR
con una palabra clave DISTINCT y no se puede incluir una
clusula WHERE.

Test
Cul de las siguientes afirmaciones es
verdadera con respecto a la funcin COUNT?
a.- COUNT (*) Cuenta los valores duplicados y los valores
NULL en columnas de cualquier tipo de datos.
b.- La Funcin COUNT no puede trabajar con tipos de
datos de fecha.
c.- COUNT (DISTINCT job_id) devuelve el nmero de filas
con exclusin de las filas que contienen los duplicados y
los valores NULL en la columna job_id.
d.- Una instruccin SELECT utilizando la funcin CONTAR
con una palabra clave DISTINCT y no se puede incluir una
clusula WHERE.

Test
Cul de las siguientes opciones muestra relaciones correctas
entre el criterio de bsqueda de datos, dentro de una base de
datos utilizando la clusula WHERE y la funcin de cada uno?

1.- 1C, 2A, 3B


2.- 1A, 2B, 3D
3.- 1D, 2A, 3C
4.- 1B, 2C,3A

Test
Cul de las siguientes opciones muestra relaciones correctas
entre el criterio de bsqueda de datos, dentro de una base de
datos utilizando la clusula WHERE y la funcin de cada uno?

1.- 1C, 2A, 3B


2.- 1A, 2B, 3D
3.- 1D, 2A, 3C
4.- 1B, 2C,3A

Test
Identifique dos conceptos para las funciones de
grupo y la clusula GROUP BY.
a.Ud. no puede utilizar un alias de columna en la clusula

GROUP BY.
b.La columna GROUP BY debe estar en la clusula SELECT.
c.Mediante el uso de una clusula WHERE, puede excluir

filas antes de dividirse en grupos.


d.La clusula GROUP BY asegura el orden de los registros

y/o conjunto de resultados.


e.Si incluye una funcin de grupo en una clusula SELECT,

debe incluir una clusula GROUP BY.

Test
Identifique dos conceptos para las funciones de
grupo y la clusula GROUP BY.
a.Ud. no puede utilizar un alias de columna en la clusula

GROUP BY.
b.La columna GROUP BY debe estar en la clusula SELECT.
c.Mediante el uso de una clusula WHERE, puede excluir

filas antes de dividirse en grupos.


d.La clusula GROUP BY asegura el orden de los registros

y/o conjunto de resultados.


e.Si incluye una funcin de grupo en una clusula SELECT,

debe incluir una clusula GROUP BY.

Test
Suponiendo que los apellidos de los empleados
estn bien registrados en la tabla, cul ser el
resultado de la siguiente consulta?
SELECT employee_id, last_name, department_id
FROM employees WHERE last_name = 'smith';
a.- Puede mostrar los detalles del empleado con el
ltimo nombre que Smith
b.-Le dar ningn resultado.
c.-Le dar los detalles para que el empleado tenga el
apellido que 'Smith' en minsculas.
d.-Le dar los detalles del empleado tenga el
apellido 'Smith'.

Test
Suponiendo que los apellidos de los empleados
estn bien registrados en la tabla, cul ser el
resultado de la siguiente consulta?
SELECT employee_id, last_name, department_id
FROM employees WHERE last_name = 'smith';
a.- Puede mostrar los detalles del empleado con el
ltimo nombre que Smith
b.-Le dar ningn resultado.
c.-Le dar los detalles para que el empleado tenga el
apellido que 'Smith' en minsculas.
d.-Le dar los detalles del empleado tenga el
apellido 'Smith'.

Test
Usted necesita saber cuales son los empleados
que pertenecen al departamento de 'Jessica
Butcher' y tienen sueldo mayor que el salario de
'Jessica Butcher', ella tiene un ID de empleado
nmero 40. Cul de las siguientes consultas va
a funcionar?
a.- SELECT first_name, last_name
FROM employees
WHERE last_name = 'Butcher'
AND first_name = 'Jessica'
AND salary > 10000;

Test
Usted necesita saber cuales son los empleados
que pertenecen al departamento de 'Jessica
Butcher' y tienen sueldo mayor que el salario de
'Jessica Butcher', ella tiene un ID de empleado
nmero 40. Cul de las siguientes consultas va
a funcionar?
b.- SELECT first_name, last_name
FROM employees
WHERE department = 100;

Test
Usted necesita saber cuales son los empleados que
pertenecen al departamento de 'Jessica Butcher' y
tienen sueldo mayor que el salario de 'Jessica
Butcher', ella tiene un ID de empleado nmero 40.
Cul de las siguientes consultas va a funcionar?
c.- SELECT first_name, last_name FROM employees
WHERE department = (SELECT department FROM employees
WHERE first_name = 'Jessica AND last_name
= 'Butcher'
AND employee_id = 40)
AND salary > (SELECT salary FROM employees
WHERE first_name = 'Jessica AND last_name = 'Butcher'
AND employee_id = 40);

Test
Identifique dos ideas de los operadores establecidos.
a. Las expresiones en las consultas SELECT deben
coincidir en nmero.
b. Los parntesis no puede ser utilizado para alterar
la secuencia de ejecucin.
c. El tipo de datos de cada columna en la segunda
consulta debe coincidir con el tipo de datos de su
columna correspondiente de la primera consulta.
d. La clusula ORDER BY slo se puede utilizar una
vez en una consulta compuesta, a menos que se
utilice el operador UNION ALL.

Test
Identifique dos ideas de los operadores establecidos.
a. Las expresiones en las consultas SELECT deben
coincidir en nmero.
b. Los parntesis no puede ser utilizado para alterar
la secuencia de ejecucin.
c. El tipo de datos de cada columna en la segunda
consulta debe coincidir con el tipo de datos de su
columna correspondiente de la primera consulta.
d. La clusula ORDER BY slo se puede utilizar una
sola vez en una consulta compuesta, a menos que
se utilice el operador UNION ALL.

Test
Dentro de base de datos, las sub consultas con
SQL permiten:
a.- Utilizar los resultados de una consulta como
parte de otra.
b.- Consultar informacin que se encuentra en
ms de tres tablas.
c.- Consultar informacin comparando campos
que tienen el mismo tipo de dato.
c.- Ejecutar las consultas de manera ms rpida

Test
Dentro de base de datos, las sub consultas con
SQL permiten:
a.- Utilizar los resultados de una consulta como
parte de otra.
b.- Consultar informacin que se encuentra en
ms de tres tablas.
c.- Consultar informacin comparando campos
que tienen el mismo tipo de dato.
c.- Ejecutar las consultas de manera ms rpida

Ejercicio 1
Listar el Apellido y el sueldo de los
empleados que no ganan entre 4000 y
15000.
Select last_name, salary
from employees
where salary not between 4000 and
15000

Ejercicio 2
Listar el apellido y el sueldo de los
empleados que pertenecen a los
departamentos 20 o 50, que ganan
entre 4000 y 15000.
Select last_name, salary
from employees
where salary between 4000 and 15000
and department_id in (20, 50)

Ejercicio 3
Listar el apellido de los empleados que
tengan un a en la segunda letra del
apellido.
Select last_name
from employees
Where last_name like _a%

Ejercicio 4
Listar el apellido y sueldo de los
empleados pertenecientes a
departamentos radicados en Seattle.
Select last_name, salary
from employees
Where department_id in (select department_id
from departments d, locations l
where d.location_id=l.location_id and
city=Seattle)

Ejercicio 5
Listar cod departamento cuya media
de salarios es inferior a 7000
(Contando solo los empleados que
ganan menos de 4000)
Select department_id, avg(salary)
from employees
Where salary < =4000
Group by department_id
Having avg(salary)<7000

Ejercicio 6
Encontrar el nombre y salario de los
empleados que ganan menos de 2000.
De este conjunto, seleccionar los que
tengan una a en el nombre.
Select *
from (select last_name, salary
from employees
where salary > 2000)
Where last_name like %a%

Ejercicio 7
Seleccionar el ID empleado, apellido y
sueldo de los empleados que ganan
ms que la media de la empresa.
Ordenar los registros por el salario
Select employee_id, last_name, salary
from employees
Where salary > (select avg(salary) from
employees)
Order by salary

Ejercicio 8
Seleccionar el ID empleado, apellido, de
todos los colegas de empleados que tengan
una u en su apellido. (Colega: persona que
trabaja en el mismo departamento.)
Select employee_id, last_name
from employees
Where department_id in (select department_id
from employees
where last_name like %u%)

Ejercicio 8
Seleccionar ID empleado, apellido, sueldo de los
colegas de empleados que tengan una u en su
apellido, y que ganen sueldos (los colegas) mayor
que la media de sueldos de la empresa.
Select employee_id, last_name, salary
from employees
Where department_id in (select department_id
from employees
where last_name like %u%)
and salary > (select avg(salary) from employees)

Creacin de Tablas
Sentencia: CREATE TABLE, su formato:

Donde la definicin de columna es:

Vous aimerez peut-être aussi