0% encontró este documento útil (0 votos)
14 vistas11 páginas

SQL

El documento detalla diversas funciones y cláusulas de SQL, incluyendo cómo utilizar funciones de fecha como MONTH() y YEAR(), así como cláusulas para ordenar, filtrar y agrupar datos. También se abordan conceptos como uniones de consultas, subconsultas, y operaciones de inserción, actualización y eliminación de datos en bases de datos. Se presentan ejemplos prácticos para ilustrar el uso de cada función y cláusula en consultas SQL.

Cargado por

reditth
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
14 vistas11 páginas

SQL

El documento detalla diversas funciones y cláusulas de SQL, incluyendo cómo utilizar funciones de fecha como MONTH() y YEAR(), así como cláusulas para ordenar, filtrar y agrupar datos. También se abordan conceptos como uniones de consultas, subconsultas, y operaciones de inserción, actualización y eliminación de datos en bases de datos. Se presentan ejemplos prácticos para ilustrar el uso de cada función y cláusula en consultas SQL.

Cargado por

reditth
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 11

SQL

CURRENT_DATE() / YEAR(fecha):
SELECT e.nombre, (CURRENT_DATE() - e.contrato), YEAR(CURRENT_DATE) - e.edad
FROM empleados e

MONTH(fecha):
SELECT *
FROM pedidos
WHERE MONTH(pedidos.fechapedido) = 3

TEMA 1:
La función MONTH() devuelve el mes de una fecha
La función YEAR() devuelve el año de una fecha

SELECT nombre, MONTH(contrato), YEAR(contrato)


FROM repventas

Lista el nombre, mes y año del contrato de cada vendedor.


La función MONTH() devuelve el mes de una fecha
La función YEAR() devuelve el año de una fecha

SELECT oficina, 'tiene ventas de ', ventas


FROM oficinas

TEMA 2:

ORDER BY:
Podemos indicar la columna por la que queremos ordenar utilizando su nombre de columna
(nbcolumna) o utilizando su número de orden que ocupa en la lista de selección
(Nºcolumna).

Ejemplo:
SELECT nombre, oficina, contrato
FROM empleados
ORDER BY oficina
es equivalente a

SELECT nombre, oficina, contrato


FROM empleados
ORDER BY 2

DESC/ ASC:
Si queremos podemos alterar ese orden utilizando la cláusula DESC (DESCendente), en
este caso el orden será el inverso al ASC.

Ejemplos:
SELECT nombre, numemp, contrato
FROM empleados
ORDER BY contrato DESC

La cláusula DESC o ASC se puede indicar para cada columna y así utilizar una ordenación
distinta para cada columna.

DISTINCT / ALL:
Al incluir la cláusula DISTINCT en la SELECT, se eliminan del resultado las repeticiones de
filas. Si por el contrario queremos que aparezcan todas las filas incluidas las duplicadas,
podemos incluir la cláusula ALL o nada, ya que ALL es el valor que SQL asume por defecto.

Por ejemplo queremos saber los códigos de los directores de oficina.

SELECT dir FROM oficinas


SELECT ALL dir FROM oficinas

Lista los códigos de los directores de las oficinas. El director 108 aparece en cuatro oficinas,
por lo tanto aparecerá cuatro veces en el resultado de la consulta.

SELECT DISTINCT dir FROM oficinas

En este caso el valor 108 aparecerá una sola vez ya que le decimos que liste los distintos
valores de directores.

TOP:
La cláusula TOP permite sacar las n primeras filas de la tabla origen. No elige entre valores
iguales, si pido los 25 primeros valores pero el que hace 26 es el mismo valor que el 25,
entonces devolverá 26 registros en vez de 25 (o los que sea).
SELECT TOP 3 numemp, nombre
FROM empleado
ORDER BY contrato

TOP n PERCENT:
SELECT TOP 20 PERCENT nombre
FROM empleado
ORDER BY contrato

Lista el nombre de los empleados ordenándolos por fecha de contrato, sacando únicamente
un 20% del total de empleados. Como tenemos 10 empleados, sacará los dos primeros, si
tuviésemos 100 empleados sacaría los 20 primeros.

WHERE:
SELECT nombre
FROM empleados
WHERE oficina = 12 AND edad > 30

Lista el nombre de los empleados de la oficina 12 que tengan más de 30 años. (oficina igual
a 12 y edad mayor que 30).

SELECT numemp, nombre


FROM empleados
WHERE contrato < #01/01/1988#

Lista los empleados contratados antes del año 88 (cuya fecha de contrato sea anterior al 1
de enero de 1988).
¡¡Ojo!!, las fechas entre almohadillas # # deben estar con el formato mes,día,año aunque
tengamos definido otro formato para nuestras fechas.

BETWEEN:
Examina si el valor de la expresión está comprendido entre los dos valores definidos por
exp1 y exp2.

SELECT numemp, nombre


FROM empleados
WHERE ventas BETWEEN 100000 AND 500000
IN:
SELECT numemp, nombre, oficina
FROM empleados
WHERE oficina IN (12,14,16)

Lista los empleados de las oficinas 12, 14 y 16

OR:
SELECT numemp, nombre
FROM empleados
WHERE (oficina = 12) OR (oficina = 14) OR (oficina = 16)

IS NULL/ IS NOT NULL:


SELECT oficina, ciudad
FROM oficinas
WHERE dir IS NULL

Lista las oficinas que no tienen director.

SELECT numemp, nombre


FROM empleados
WHERE oficina IS NOT NULL

Lista los empleados asignados a alguna oficina (los que tienen un valor en la columna
oficina).

LIKE:
Se utiliza cuando queremos utilizar caracteres comodines para formar el valor con el
comparar.

SELECT numemp, nombre


FROM empleados
WHERE nombre LIKE 'Luis*'

Lista los empleados cuyo nombre empiece por Luis (Luis seguido de cero o más
caracteres).

SELECT numemp, nombre


FROM empleados
WHERE nombre LIKE '*Luis*'

Lista los empleados cuyo nombre contiene Luis, en este caso también saldría los
empleados José Luis (cero o más caracteres seguidos de LUIS y seguido de cero o más
caracteres).

SELECT numemp, nombre


FROM empleados
WHERE nombre LIKE '??a*'

Lista los empleados cuyo nombre contenga una a como tercera letra (dos caracteres, la
letra a, y cero o más caracteres.

Caracteres: ​
? o bien _ (subrayado)/P>​ ​ Un car�cter cualquiera

* o bien %​ ​ ​ ​ Cero o m�s caracteres

#​ ​ ​ ​ ​ Un d�gito cualquiera (0-9)

[listacaracteres]​ ​ ​ Un car�cter cualquiera de listacaracteres

[!listacaracteres]​ ​ ​ Un car�cter cualquiera no incluido en listacaracteres

TEMA 3:

UNION/ UNION ALL:

UNION:
Elimina duplicados: Por defecto, UNION elimina filas duplicadas en el resultado combinado.

Estructura de columnas: Las consultas deben tener el mismo número de columnas y las
columnas correspondientes deben tener tipos de datos compatibles.

SELECT columna1, columna2


FROM tabla1
UNION
SELECT columna1, columna2
FROM tabla2;
SELECT nombre FROM empleados_sucursal1
UNION
SELECT nombre FROM empleados_sucursal2;

UNION ALL:
Búsqueda más rápida. Usar si no importa que salgan consultas repetidas.

SELECT nombre FROM empleados_sucursal1


UNION ALL
SELECT nombre FROM empleados_sucursal2;

PRODUCTO CARTESIANO:
SELECT *
FROM pedidos,clientes
WHERE pedidos.clie=clientes.numclie

INNER JOIN:
Devuelve solo las filas que tienen coincidencias en ambas tablas.
Si no hay coincidencias entre las tablas, la fila no aparece en el resultado.
Pueden ser las dos la misma tabla, en este caso es obligatorio definir al menos un alias de
tabla.

SELECT columnas
FROM tabla1
INNER JOIN tabla2
ON tabla1.columna = tabla2.columna;

Se pueden definir varias condiciones de emparejamiento unidas por los operadores AND y
OR poniendo cada condición entre paréntesis. Ejemplo:

SELECT *
FROM pedidos INNER JOIN productos ON (pedidos.fab = productos.idfab) AND
(pedidos.producto = productos.idproducto)

LEFT JOIN/ RIGHT JOIN:


Devuelve todas las filas de la tabla izquierda (empleados), incluso si no hay coincidencias
en la tabla derecha (departamentos).
Si no hay coincidencias, las columnas de la tabla derecha aparecen como NULL.
SELECT e.nombre, d.departamento
FROM empleados e
LEFT JOIN departamentos d
ON e.id_empleado = d.id_empleado;

| nombre | departamento |
|------------|-------------------|
| Ana​ | Ventas |
| Luis​ | Recursos Humanos |
| Carla​ | NULL |

TEMA 4:

Consultas de Resumen:
SUM()​ ​ Suma
AVG()​ ​ Media
MIN()​ ​ Minimo
MAX()​ ​ Maximo
COUNT()​ Contador

SELECT SUM(ventas)
FROM oficinas

SELECT AVG(col1) AS media


FROM tabla1

COUNT(*) permite contar filas en vez de valores.


Si la columna no contiene ningún valor nulo, COUNT(nbcolumna) y COUNT(*) devuelven el
mismo resultado.
Mientras que si hay valores nulos en la columna, COUNT(*) cuenta también esos valores
mientras que COUNT(nb columna) no los cuenta.

Se pueden combinar varias funciones de columna en una expresión pero no se pueden


anidar funciones de columna, es decir:

SELECT (AVG(ventas) * 3) + SUM(cuota)


FROM ...

Queremos obtener el importe total de ventas de todos los empleados y el mayor objetivo de
las oficinas asignadas a los empleados:

SELECT SUM(empleados.ventas), MAX(objetivo)


FROM empleados LEFT JOIN oficinas ON empleados.oficina=oficinas.oficina
GROUP BY:
SELECT SUM(ventas)
FROM repventas
GROUP BY oficina

Se forma un grupo para cada oficina, con las filas de la oficina, y la suma se calcula sobre
las filas de cada grupo.

La consulta quedaría mejor incluyendo en la lista de selección la oficina para saber a qué
oficina corresponde la suma de ventas:

SELECT oficina,SUM(ventas)
FROM repventas
GROUP BY oficina

HAVING:
La cláusula HAVING nos permite seleccionar filas de la tabla resultante de una consulta de
resumen.

SELECT oficina
FROM empleados
GROUP BY oficina
HAVING AVG(ventas) > 500000

TEMA 5:

Subconsultas:
SELECT numemp, nombre
FROM empleados
WHERE numemp = (SELECT rep FROM pedidos WHERE clie = (SELECT numclie FROM
clientes WHERE nombre = 'Julia Antequera'))

ANY (alguno):
SELECT oficina, ciudad
FROM oficinas
WHERE objetivo > ANY (SELECT SUM(cuota) FROM empleados GROUP BY oficina)

Lista las oficinas cuyo objetivo sea superior a alguna de las sumas obtenidas.
ALL (todos):
SELECT oficina, ciudad
FROM oficinas
WHERE objetivo > ALL (SELECT SUM(cuota) FROM empleados GROUP BY oficina)

En este caso se listan las oficinas cuyo objetivo sea superior a todas las sumas.

IN:
SELECT numemp, nombre, oficina
FROM empleados
WHERE oficina IN (SELECT oficina FROM oficinas WHERE region = 'este')

Con la subconsulta se obtiene la lista de los números de oficina del este y la consulta
principal obtiene los empleados cuyo número de oficina sea uno de los números de oficina
del este.
Por lo tanto lista los empleados de las oficinas del este.

NOT IN:
SELECT oficina, ciudad
FROM oficinas
WHERE oficina NOT IN (SELECT oficina FROM empleados WHERE oficina IS NOT NULL)

EXIST:
SELECT numemp, nombre, oficina
FROM empleados
WHERE EXISTS (SELECT * FROM oficinas WHERE region = 'este' AND empleados.oficina
= oficinas.oficina)

Examina si la subconsulta produce alguna fila de resultados.


TEMA 6:

Insertar una fila INSERT INTO...VALUES:


INSERT INTO empleados VALUES (200, 'Juan López', 30, NULL, 'rep ventas', #06/23/01#,
NULL, 350000, 0)

INSERT INTO empleados (numemp,oficina, nombre, titulo,cuota, contrato, ventas)


VALUES (200, 30, 'Juan López', 'rep ventas',350000, #06/23/01#,0)

Insertar varias filas INSERT INTO...SELECT:


INSERT INTO repres SELECT numemp, oficina, nombre FROM empleados WHERE titulo =
'rep ventas'

Insertar filas en una nueva tabla SELECT ... INTO:


Esta sentencia inserta filas creando en ese momento la tabla donde se insertan las filas. Se
suele utilizar para guardar en una tabla el resultado de una SELECT.

SELECT * INTO t2 FROM t1

SELECT numclie AS codigo, nombre, direccion, telefono


INTO susclientes
FROM clientes
WHERE repclie = '103';

UPDATE:
UPDATE oficinas INNER JOIN empleados
ON oficinas.oficina = empleados.oficina
SET cuota=objetivo*0.01;

En este ejemplo queremos actualizar las cuotas de nuestros empleados de tal forma que la
cuota de un empleado sea el 1% del objetivo de su oficina.

—----------------------------------
Ejemplo: Queremos poner a cero las ventas de los empleados de la oficina 12
UPDATE empleados SET ventas = 0 WHERE oficina = 12;

Ejemplo: Queremos poner a cero el limite de credito de los clientes asignados a empleados
de la oficina 12.
UPDATE clientes SET limitecredito = 0
WHERE repclie IN (SELECT numemp FROM empleados WHERE oficina = 12);
—---------------------------------------

UPDATE oficinas SET ventas=0, objetivo=ventas;

DELETE:
DELETE *
FROM pedidos
WHERE clie IN (SELECT numclie FROM clientes WHERE nombre = 'Julian López');

TEMA 7:

TEMA 8:

También podría gustarte