SQL ¿Qué es? Cómo se define?

El lenguaje de consulta estructurado o SQL (por sus siglas en inglés structured query language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en estas. Entre sus características se encuentra recuperar -de una forma sencilla- información de interés de una base de datos.
En ZGEST cuando vea el símbolo o la denominación de SQL, se activará un asistente el cual le permitirá de una forma intuitiva crear una instrucción con la que realizar la consulta deseada.

Dependiendo del apartado del programa encontrará 2 versiones del mismo, aunque ambos mantienen la misma esencia.

Asistente SQL v.1

Asistente SQL v.2
La versión 2 del asistente de SQL es una mejora sobre la versión 1 que le permitirá el uso de múltiples paréntesis, mayor número de campos, así como añadir comentarios (observaciones) a las líneas a anotadas.


Principalmente el asistente se compone de un 'grid'  y su edición, líneas compuestas por una conjunción, apertura de paréntesis (sin paréntesis, paréntesis simple,doble o triple), campo, operación, valor, cierre de
paréntesis y observaciones.
Con estos datos podremos crear la consulta que deseemos y si no se ve capaz, hable con nuestro departamento de asistencia, le ayudaremos.

En el fondo lo que estamos construyendo no deja de ser una instrucción lógica para obtener un resultado, siendo:
  • La Conjunción 'y' u 'o' para encadenar o excluir los valores.
  • Paréntesis, como en matemáticas, si tenemos muchas instrucciones juntas los paréntesis es la mejor forma de crear un orden de ejecución.
  • Campo, los campos que podemos usar para seleccionar la información deseada.
  • Operación, la forma en que intervendrá el valor del campo en la instrucción. Las operaciones son:
    • Igual que (=); el campo tiene que cumplir estrictamente el Valor.
    • Mayor que (>); el resultado del campo tiene que ser mayor que el Valor.
    • Mayor o Igual que (>=) el resultado del campo tiene que ser mayor que el Valor.
    • Menor que (<); el resultado del campo tiene que ser mayor que el Valor.
    • Menor o Igual (<=); el resultado del campo tiene que ser mayor que el Valor.
    • Distinto (<>); el campo tiene que ser estrictamente distinto al Valor
    • Parecido ó similar (LIKE); lo usaremos como la operación '=' pero el Valor puede usar los caracteres de sustitución, a saber:
      • '%' tomará el valor de 'cualquier cosa'.
      • '_'   tomará el valor de cualquier cosa en la posición.
    • No Parecido (NOT LIKE); lo contrario a 'Parecido', que el valor será 'distinto a' pero usando los caracteres de sustitución
    • Sea Algo; cuando usamos esta opción en valor no podemos anotar nada ya que lo que estamos pidiendo es que el campo tenga valor cualquiera, ojo no confundir con 'espacio en blanco' porque  un espacio en blanco en informática es un valor al igual que 0.
    • Sea Nada; que el campo no tenga ningún dato registrado, ni siquiera blanco o 0.
  • Valor, el valor que puede tomar el campo. Este se anotará manualmente, pero en ocasiones podrá le aparecerá un botón y al pulsarlo le aparecerá una estructura de calendario para seleccionar una fecha, o una búsqueda para asistirle a localizar el valor (por ej. si el campo que usa es código de cliente le asistirá para buscar este código por el nombre).
  • Comentarios: Aquí podrá realizar comentarios en la instrucción para recordar  por qué la ha realizado de esta forma o a usado ciertos valores.
Para que comprenda mejor como debe realizar estas instrucciones veamos unos ejemplos a partir de la selección SQL del Gestor de Clientes.
Señalar que si Ud. no indica ningún parámetro de selección, el sistema asume que lo desea todo por lo que le mostrará todos los resultados.

Ejemplos:
1. 'Muéstrame todos los clientes de España',
La instrucción  a crear con el asistente sería  sencilla, seleccionamos el campo 'Cod. País', el operador '=', y como valor el código de España que hemos localizado con la búsqueda que se ha activado '...' siendo '011'.

 
2. 'Muéstrame todos los clientes de España y de Francia'.
Aquí viene el primer problema, la primera instrucción está clara 'Cod.Pais = 011' pero en la segunda si ponemos 'y Cod.Pais = 004', el resultado es ningúno ¿Cómo puede ser esto? cuando estamos creando una instrucción SQL esta es una instrucción lógica y pienselo bien ¿cuantos clientes tiene que su país sea España  Y TAMBIÉN su país se Francia? seguramente ninguno salvo que tenga dos direcciones. Para obtener el resultado correcto no deberá usar 'Y' sino 'O', 'o Cod.Pais = 001''.

 
3. 'Muéstrame todos los clientes de España y de Francia, y que su código de cliente este entre el 1000 y el 2000.'
A la instrucciónes anteriores parece que claramente añadiremos 2,
y Cod.Cliente >= 1000
y Cod.Cliente <= 2000
pero el resultado no es el deseado ¿por qué? porque estamos mezclando 'o' e 'y' sin sentido, quedando el orden de la instrucción un poco caótico y no controlando el resultado.
La mejor forma de crear orden es añadiendo paréntesis que separen los razonamientos, así que indicaremos un paréntesis inicial y final que acote los paises y otro los códigos de clientes.
(Cod.País = 011 o Cod.País = 004) y (Cod.Cliente >= 1000 y Cod.Cliente <= 2000)



4. 'Muéstrame todos los clientes de España y de Francia, y todos los clientes sea cual sea su País  pero que el código de cliente este entre el 1000 y el 2000.'
Esta instrucción es muy similar a la anterior, sólo tiene un pequeño cambio y es la conjunción entre los paréntesis que la hemos cambiado a una 'o'.
(Cod.País = 011 o Cod.País = 004) o (Cod.Cliente >= 1000 y Cod.Cliente <= 2000)


5. 'Muéstrame todos los clientes de España y de Francia, y todos los clientes que sea cual sea su País pero que el código de cliente este entre el 1000 y el 2000, y que su nombre contenga 'GARCIA'.
A la instrucción anterior debido a que queremos que nos muestre los clientes que contengan GARCIA en su nombre  deberemos usar el operador 'Parecido' y los indicadores '%' que significaría que el valor debe ser 'cualquier cosa + GARCIA + cualquier cosa'..
Pero además de esto debido a que quiere que se cumpla también la instrucción del ejemplo '4',  no vale con sólo indicar  'y Nombre Parecido %GARCIA%', sino que además deberá organizarla con paréntesis,  por lo que quedará así:
((Cod.País = 011 o Cod.País = 004) o (Cod.Cliente >= 1000 y Cod.Cliente <= 2000)) y Nombre Parecido %GARCIA%


6. 'Muéstrame todos los clientes de España y de Francia o todos los clientes que sea cual sea su País pero que el código de cliente este entre el 1000 y el 2000,  que su nombre contenga 'GARCIA' y que no tengan asignado Comisionista.
Este ejemplo nos es útil para ver el funcionamiento de 'Sea Nada', es decir ¿qué clientes son los que no tienen comisionista? los que el campo de comisionista está vacío 'y Cod.Comisionista Es Nada'.




Le recomendamos que practique a construir preguntas y obtener sus soluciones, y en caso de duda  pruebe siguiendo el truco: Como construir una instrucción SQL y no morir en el intento, y si aún así no consigue el resultado deseado, contacte con nosotros.