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]
Clausula | Descripción |
---|---|
ALL | DISTINCT | DISTINCTROW | |
FROM | tabla. Es la tabla de donde se extraen los registros. |
WHERE | Condición lógica. Solo se muestran los registros donde la condición es verdadera. |
GROUP BY | Campo. ASC | DESC. |
HAVING | Condición lógica. Solo se muestran los registros donde la condición es verdadera. |
ORDER BY | Campo. Campos por los que se ordenara el resultado. ASC | DESC. |
LIMIT | Valor. Numero de registros a recuperar. |
INTO OUTFILE | Archivo de salida. |
SELECT * FROM tabla1 WHERE id>100; SELECT edad,COUNT(*) AS n FROM personal GROUP BY edad;
Esta clausula te permite hacer busquedas que cumplan un patron usando comodines simple (_) o multiple (%).
Caracter | Descripción |
---|---|
_ | Representa un caracter |
% | Repesenta muchos caracteres |
SELECT sexo,MAX(edad) AS viejo FROM tabla WHERE edad LIKE '_0';
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);
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;
Comprueba si el valor de un campo existe en otra tabla.
SELECT campo(s) FROM tabla1 WHERE EXIST (SELECT campo1 FROM tabla2 WHERE condicion);
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);
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);
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]
Clausula | Descripció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
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;
Añadir registros a una tabla.
INSERT INTO tabla SET campo1=valor1[,campo2=valor2]; INSERT INTO tabla (campo1,campo2...) VALUES (valor1,valor2...); INSERT INTO tabla VALUES (valor1,campo1),(valor2,campo2)...; INSERT INTO tabla1 SELECT campo1,campo2 FROM tabla2 WHERE condicion];
Luego de operar devuelve el numero de registros afectados. Ver LAST_INSERT_ID()
Actualizar registros en una tabla. La cláusula SET indica qué campos se deben modificar y los valores que se les deben dar. Cada valor se puede dar como una expresión o la palabra clave DEFAULT para establecer su valor predeterminado. La cláusula WHERE, si se da, especifica las condiciones que identifican qué registros se deben actualizar. Si no se especifica la cláusula WHERE, se actualizan todas los registros. La cláusula LIMIT establece un límite en la cantidad de registros que se pueden actualizar.
UPDATE tabla SET campo1=valor1[,campo2=valor2] WHERE condición [LIMIT 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.
REPLACE funciona exactamente como INSERT, excepto que si un registro de la tabla tiene el mismo valor que un registro nuevo para una CLAVE PRINCIPAL o un índice ÚNICO, el registro antiguo se elimina antes de insertar el nuevo. Si la tabla tiene más de una clave ÚNICA, es posible que el nuevo registro entre en conflicto con más de un registro antiguo. En este caso, se eliminarán todos los registros en conflicto.
REPLACE INTO tabla (campo1,campo2...) VALUES (valor1,valor2...); REPLACE INTO tabla SET camp1=valor1,camo2=valor2...;
El nombre de la tabla se puede especificar en el formato db_name.tabla, si se selecciona una base de datos predeterminada, en el formato simple tabla. Esto permite usar REPLACE ... SELECT para copiar filas entre diferentes bases de datos.
Borrar registros en una tabla.
DELETE FROM tabla WHERE condición;
Luego de operar devuelve el numero de registros afectados.
Tenemos los operadores: =. <>, <, <=, >, >=, >>, <<, <=>, AND, OR y LIKE.
Operador | Descripción |
---|---|
<> | Diferente |
>> | |
<< | |
<=> |