Introduccion
El lenguaje SQL está muy integrado en la vida de los analistas de negocios y los requisitos para los candidatos debido a su simplicidad, conveniencia y prevalencia. Desde mi propia experiencia, puedo decir que la mayoría de las veces el SQL se usa para formar descargas, escaparates (con la posterior construcción de informes basados en estos frentes) y administración de bases de datos. Y dado que el trabajo diario del analista está inevitablemente asociado con la carga de datos y escaparates, la capacidad de escribir consultas SQL puede convertirse en un factor por el cual el candidato obtendrá una ventaja o será eliminado. La triste noticia es que no todos pueden esperar tenerlo en un banco de estudiantes. La buena noticia es que aprender SQL no es nada complicado, es rápido y la sintaxis de la consulta es simple y directa. Esto es especialmente cierto para aquellos que ya han encontrado idiomas más complejos.
Dividí el entrenamiento de SQL en tres partes. Esta parte está dedicada a la sintaxis básica, que se utiliza en el 80-90% de los casos. Las siguientes dos partes estarán dedicadas a subconsultas, Join'am y operadores especiales. El propósito de las guías es practicar rápida y prácticamente la sintaxis SQL para agregarla al arsenal de habilidades.
Practica
Se examinará una introducción a la sintaxis utilizando una base de datos abierta diseñada específicamente para la práctica de SQL. Para que su capacitación sea lo más efectiva posible, abra el siguiente enlace en una nueva pestaña e inmediatamente ejecute los ejemplos anteriores, esto le permitirá consolidar mejor el material y trabajar con la sintaxis usted mismo.
Haga clic aquíDespués de hacer clic en el enlace, puede ver el editor de consultas y la salida de datos en la parte central de la pantalla, la lista de tablas de la base de datos está en el lado derecho.
Estructura de consulta SQL
La estructura general de la solicitud es la siguiente:
SELECT (' * ; ') FROM ('; ') WHERE ('/, , city = 'Moscow'; ') GROUP BY (', ; ') HAVING ('/ ; ') ORDER BY (', ; ')
Analicemos la estructura. Para mayor comodidad, CAPS resalta el elemento de aprendizaje actual en la solicitud.
SELECCIONAR, DESDE
SELECT, FROM: elementos necesarios de la consulta que definen las columnas seleccionadas, su orden y origen de datos.
Seleccione todo (indicado como *) de la tabla Clientes:
SELECT * FROM Customers
Seleccione las columnas CustomerID, CustomerName de la tabla Clientes:
SELECT CustomerID, CustomerName FROM Customers
Donde
WHERE es un elemento de consulta opcional que se utiliza cuando necesita filtrar datos por la condición deseada. Muy a menudo, dentro del elemento where, IN / NOT IN se usa para filtrar una columna por varios valores, Y / O para filtrar una tabla por varias columnas.
Filtrado por una condición y un valor:
select * from Customers WHERE City = 'London'
Filtrado por una condición y varios valores usando IN (inclusión) o NOT IN (excepción):
select * from Customers where City IN ('London', 'Berlin')
select * from Customers where City NOT IN ('Madrid', 'Berlin','Bern')
Filtrar por varias condiciones usando AND (se cumplen todas las condiciones) u OR (se cumple al menos una condición) y varios valores:
select * from Customers where Country = 'Germany' AND City not in ('Berlin', 'Aachen') AND CustomerID > 15
select * from Customers where City in ('London', 'Berlin') OR CustomerID > 4
GRUPO POR
GROUP BY es un elemento de consulta opcional con el que puede especificar la agregación por la columna deseada (por ejemplo, si necesita averiguar cuántos clientes viven en cada ciudad).
Al usar GROUP BY es obligatorio:
- la lista de columnas utilizadas para cortar era la misma dentro de SELECT y dentro de GROUP BY,
- las funciones agregadas (SUM, AVG, COUNT, MAX, MIN) también deben especificarse dentro de SELECT con la columna a la que se aplica dicha función.
Agrupando el número de clientes por ciudad:
select City, count(CustomerID) from Customers GROUP BY City
Agrupando el número de clientes por país y ciudad:
select Country, City, count(CustomerID) from Customers GROUP BY Country, City
Agrupando las ventas por ID de producto con diferentes funciones agregadas: la cantidad de pedidos con este producto y la cantidad de piezas vendidas:
select ProductID, COUNT(OrderID), SUM(Quantity) from OrderDetails GROUP BY ProductID
Agrupación de ventas con filtrado de la tabla fuente. En este caso, la salida será una tabla con el número de clientes en ciudades alemanas:
select City, count(CustomerID) from Customers WHERE Country = 'Germany' GROUP BY City
Cambie el nombre de una columna agregada utilizando el operador AS. Por defecto, el nombre de la columna agregada es igual a la función agregada aplicada, lo que además puede no ser muy conveniente para la percepción.
select City, count(CustomerID) AS Number_of_clients from Customers group by City
Teniendo
HAVING es un elemento de consulta opcional que se encarga de filtrar a nivel de datos agrupados (de hecho, DONDE, pero solo un nivel más alto).
Al filtrar la tabla agregada con el número de clientes por ciudad, en este caso, dejamos descargando solo aquellas ciudades en las que hay al menos 5 clientes:
select City, count(CustomerID) from Customers group by City HAVING count(CustomerID) >= 5
En el caso de una columna renombrada dentro de HAVING, puede especificar tanto el recuento de construcción de agregación (CustomerID) como el nuevo nombre de columna número_de_clientes:
select City, count(CustomerID) as number_of_clients from Customers group by City HAVING number_of_clients >= 5
Una consulta de ejemplo que contiene WHERE y HAVING. En esta consulta, la tabla inicial por usuarios se filtra primero, se calcula el número de clientes por ciudad y solo aquellas ciudades permanecen donde el número de clientes es al menos 5:
select City, count(CustomerID) as number_of_clients from Customers WHERE CustomerName not in ('Around the Horn','Drachenblut Delikatessend') group by City HAVING number_of_clients >= 5
ORDENAR POR
ORDER BY es un elemento de consulta opcional que se encarga de ordenar la tabla.
Un ejemplo simple de ordenar por una columna. En esta solicitud, se realiza la clasificación por ciudad especificada por el cliente:
select * from Customers ORDER BY City
Puede ordenar por varias columnas, en este caso, la ordenación ocurre en el orden de las columnas especificadas:
select * from Customers ORDER BY Country, City
Por defecto, la ordenación es ascendente para los números y alfabéticamente para los valores de texto. Si se necesita una ordenación inversa, en la cláusula ORDER BY, después del nombre de la columna, agregue DESC:
select * from Customers order by CustomerID DESC
Clasificación inversa por una columna y clasificación predeterminada por la segunda:
select * from Customers order by Country DESC, City
Unirse
UNIR - un elemento opcional usado para unir tablas por la clave que está presente en ambas tablas. La clave está precedida por una declaración ON.
Una consulta en la que unimos las tablas Order y Customer por la clave CustomerID, y el nombre de la tabla se agrega antes de los nombres de columna de la clave a través de un punto:
select * from Orders JOIN Customers ON Orders.CustomerID = Customers.CustomerID
A menudo puede surgir una situación cuando necesita asignar una tabla con valores de otra. Dependiendo de la tarea, se pueden usar diferentes tipos de conexiones. UNIÓN INTERNA - intersección, UNIÓN DERECHA / IZQUIERDA para mapear una tabla con el conocimiento de otra,
select * from Orders join Customers on Orders.CustomerID = Customers.CustomerID where Customers.CustomerID >10
Dentro de toda la solicitud JOIN, se incrusta después del elemento from al elemento where, una solicitud de ejemplo:
Se pueden ver otros tipos de UNIONES en la maravillosa imagen a continuación:

En la siguiente parte, hablaremos más sobre los tipos JOIN y las consultas anidadas.
Si tiene alguna pregunta / sugerencia, ¡siempre solicite contactar!