41. Consulta a una BBDD MySQL (SELECT | WHERE)

Para hacer consultas a una base de datos lo primero que tenemos que hacer es escribir la palabra reservada SELECT seguido del nombre de los campos que queremos consultar.

Ejm

SELECT nombre, apellidos

Después utilizamos la palabra reservada FROM para elegir la tabla sobre la que queremos consultar.

Ejm

SELECT nombre, apellidos FROM ejemplo.contactos;

Por último, como podemos ver, ponemos el punto y coma.

Extraer toda la información

Para ello utilizamos el signo de asterisco, el cual trae todos los campos que tenemos en nuestra tabla.

Ejm

SELECT * FROM ejemplo.contactos;

Cuantos registros hay en una tabla

Para ello se utiliza la palabra reservada COUNT.

Ejm

SELECT COUNT(*) FROM ejemplo.contactos;

Registros únicos con DISTINCT

Imaginemos que dos direcciones son iguales y sólo queremos que devuelvan las direcciones únicas, para ello ponemos la palabra reservada DISTINCT delante del campo sobre el que realizamos la consulta, de la siguiente manera.

Ejm

SELECT DISTINCT direccion FROM ejemplo.contactos;

Esto devolverá valores únicos. Las direcciones duplicadas sólo se devolverán una vez.

Registro en particular

Lo que queremos es encontrar un registro en particular, para ello usamos un filtro utilizando la palabra reservada WHERE seguida del nombre del campo que queremos filtrar, de la siguiente manera.

Ejm

SELECT * FROM ejemplo.contactos WHERE nombre="Francisco";

Esto devolverá todos los registros pero cuyo nombre coincide con Francisco. Cuando usamos el signo igual, estamos diciendo que extraiga todos los registros cuyo nombre sea exactamente Francisco en nuestro caso. Para extraer todos los registros cuyo nombre sea Francisco y pueda estar en cualquier parte del texto hemos de utilizar el caracter de porcentaje (%) antes del valor, después del valor, o antes y después del valor, de la siguiente manera. 

Ejm

SELECT * FROM ejemplo.contactos WHERE nombre LIKE "%Francisco"; // ANTES DE Francisco 

SELECT * FROM ejemplo.contactos WHERE nombre LIKE "Francisco%"; // DESPUÉS DE Francisco

SELECT * FROM ejemplo.contactos WHERE nombre LIKE "%Francisco%"; ANTES O DESPUÉS DE Francisco

Para utilizar los porcentajes, el símbolo igual lo vamos a sustituir por la palabra reservada LIKE, como se muestra en el ejm de arriba.

Limitar la cantidad de registros

Para ello utilizamos la palabra reservada LIMIT de la siguiente manera.

Ejm

SELECT * FROM ejemplo.contactos LIMIT 2;

Va a devolver únicamente los dos primeros registros.

En el caso de que queramos que traiga los dos últimos creamos la siguiente sintaxis

Ejm

SELECT * FROM ejemplo.contactos LIMIT 1, 2;

El 1 indica a partir de que registro queremos que traiga los resultados, y el 2 indica el número de registros que queremos que nos traiga.

La sentencia WHERE no sirve sólo para poder recuperar registros de nuestra base de datos, sino también lo vamos utilizar para actualizar y eliminar registros.

Actualizar registros

Podemos usar la siguiente sintaxis.

Ejm

UPDATE TABLE ejemplo.contactos SET telefono = '123456789' WHERE nombre LIKE '%Francisco%';

Esto modificará todos los registros cuyo nombre sea Francisco.

Workbench, por defecto no nos va a permitir modificar grandes cantidades de datos, debemos desactivar el modo seguro, que es una protección para nosotros mismos por si eliminamos sin querer.

Desactivar modo seguro

La ruta para ello es:

Edit > Preferences > SQL Editor > Safe Updates (rejects UPDATEs and DELETEs with no restrictions)

Por defecto la casilla viene activada, hemos de desactivarla y ejecutaremos nuestro Workbench en modo no seguro. Después tenemos que reiniciar nuestro XAMPP para que se desactive el modo seguro.