SQL es un lenguaje rico en funcionalidades usado para realizar queries a las bases de datos. Estas queries se conocen como statements.

El comando más simple que cubriremos en esta tarea será SELECT (para que nos devuelva algo que le pidamos), UPDATE (para actualizar la información guardada en una tabla), INSERT (para meter información en una tabla) y DELETE (para borrar información de una tabla).

CAUTION

SQL no es case-sentitive (no distigue entre mayúsculas y minúsculas).


SELECT

El primer tipo de query que aprenderemos sera SELECT. Usado para recuperar información de una base de datos.

SELECT * FROM users;

idusernamepassword
1jonpass123
2adminp4ssword
3martinsecret123
El statement SELECT le dice a la base de datos que seleccione datos. El * le dice que queremos seleccionar todos. El FROM le dice de dónde queremos rescatar los datos. Por último indicamos la tabla, en este caso users.

La siguiente se parece a la de arriba pero en este caso en lugar de usar * le pedimos una (o más) en específico.

SELECT username,password FROM users;

usernamepassword
jonpass123
adminp4ssword
martinsecret123

La siguiente query, al igual que la primera, devuelve todas las columnas usando el selector *. La cláusula LIMIT 1 fuerza a la base de datos a sólo devolver una fila de información. Cambiar la query a LIMIT1,1 fuerza a la base de datos a saltarse el primer resultado y luego, la query LIMIT 2,1 fuerza a la base de datos a saltarse los dos primeros resultados. Recuerda, el primer número le dice a la base de datos cuántas lineas saltar y el segundo cuántas devolver.

SELECT * FROM users LIMIT 1;

idusernamepassword
1jonpass123

Finalmente vamos a utilizar la cláusula WHERE. Así es como podemos escoger exactamente la información que queremos extraer.

SELECT * FROM users WHERE username='admin';

idusernamepassword
2adminp4ssword
Esto sólo devolverá filas donde el username sea "admin".

Si queremos que se devuelvan las columnas donde el username NO es admin:

SELECT * FROM users WHERE username != 'admin';

idusernamepassword
1jonpass123
3martinsecret123
Si queremos seleccionar varias condiciones:

SELECT * FROM users WHERE username='admin' OR username='jon';

idusernamepassword
1jonpass123
2adminp4ssword
También se pueden juntar varias columnas:

SELECT * FROM users WHERE username='admin' AND password='p4ssword';

idusernamepassword
2adminp4ssword

Usar la cláusula LIKE te permite especificar información que no coincida exactamente pero que comience, termine o contenga ciertos caracteres.

SELECT * FROM users WHERE username LIKE 'a%';

idusernamepassword
2adminp4ssword
Este devuelve aquellos usuarios cuyo nombre comience por "a". Mientras es la siguiente sentencia devuelve aquellos que acaban con "n":

SELECT * FROM users WHERE username LIKE '%n';

idusernamepassword
1jonpass123
2adminp4ssword
3martinsecret123
Esta otra hace que devuelva aquellos usuarios que contengan "mi" en su nombre:

SELECT * FROM users WHERE username LIKE '%mi%';

idusernamepassword
2adminp4ssword
UNION

El statement UNION combina los resultados de dos o más queries SELECT para recuperar información de una sóla o múltiples tablas. La regla para este statement es que debe recuperar el mismo número de columnas en cada statement SELECT, las columnas deben tener un tipo de dato similar y el orden de la columna tiene que ser el mismo. Puede sonar lioso, veamos la siguiente analogía.

Imagina que una compañía quiere crear una lista de direcciones de todos los clientes y distribuidores para mandar un nuevo catálogo. Tenemos una tabla llamada "customers" con los siguientes contenidos:

idnameaddresscitypostcode
1Mr John Smith123 Fake StreetManchesterM2 3FJ
2Mrs Jenny Palmer99 Green RoadBirminghamB2 4KL
3Miss Sarah Lewis15 Fore StreetLondonNW12 3GH
Y otra llamada "suppliers" con los siguientes contenidos:
idcompanyaddresscitypostcode
1Widgets LtdUnit 1a, Newby EstateBristolBS19 4RT
2The Tool Company75 Industrial RoadNorwichN22 3DR
3Axe Makers Ltd2b Makers Unit, Market RoadLondonSE9 1KK
Usando el siguiente statement, podemos recoger resultados de las dos tablas y ponerlos en una sola:

SELECT name,address,city,postcode FROM customers UNION SELECT company,address,city,postcode FROM suppliers;

nameaddresscitypostcode
Mr John Smith123 Fake StreetManchesterM2 3FJ
Mrs Jenny Palmer99 Green RoadBirminghamB2 4KL
Miss Sarah Lewis15 Fore StreetLondonNW12 3GH
Widgets LtdUnit 1a, Newby EstateBristolBS19 4RT
The Tool Company75 Industrial RoadNorwichN22 3DR
Axe Makers Ltd2b Makers Unit, Market RoadLondonSE9 1KK

INSERT

El statement INSERT le dice a la base de datos que vamos a introducir información. La cláusula INTO le dice en qué tabla la vamos a introducir. Después se mete el nombre de las columnas entre paréntesis y la cláusula VALUES indica lo que introduciremos seguido de los valores entre paréntesis.

INSERT INTO users (username, password) VALUES ('bob', 'password123');

idusernamepassword
1jonpass123
2adminp4ssword
3martinsecret123
4bobpassword123
IMPORTANT

No hace falta introducir id en la columna porque es AUTO_INCREMENT, pero si estuviera definido como NOT NULL en la descripción de la tabla habría que introducirlo aunque no quisiéramos.


UPDATE

El statement UPDATE le dice a la base de datos que queremos actualizar una o más filas de información en una tabla. Primero se especifica la tabla, luego con SET especificamos los campos que cambiaremos y su nuevo valor y con la cláusula WHERE indicamos en qué fila lo cambiaremos.

UPDATE users SET username='root',password='pass123' WHERE username='admin';

idusernamepassword
1jonpass123
2rootpass123
3martinsecret123
4bobpassword123

DELETE

El statement DELETE le dice a la base de datos que queremos borrar una o más filas de datos. Este tipo de query es muy similar a la de SELECT. Puedes especificar qué fila borrar haciendo uso de WHERE y limitar el número de filas borrado con LIMIT.

DELETE FROM users WHERE username='martin';

idusernamepassword
1jonpass123
2rootpass123
4bobpassword123
Si no especificas con la cláusula WHERE borrarás toda la tabla de datos.

DELETE FROM users;

idusernamepassword
IMPORTANT