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
Solo devuelve las filas que sean no repetidas según todas las columnas dadas:
SELECT DISTINCT col1 FROM tabla;
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;
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.
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
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");
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";
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;
Puede haber subconsultras dentro de otras:
SELECT * FROM tabla1 WHERE col1 IN (SELECT col2 FROM tabla2 WHERE col3="valor");
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";
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...
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;
Permite filtrar con funciones de agrupación:
SELECT COUNT(columna1), columna2 FROM tabla WHERE columna3="valor" HAVING COUNT(columna1)>=10 GROUP BY columna2;
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.