sql injection

MySQL es de las bases de datos mas utilizadas en ambientes web aunque hay otras mas livianas pero sigue siendo segura y robusta, pero la utilizamos a su maximo potencial no lo creo, tiene tantas utilidades que no conocemos y nos la arreglamos usan el lenguaje que manejemos atras ya sea php u otro, pero bueno aqui les van 10 tips que considero utiles para sus consultas:

  • 1.- Condicionales IF:

SELECT IF(tipodeauto = 1, marca_auto, marca_moto) as marca FROM table WHERE color=”rojo” LIMIT 1;

Esto imprimiria como valor de marca, la marca del auto si tipodeauto fuera igual a 1 si no en marca imprimiria la marca de una moto.

  • 2.- Operaciones matematicas:

SELECT SUM(subtotal) as gSubtotal FROM cantidades;

Esta consulta sumaria todos los subtotales de campo (subtotal) de todos los registros de la tabla cantidades y las imprimiria en gSubtotal.

SELECT (subtotal * .15) as Iva FROM cantidades WHERE articulo=’ipod’ LIMIT 1;

Esto multiplicaria el subtotal por .15 del registro que pertenesca al articulo ipod devolviendo el iva en la variable con nombre Iva.

  • 3.- Consultas multiples:

SELECT t1.*, t2.nombre, t2.modelo FROM table1 t1 LEFT OUTER JOIN table2 t2 ON t2.marca_moto=t1.marca_auto WHERE t1.color=”azul”;

Esta consulta llamaria a los registros de dos tablas diferentes table1 y table2 y haria lo siguiente, pediria los datos de la tabla table1 cuando color sea azul y pediria los datos de la tabla table2 donde coincidan las marcas, pero de table1 (t1) imprimiria todos los campos y de table2 (t2) solo imprimiria el nombre y el modelo.

  • 4.-Formato de cantidades:

SELECT FORMAT(totales, 2) as total FROM cantidades;

Esta consulta es algo asi imaginense que los valores del campo totales es asi 456781.3445 como veran no tiene separador de miles ni de decimales.

Al aplicarle el FOTMAT(totales, 2) nos imprimiria 456781.3445 > 456,781.34

  • 5.- Cantidades con decimales exactos sin redondear:

Tenemos un formulario el cual recibe una cantidad que incluye decimales por ejemplo: 456781.3445 esta la guardamos en el campo: precio que es del tipo float y tu deseas que unicamente se guarden 2 decimales lo cual lo harias al momento de definir el tipo del campo ponle float(15,2) lo cual seria igual a 15 digitos y 2 decimales, pero esto al guardar el valor en ese campo se guardaria esto 456781.33 te hace un redondeo lo cual te afectaria la manera para evitar eso es definir el tipo de campo de esta manera DECIMAL(15,2) el cual si te respetaria y te guardaria 456781.34

  • 6.- Variable en Consultas:

http://frogx3.wordpress.com/2007/07/27/variables-dentro-consultas-mysql/

  • 7.- Calcular dias entre fechas

SELECT datediff(date1, date2) as dias FROM eventos;

Esta consulta me devolveria un numero entero con el numero de dias entre ambas fechas los tipos de los campos pueden ser DATE (1997-12-30), DATETIME (1997-12-30 23:59:59).

SELECT INTERVAL num DAY + ‘1997-12-31’;

Esto le suma dias a la fecha definida siendo num un valor entero si en este caso fuera 1 la consulta devolveria 1998-01-01

  • 8.- Acciones con strings

SELECT TRIM(‘ blog ‘) as result FROM table1;

Esta unicamente me quitaria los espacion devolviendo: result=’blog’, sin los espacion igual podrian usar RTRIM() o LTRIM().

SELECT LOWER(‘BLOG’) as result FROM table1;

Me imprimiria el resultado en minusculas, result=’blog’

SELECT UPPER(‘blog’) as result FROM table1;

Me imprimiria el resultado en mayuculas, result=’BLOG’

  • 9.- Concatenar cadenas

val1= “hola” y val2 = ” mundo”y val3=”aqui estoy”

SELECT CONCAT(val1, val2) as result FROM table1;

Esto me devolveria el result= “hola mundo”

SELECT CONCAT_WS(“, “, val1, val2, val3) as result FROM table1;

Esto me imprime lo siguiente result = “hola, mundo,aqui estoy”

————————————————–

Si deseas mas informacion te recomiendo visitar la documentacion e igual te recomiendo los siguientes programas.

DBDesigner, Mysql GUI Tools