Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/03/2013, 18:43
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: El select es un comando o una clausula?

Desde un sentido estricto, SELECT no es ni un comando ni una cláusula. Es una sentencia.

Un comando es (siempre hablando estrictamente de la definición) una instrucción dada a un sistema operativo, o que tiene impacto en acciones que el sistema operativo debe realizar.
Es en definitiva, una llamada al S.O., sea por medio de un intérprete o de una consola dada.

Una sentencia es una línea de código en un lenguaje informático, que determina un proceso de algún tipo, y en este caso es sobre un lenguaje de consultas.
Por ejemplo, enviar a imprimir es una sentencia de un lenguaje, mientras que leer el contenido de un directorio sería un comando. En SQL hay comandos que permiten leer archivos desde disco, pero los procesos que son interpretados internamente en el DBMS, son sentencias.

El SQL tiene efectivamente, "comandos", pero no son el SELECT, INSERT, UPDATE ni el DELETE. Son en todo caso las llamadas sentencias DML, es decir, aquellas que crean, modifican o destruyen objetos, porque estas son en definitiva acciones que impactan sobre el S.O.

Por su lado, las cláusulas son modificadores de las sentencias, es decir, partes de una sentencia que cambian el comportamiento de la misma, tales como los JOIN, HAVING, GROUP, etc. Estas cláusulas permiten que la sentencia básica sufra determinados cambios en el resultado de acuerdo a lo que las clausulas determinan.

SUM(), AVG(), COUNT(), etc., no son cláusulas. Son funciones (esto debería ser evidente), y como en todo lenguaje de computación, una función es un proceso que devuelve un datos o valor determinado. En este caso existen funciones de agrupamiento y "el resto". Las primeras sólo pueden ser usadas en conjunto con la cláusula GROUP BY, mientras que en el resto se procesan los valores sobre cada registro devuelto.

¿Se va entendiendo la diferencia?

Técnicamente, es incorrecto en SQL hablar de comandos (con puntuales excepciones). Cuando se menciona cualquiera de las sentencias DML o DDL, se habla de consultas, aunque sea UPDATE, DELETE o CREATE.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 10/03/2013 a las 18:50