SQL
OPERADORES
OPERACIONES SOBRE CONJUNTOS
Estas consultas utilizan al menos dos SELECT cuyos resultados que se pueden combinar para formar una única consulta.
Se basan en los operadores matemáticos de conjuntos (unión, intersección y diferencia).
Intersect
De la misma forma, la palabra INTERSECT permite unir dos consultas SELECT de modo que el resultado serán las filas que estén presentes en ambas consultas.
EJEMPLO: tipos y modelos de piezas que se encuentren sólo en los almacenes 1 y 2:
SELECT tipo,modelo FROM existencias WHERE n_almacen=1 INTERSECT SELECT tipo,modelo FROM existencias WHERE n_almacen=2
EXCEPT (o MINUS)
Con MINUS también se combinan dos consultas SELECT de forma que aparecerán los registros del primer SELECT que no estén presentes en el segundo.
EJEMPLO 1: ; tipos y modelos de piezas que se encuentren el almacén 1 y no en el 2
SELECT tipo,modelo FROM existencias WHERE n_almacen=1 MINUS SELECT tipo,modelo FROM existencias WHERE n_almacen=2;
EjEMPLO 2 CON EXCEPT:
SELECT nombre FROM personas EXCEPT SELECT nombre FROM empleados;
UNION
Combina los resultados de dos consultas en un solo conjunto, eliminando las filas duplicadas. Las columnas devueltas en ambas consultas deben coincidir en número y tipo de columnas
El operador UNION une los resultados de varios SELECT. Pero si hay datos duplicados en ellos, elimina los mismos.
EJEMPLO 1:
SELECT nombre FROM provincias UNION SELECT nombre FROM comunidades
EJEMPLO 2:
SELECT nif, nombre,apellido1,apellido2 FROM clientes UNION SELECT nif, nombre,apellido1,apellido2 FROM socios;
OPERADORES ARITMETICOS SQL
Operadores Comparación
Operador Description
= Equal to
> Greater than
< Less than
>= Greater than or equal to
<= Less than or equal to
<> Not equal to
OPERADORES DE COMPARACION
OPERADORES LOGICOS SQL
Operador Descripcion
ALL TRUE if all of the subquery values meet the condition
AND TRUE if all the conditions separated by AND is TRUE
ANY TRUE if any of the subquery values meet the condition
BETWEEN TRUE if the operand is within the range of comparisons
EXISTS TRUE if the subquery returns one or more records
IN TRUE if the operand is equal to one of a list of expressions
LIKE TRUE if the operand matches a pattern
NOT Displays a record if the condition(s) is NOT TRUE
OR TRUE if any of the conditions separated by OR is TRUE
SOME TRUE if any of the subquery values meet the condition
Operador Descripcion
+ Añadir
- Restar
* Multiplicar
/ Dividir
% Modulo
OPERADORES SQL BIT A BIT
Operador Descripcion
& Bitwise AND
| Bitwise OR
^ Bitwise exclusive OR
OPERADORES COMPUESTOS SQL
Operador Descripcion
+= Add equals
-= Subtract equals
*= Multiply equals
/= Divide equals
%= Modulo equals
&= Bitwise AND equals
^-= Bitwise exclusive equals
|*= Bitwise OR equals
FUNCIONES
Funciones de Agregación
Dentro del lenguaje SQL existen muchas funciones que me permiten obtener diferentes resultados en base a las necesidades que tengamos
Estas funciones permiten realizar cálculos u operaciones sobre los registros de una tabla y sobre una o varias columnas.
GROUP BY: Cuando hacemos una consulta con varias columnas y usamos funciones de agregación SQL, usamos la sentencia GROUP BY para poder recuperar el resultado de la consulta. Dentro de la sintaxis GROUP BY van a ir todas las columnas que no sean funciones de agregación SQL.
SELECT categoria, COUNT(*) AS TotalProductos FROM productos GROUP BY categoria;
SUM( ): Esta funcion me devuelve la suma de todos los valores especificados en la expresión, así mismo solo debe usarse con expresiones numéricas, caso contrario nos retornará un mensaje de error en la consulta.
SELECT SUM(ventas) AS TotalVentas FROM productos;
MIN( ): Esta función me permite obtener el mínimo valor de una expresión a evaluar.
SELECT MIN(precio) AS PrecioMinimo FROM productos;
COUNT( ): Cuenta el número de registros o valores no nulos de una columna.
SELECT COUNT(*) AS TotalRegistros FROM tabla;
MAX( ): Esta función me permite obtener el máximo valor de una expresión a evaluar
SELECT MAX(precio) AS PrecioMaximo FROM productos
AVG( ): Esta función me devuelve el valor promedio de la expresión a evaluar, hay que tener en cuenta que dicha expresión debe ser numérica, en caso contrario la consulta me devolverá un mensaje de error.
SELECT AVG(edad) AS EdadPromedio FROM usuarios;
¿Qué es?
Es un lenguaje estándar para almacenar, manipular y recuperar datos en bases de datos.
Es un lenguaje de consulta estructurado, que permite consultar, manipular y transformar datos de una base de datos relacional.
Debido a su simplicidad, las bases de datos SQL brindan almacenamiento seguro y escalable para millones de sitios web y aplicaciones móviles.
Existen muchas bases de datos SQL populares, incluidas SQLite, MySQL, Postgres, Oracle y Microsoft SQL Server. Todos ellos admiten el estándar de lenguaje SQL común
CONSULTAS A MULTIPLES TABLAS
Las consultas a múltiples tablas se utilizan para combinar información de dos o más tablas relacionadas en una sola consulta.
Ejemplo:
De los CLIENTES debemos registrar:
Nombres y Apellidos
Documento de identidad
Correo
De los PRODUCTOS tenemos que registrar:
Código
Nombre
Descripción
Valor de descuento
De las VENTAS debemos registrar:
Al cliente que se le ha hecho la venta
Fecha de la venta
Cuantas unidades y cuales productos hemos vendido
Paso 1: Análisis
Al leer el ejercicio y lo que nos están pidiendo nos damos cuenta que podemos identificar 4 tablas:
CLIENTES
PRODUCTOS
VENTAS
VENTAS_DETALLE
Paso 2
¿Cómo podemos identificar las 4 tablas?
En primer lugar, porque en el ejercicio nos están pidiendo «registrar la ventas», así que para poder guardar las ventas necesitamos crear nuestra primera tabla (VENTAS).
Adicional a eso nos piden registrar el detalle de cada una de las ventas, muy bien, para registrar el detalle de la ventas debemos crear nuestra segunda tabla (VENTAS_DETALLE), además tenemos que identificar que debemos crear nuestra primera relación entre la tabla VENTAS y VENTAS_DETALLE a través del uso de clave primaria y foránea.
Paso 3
Paso 4
Resolver mediante Consultas
Total de las ventas diarias por cliente que está generando.
Ordenadas por fecha.
Mostrar (nombres, DNI, correo) del cliente.
SELECT
VEN.FECHA AS FECHA,
CLI.NOMBRE AS NOMBRE_CLIENTE,
CLI.APELLIDO AS APELLIDO_CLIENTE,
CLI.DNI AS DNI_CLIENTE,
CLI.CORREO AS CORREO_CLIENTE,
SUM(VEN.TOTAL) AS TOTAL_VENTAS
FROM VENTAS VEN INNER JOIN CLIENTES CLI
ON (VEN.ClienteID = CLI.ClienteID)
GROUP BY VEN.Fecha, CLI.NOMBRE, CLI.APELLIDO, CLI.DNI, CLI.CORREO
ORDER BY VEN.Fecha
Análisis
Revisando la consulta que hemos escrito nos damos cuenta que usamos la función de agrupación SUM() para obtener el total de las ventas, cuando usamos funciones de agrupación debemos usar en conjunto con la cláusula GROUP BY debido a que estamos agrupando un conjunto de resultados, y además los campos que van listados junto al GROUP BY son todos los campos que están fuera de la función SUM().
Para relacionar las VENTAS realizadas con cada CLIENTE hacemos uso del INNER JOIN, por medio del campo ID de la tabla CLIENTES y el campo ClienteID de la tabla VENTAS.
Detalle de cada una de las ventas (cuantos y que productos fueron registrados en cada venta)
Consulta SQL:
ELECT
VEN.FACTURAID AS FACTURA,
PR.CODIGO AS CODIGO_PRODUCTO,
PR.NOMBRE AS NOMBRE_PRODUCTO,
DT.CANTIDAD AS CANTIDAD_PRODUCTO
FROM VENTAS VEN INNER JOIN VENTAS_DETALLE DT
ON (VEN.VentaID=DT.VentaID)
INNER JOIN PRODUCTOS PR
ON (DT.ProductoID=PR.ProductoID)
Análisis
Para realizar esta consulta usamos 2 INNER JOIN, el primero para relacionar la tabla VENTAS con la tabla VENTAS_DETALLE al crear esta relación nos aseguramos que por cada factura de la tabla VENTAS exista la misma factura en la tabla VENTAS_DETALLE.
El segundo INNER JOIN lo usamos para relacionar la tabla PRODUCTOS con la tabla VENTAS_DETALLE con esto nos aseguramos que los productos que existan en la tabla VENTAS_DETALLE tienen que existir en mi tabla principal PRODUCTOS, debido a que en esta tabla guardo la toda la información de cada producto.
INNER JOIN
Establece la unión entre 2 tablas o conjunto de resultados, donde los valores sean exactos en ambas tablas.
Subconsultas
Una subconsulta es una consulta anidada dentro de otra consulta principal. La subconsulta se ejecuta primero y su resultado se utiliza en la consulta principal para obtener un resultado más específico
Subconsultas correlacionadas
Definición: Una subconsulta correlacionada es una subconsulta que depende de la consulta principal para obtener su resultado. La subconsulta se ejecuta una vez por cada fila de la consulta principal.
Ejemplo: Mostrar el nombre de los empleados donde la comisión sea mayor a la mitad del sueldo
SELECT NOMBRE
FROM EMPLEADO
WHERE COMISION > SUELDO / 2;
SENTECIAS BASICAS
DDL:«Lenguaje de Definición de Datos» Son sentencias que nos permiten definir, alterar, modificar objetos dentro de mi base de datos.
- CREATE : Permite crear objetos dentro de la base de datos, los objetos que podemos crear los listamos a continuación:
- Procedimientos almacenados
- Tablas
- Bases de datos
- Desencadenadores
- Funciones
- Vistas, Índices entre otros.
- ALTER: Modifica la estructura de una tabla u otro objeto.
- DROP: Elimina una tabla, vista u otro objeto de la base de datos.
DML:«Lenguaje de Manipulación de Datos» Me permiten consultar, actualizar, insertar o eliminar los datos o registros de las tablas.
SELECT: Recupera datos de una tabla de base de datos.
- INSERT: Inserta un tipo de dato en el atributo de una entidad o tabla de la base de datos.
- UPDATE : Modifica registros existentes en una tabla.
- DELETE : Elimina registros de una tabla.
DCL:«Lenguaje de Control de datos» Me permite otorgar permisos a uno o mas roles para determinadas tareas, así como el control de accesos a la base de datos.
- GRANT: Usado para otorgar privilegios de acceso de usuario a la base de datos.
- REVOKE: Utilizado para retirar privilegios de acceso otorgados con el comando GRANT.
1. Otorgar el privilegio SELECT (lectura) en la tabla "clientes" a un usuario llamado "usuario1":
GRANT SELECT ON clientes TO usuario1;
2. Otorgar los privilegios INSERT (inserción) y UPDATE (actualización) en la tabla "pedidos" a un rol llamado "rol_ventas":
GRANT INSERT, UPDATE ON pedidos TO rol_ventas;
3. Revocar el privilegio SELECT en la tabla "clientes" de un usuario llamado "usuario1":
REVOKE SELECT ON clientes FROM usuario1;
4. Revocar todos los privilegios en la tabla "pedidos" de un rol llamado "rol_ventas":
REVOKE ALL PRIVILEGES ON pedidos FROM rol_ventas;
Otras sentencias basicas:
TRUNCATE: Elimina todos los registros de una tabla.
Eliminar todos los registros de la tabla "clientes"
TRUNCATE TABLE clientes;