Machete MySQL(Cheatsheet) level 1
Tags: sql
Published: 2020-08-26 20:16:42



¡Hola!👋, se me ocurrió empezar a postear machetes(Cheatsheet) sobre diferentes cosas que los devs necesitamos tener a mano, sobre todo para repasar conceptos olvidados.

Así que acá va el de MySQL:
CONSULTAS CON SELECT

```sql
SELECT * FROM  usuarios; 
```
- Devuelve todos los registros de una tabla, en este caso la tabla es usuarios.

```sql
SELECT nombre FROM usuarios; 
```
- Devuelve el nombre(columna) de los usuarios registrados en la tabla usuarios.

```sql
SELECT nombre, correo FROM usuarios;
```
- Devuelve nombre y correo(columnas) de la tabla usuarios.

CONSULTAS CON WHERE

```sql
SELECT publicaciones FROM usuarios WHERE id = 20;
```
- Devuelve las publicaciones del usuario que tiene el id 20

 ```sql
SELECT correo, direccion FROM usuarios where id = 1;
```
- Devuelve el correo electrónico y la dirección del usuario con id 1

```sql
SELECT publicaciones FROM usuarios WHERE nombre = 'Nahuel'
```
- Devuelve todas las publicaciones del usuario con el nombre Nahuel.

ORDENAR REGISTROS - ORDER BY

```sql
SELECT clases, idUsuario FROM facultad ORDER BY(idUsuario);
```
- Devuelve las clases a las que está inscripto el usuario ordenado por id(En el caso de que sea string ORDER BY lo ordena por posición alfabética)

```sql
SELECT clases, idUsuario from facultad ORDER BY(idUsuario)DESC;
```

- Devuelve las clases a la que está inscripto el usuario ordenado por id de forma descendiente(DESC)

```sql
SELECT clases, idUsuario from facultad ORDER BY(idUsuario) ASC;
```

- Devuelve las clases a la que está inscirpto el usuario ordenado por id de forma ascendente(ASC), este es el valor por default en la que ordena ORDER BY los registros, en el caso de que usemos ORDER BY con una columna que contiene strings se va a ordenar alfabéticamente(Descendente y/o Ascendente)

AGRUPAR CON GROUP BY

GROUP BY como su nombre lo indica nos sirve para agrupar filas que tienen los mismos valores, en términos simples nos permite "resumir los datos de una consulta", por ejemplo tenemos una tabla que tiene datos repetidos:

```sql
+---------------------+
| facultad            |
+---------------------+
| Ciencias Economicas |
| Veterinaria         |
| Leyes               |
| Ciencias exactas    |
| Informatica         |
| Medicina            |
| Arquitectura        |
| Ingenieria          |
| Ingenieria          |
| Ciencias exactas    |
| Ciencias sociales   |
+---------------------+
```
pero queremos saber las facultades que hay en la universidad

```sql
SELECT facultad FROM facultades GROUP BY facultad;
```

RESULTADO:

```sql
+---------------------+
| facultad            |
+---------------------+
| Ciencias Economicas |
| Veterinaria         |
| Leyes               |
| Ciencias exactas    |
| Informatica         |
| Medicina            |
| Arquitectura        |
| Ingenieria          |
| Ciencias sociales   |
+---------------------+
```
Otro ejemplo de uso es, tenemos usuarios registrados en el sistema y queremos saber cuantos son, pero también saber cuantas hombres, mujeres, y sexo indefinido hay, la tabla es la siguiente:

```sql
+----------+------------+
| nombre   | sexo       |
+----------+------------+
| Nahuel   | Hombre     |
| Catalina | Mujer      |
| Sabrina  | Mujer      |
| Alberto  | Hombre     |
| Brian    | Indefinido |
| Carla    | Indefinido |
| Sofia    | Indefinido |
| Brandon  | Indefinido |
+----------+------------+
```

así que podríamos definir el problema en partes mas pequeñas:

    Contar los usuarios, ¿Dónde? En la tabla usuarios
    Saber cuantos hombres, mujeres y sexo indefinido existen

```sql
SELECT sexo, count(*) CANTIDAD from usuarios2 GROUP BY sexo;
```

RESULTADO:

```sql
+------------+----------+
| sexo       | CANTIDAD |
+------------+----------+
| Hombre     |        2 |
| Mujer      |        2 |
| Indefinido |        4 |
+------------+----------+
```
FUNCIONES DE AGREGADO

COUNT: Cuenta y devuelve el numero total de un campo seleccionado, de ejemplo tenemos una tabla con números:

```sql
+--------+
| numero |
+--------+
|     10 |
|     30 |
|      6 |
|      2 |
|      1 |
|    200 |
|     50 |
|     90 |
|     10 |
|      4 |
|     18 |
+--------+
```

y queremos saber cuantos números contiene:

```sql
SELECT COUNT(numero) FROM numeros;
```

RESULTADO:

```sql
+---------------+
| COUNT(numero) |
+---------------+
|            11 |
+---------------+
```

también podemos asignarle un nombre al resultado que esperamos

```sql
SELECT COUNT(numero) numeros_totales FROM numeros;
```

```sql
+-----------------+
| numeros_totales |
+-----------------+
|              11 |
+-----------------+
```

MIN: Devuelve el número mas chico de un campo(solo campos numéricos)

```sql
SELECT MIN(numero) numero_mas_chico FROM numeros;
```

RESULTADO:

```sql
+------------------+
| numero_mas_chico |
+------------------+
|                1 |
+------------------+
```

MAX: Devuelve el número más grande de un campo(solo campos numéricos)

```sql
SELECT MAX(numero) numero_mas_grande FROM numeros;
```

RESULTADO:

```sql
+-------------------+
| numero_mas_grande |
+-------------------+
|               200 |
+-------------------+
```
AVG: Devuelve un valor promedio de un campo(solo campos numéricos)

```sql
SELECT AVG(numero) numero_promedio FROM numeros;
```

RESULTADO:

```sql
+-----------------+
| numero_promedio |
+-----------------+
|         38.2727 |
+-----------------+
```

SUM: Suma los valores de un campo(solo campos numéricos)

```sql
SELECT SUM(numero) numeros_sumados FROM numeros;
```

RESULTADO:

```sql
+-----------------+
| numeros_sumados |
+-----------------+
|             421 |
+-----------------+
```