Consultas MySQL

1. Select

Usado para recibir un conjunto de registros de una o mas tablas.

SELECT [*][campo1,campo2...] FROM tabla [WHERE condición] [GROUP BY campo] [HAVING condicion] [ORDER BY campo] [LIMIT n]

Clausulas en SELECT
ClausulaDescripción
ALL | DISTINCT | DISTINCTROW
FROMtabla. Es la tabla de donde se extraen los registros.
WHERECondición lógica. Solo se muestran los registros donde la condición es verdadera.
GROUP BYCampo. ASC | DESC.
HAVINGCondición lógica. Solo se muestran los registros donde la condición es verdadera.
ORDER BYCampo. Campos por los que se ordenara el resultado. ASC | DESC.
LIMITValor. Numero de registros a recuperar.
INTO OUTFILEArchivo de salida.

SELECT * FROM tabla1 WHERE id>100;
SELECT edad,COUNT(*) AS n FROM personal GROUP BY edad;

1.1 LIKE

Esta clausula te permite hacer busquedas que cumplan un patron usando comodines simple (_) o multiple (%).

Comodines de LIKE
CaracterDescripción
_Representa un caracter
%Repesenta muchos caracteres

SELECT sexo,MAX(edad) AS viejo FROM tabla WHERE edad LIKE '_0';

1.2 IN()

Esta clausula te permite buscar si un campo tiene algunos es uno de los valores mencionados.

SELECT campo(s)
FROM tabla
WHERE campo1 IN (val1, val2, ...);

SELECT campo(s)
FROM tabla
WHERE campo1 IN (SELECT);

1.3 BETWEEN

Esta clausula te permite buscar si un campo tiene un valor entre dos valores dados.

SELECT campo(s)
FROM tabla
WHERE campo1 BETWEEN val1 AND val2;

1.4 EXIST()

Comprueba si el valor de un campo existe en otra tabla.

SELECT campo(s)
FROM tabla1
WHERE EXIST (SELECT campo1 FROM tabla2 WHERE condicion);

1.5 ANY()

Para comparara el valor de un campo con un rango.

SELECT campo(s)
FROM tabla1
WHERE campo1 operador ANY
  (SELECT campo2 FROM tabla2 WHERE condicion);

1.6 ALL()

Para comparara el valor de un campo con un rango.

SELECT ALL campo(s)
FROM tabla
WHERE condition;

SELECT campo(s)
FROM table1
WHERE campo1 operador ALL
  (SELECT campo2 FROM tabla2 WHERE condicion);

2. Select varias tablas

Cuando los registros deben provenir de mas de una tabla debes usar una union (JOIN). Al unir dos tablas es importante entender cual es la tabla de la izquierda y cual la de la derecha.

SELECT tabla1.campo1[,tabla2.campo1] FROM tabla1 [AS apodo],tabla2 [AS apodo] WHERE tabla1.campo=tabla2.campo]
SELECT tabla1.campo1[,tabla2.campo1] FROM tabla1 [AS apodo] LEFT JOIN tabla2 [AS apodo] ON tabla1.campo=tabla2.campo]

Clausulas en SELECT
ClausulaDescripción
STRAIGHT_JOIN
INNER JOIN
LEFT [OUTER] JOIN
NATURAL [LEFT [OUTER]] JOIN
RIGHT [OUTER] JOIN
NATURAL [RIGHT [OUTER]] JOIN

a LEFT JOIN b USING (c1,c2,c3)
a LEFT JOIN b ON a.c1=b.c1,a.c2=b.c2,a.c3=b.c3)
SELECT personal.nom,SUM(ventas.tot) AS tot FROM personal,ventas WHERE personal.id=ventas.vendedor
SELECT personal.nom FROM personal LEFT JOIN ventas ON personal.id=ventas.vendedor

2.1 Group by

Esta clausula es obligatoria si usas algún tipo de agrupamiento como AVG(), STD(), SUM, MAX(), MIN() y GROUP_CONCAT().

SELECT sexo,MAX(edad) AS viejo FROM tabla1 GROUP BY sexo;

3. Insert

Añadir registros a una tabla.

INSERT INTO tabla campo1=valor1[,campo2=valor2];
INSERT INTO tabla (campo1,campos2...) VALUES (valor1,valor2...);
INSERT INTO tabla1 SELECT campo1,campo2 FROM tabla2 WHERE condicion];

Luego de operar devuelve el numero de registros afectados. Ver LAST_INSERT_ID()

4. Update

Actualizar registros en una tabla.

UPDATE tabla SET campo1=valor1[,campo2=valor2] WHERE condición;

COn multiple tablas:

UPDATE tabla1
JOIN tabla2
		ON tabla1.campo1 = tabla2.campo2
SET tabla1.campo3 = tabla2.campo4
WHERE condicion;

Luego de operar devuelve el numero de registros afectados.

5. Delete

Borrar registros en una tabla.

DELETE FROM tabla WHERE condición;

Luego de operar devuelve el numero de registros afectados.

6. Operadores

Tenemos los operadores: =. <>, <, <=, >, >=, >>, <<, <=>, AND, OR y LIKE.

Operadores MySQL
OperadorDescripción
<>Diferente
>>
<<
<=>