SQL

Structured Query Language - Adrián L. G. P.


Consulta SELECT

Nos situamos en la BBDD y:

Seleccionar todas las columnas:

SELECT * FROM tabla;

Seleccionar columnas específicas:

SELECT col1, col2 FROM tabla;

Se van a mostrar en el orden seleccionado

Modificador DISTINCT

Solo devuelve las filas que sean no repetidas según todas las columnas dadas:

SELECT DISTINCT col1 FROM tabla;

Modificador AS

Alias de Columna: Muestra el título de la columna pero con otro nombre. Necesita comillas si hay espacios en blanco:

SELECT col1 AS "alias1", col2 AS "alias2" FROM tabla;

Cláusula ORDER BY

Para cambiar el orden en el que se enseña la tabla según una columna.
Si no se va a enseñar una columna se puede ordenar por ella igualmente:

SELECT * FROM tabla ORDER BY col1 ASC/DESC;

ASC - Ascendente
DESC - Descendente

Si se pone un AS en un campo, se usa el alias, no el nombre real de la columna.

Filtro WHERE

Operadores:

= - Igual a
>= - Mayor o igual que
<= - Menor o igual que
> - Mayor que
< - Menor que
<> - Distinto a (en algunos casos !=)

Enseña solo las filas que coincidan en un campo:

SELECT col1, col2 FROM tabla WHERE col1="valor";

El valor va entre comillas o no según el tipo de valor que sea como un número

Operadores Lógicos [1/2]

AND: Si se cumplen 2 o más condiciones.

SELECT * FROM tabla WHERE col1="valor" AND col2="valor";

OR: Si se cumplen una condición u otra.

SELECT * FROM tabla WHERE col1="valor" OR col2="valor";

AND y OR: Para ello se usan paréntesis.

SELECT * FROM tabla WHERE (col1="valor" OR col2="valor") AND col3="valor";

NOT: Si no es una condición.

SELECT * FROM tabla WHERE NOT col1="valor";
SELECT * FROM tabla WHERE NOT (col1="valor" AND col2="valor");

Operadores Lógicos [2/2]

LIKE: Si una columna contiene o no un valor.

SELECT * FROM tabla WHERE col1 LIKE "%valor%";

%valor% - Contener el valor.
%valor - Acabar por el valor.
valor% - Empezar por el valor.

IN: Igualdad con valores exactos.

SELECT * FROM tabla WHERE col1 IN ("valor","valor","valor");

Devuelve las filas si col1 es uno de los valores del ().

BETWEEN: Solo funciona con números. Si hay decimales, se ponene con puntos.

SELECT * FROM tabla WHERE col1 BETWEEB "valor" AND "valor2";

Consultas de UNION

Solo funciona si se recogen campos compatibles entre ambas tablas. No hace falta que tengan el mismo nombre. Si se cogen 2 o más columas y hay 2 con los mismos valores en todas, no los muestra. Para ello se usa "UNION ALL":

SELECT col1 FROM tabla UNION SELECT col1 FROM tabla2;
SELECT col1 FROM tabla UNION ALL SELECT col1 FROM tabla2;

Sub-Consultas

Puede haber subconsultras dentro de otras:

SELECT * FROM tabla1 WHERE col1 IN (SELECT col2 FROM tabla2 WHERE col3="valor");

Funciones escalares [1/2]

Se puede usar funciones dentro de otras funciones:

LCASE(): Convierte los valores a minúsculas.

SELECT LCASE(columna) FROM tabla;

CONCAT(): Concadenar varias columnas en una sola.

SELECT CONCAT(col1, " ", LCASE(col2)) FROM tabla;

+ - * /: Funciones matemáticas.

SELECT (col1 * 10) + 10 FROM tabla;

COUNT: Devuelve un único campo con la cuenta de todas las filas que cumplan una condición.

SELECT COUNT(*) FROM tabla WHERE col1="valor";

Funciones escalares [2/2]

MAX: Devuelve la fila con el máximo valor de la columna en la tabla.

SELECT MAX(col1) FROM tabla;

MIN: Devuelve la fila con el mínimo valor de la columna en la tabla.

SELECT MIN(col1) FROM tabla;

SUM: Devuelve el valor total de la suma de la columna en la tabla.

SELECT SUM(col1) FROM tabla;

Y más...

GROUP BY

SELECT COUNT(columna1), columna2 FROM tabla GROUP BY columna2;

En función de columna2 nos enseñará el total de columna1 por el COUNT

SELECT COUNT(columna1), columna2 FROM tabla WHERE columna3="valor" GROUP BY columna2;

Filtro HAVING

Permite filtrar con funciones de agrupación:

SELECT COUNT(columna1), columna2 FROM tabla WHERE columna3="valor" HAVING COUNT(columna1)>=10 GROUP BY columna2;

Consulta Multi-Tabla

Para hacer consultas en más de una tabla a la vez:

SELECT columna1, columna2 FROM tabla1 x, tabla2 y WHERE x.columna1 = y.columna1;

Ese "x" e "y" son un alias "AS" a cada tabla para poder coger columnas de cada una.

SELECT columna1, x.columna2, y.columna3 FROM tabla1 x, tabla2 y WHERE x.columna1 = y.columna1;

Columna1 debería estar en ambas tablas.

Consulta JOIN

© Adrián L. G. P.

© Adrián L. G. P.