Excel y SQL principales sentencias





Anteriormente mostre como conectar Excel con Access, en esa oportunidad se ingresaron datos desde Excel y se guardaron en Access usando el comando recorset; en esa oportunidad había mencionado que se puede obtener el mismo resultado ejecutando sentencias SQL, en esta entrega te muestro algunas de las sentencias SQL más comunes, esto nos servirá de apoyo para las siguientes presentaciones, donde se mostrará como conectar Excel con Access, pudiendo manipular desde Excel los registros de Access, es decir se podrá, insertar, modificar, borrar o consultar registros de la tabla de Access mediante SQL y mostrarlos en una hoja de Excel, en otras palabras se podrá manipular tablas de Access desde Excel.

Si estás usando macros, o necesitas modificar alguna de ellas para automatizar tu libro de Excel seguramente te es necesario saber seleccionar o referenciar celdas, en FORMAS DE SELECCIONAR O REFERENCIAR CELDAS CON VBA (Spanish Edition) encontrarás una excelente ayuda; si trabajas con fechas en Excel, fíjate en el siguiente link que te puede ser de utilidad FORMATOS Y FUNCIONES DE FECHA Y HORA DE MICROSOFT EXCEL (Spanish Edition)

  

Antes de profundizar te recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas de cálculo, haz click acá, si quieres un libro sobre Excel, en inglés, entonces debes hacer click acá. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

Desde el link final podrás descargar el ejemplo que conecta Excel con Access y cientos de ejemplos totalmente GRATUITO, recordando que si este o alguno de los ejemplos publicados te fueron de utilidad y puedes, aporta a seguir manteniendo esta página.

Como había mencionado más arriba estas son algunas de las sentencias SQL que se pueden utilizar en Excel al trabajar con Access, en las siguientes entregas mostraré como filtrar datos trabajando con el comando SELECT y como insertar o agregar datos, modificar y eliminar datos.

Antes que nada es preciso definir que es SQL, bien SQL es un lenguaje de consulta estructurado, se podría decir que es un lenguaje de base de datos normalizado que es utilizado por el motor de base de datos de Microsoft Jet.

Se utiliza SQL para crear objetos QueryDef que son el argumento de origen de datos del método OpenRecorsSet y como la propiedad RecordSource de un control de datos, también es usado para crear y manipular directamente una base de datos con el método Execute o crear consultas SQL de paso para manipular bases de datos remotas.

Que compone el lenguaje SQL, la respuesta es un conjunto de comandos, cláusulas, operadores y funciones de agregado, que se combinan entre si en las denominadas sentencias SQL para poder  manipular una base de datos, es decir crear, actualizar o consultar la misma.

Existen dos tipos de comandos SQL los denominados DLL y DML los permiten crear una nueva base de datos, definir campos e índices; los DLL permiten generar consultas para filtrar y extraer datos de la base.

COMANDOS

 COMANDOS DLL
Comando
Descripción
CREATE
Crear nuevas tablas, campos e índices.
DROP
Eliminar tablas e índices.
ALTER
Modifica tablas agregando campos o cambiando la definición.

 COMANDOS DML
Comando
Descripción
SELECT
Sirve para consultar registros que cumplan un criterio determinado.
INSERT
Sirve para cargar lotes de datos en la base de datos en una única operación.
UPDATE
Sirve para modificar los valores de los campos y registros especificados.
DELETE
Utilizado para eliminar registros de una tabla de una base de datos.


CLÁUSULAS

Son condiciones que se utilizan para definir que datos se desea seleccionar o manejar.


Cláusula
Descripción
FROM
Determina la tabla de la cual se van a seleccionar los registros.
WHERE
Sirve para especificar que registros se deben seleccionar.
GROUP BY
Utilizada para separar los registros seleccionados en grupos específicos.
HAVING
Utilizada para expresar la condición que debe satisfacer cada grupo.
ORDER BY
Sirve para ordenar registros de acuerdo a un criterio seleccionado.


OPERADORES LÓGICOS
Son los siguientes:

Operador
Descripción
AND
Es el "y" lógico. Evalúa dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas.
OR
Es el "y" ó "o" lógico. Evalúa dos condiciones y devuelve un valor de verdad si alguna de las dos es cierta.
NOT
Negación lógica. Devuelve el valor contrario de la expresión.
XOR
Es el "o" lógico devuelve los registros que cumplan una u otra condición pero no amas condiciones como en el caso de or.
EQV
Devuelve verdadero si dos expresiones son verdaderas o son las dos falsas.
IMP
Compara dos objetos, también es denominada IS

 



OPERADORES DE COMPARACIÓN

Permiten comparar dos o más expresiones.

Operador
Descripción
< 
Menor que
> 
Mayor que
<> 
Distinto de
<=
Menor ó Igual que
>=
Mayor ó Igual que
=
Igual que
BETWEEN
Utilizado para especificar un intervalo de valores.
LIKE
Utilizado en la comparación de un modelo
IN
Utilizado para especificar registros de una base de datos


FUNCIONES DE AGREGADO

Estas funciones se usan dentro de una cláusula SELECT en grupos de registros para devolver un único valor que se aplica al grupo de registros a los que se refiere.


Función
Descripción
AVG
Calcula el promedio de los valores de un campo determinado
COUNT
Devuelve el número de registros de la selección
SUM
Suma de todos los valores de un campo determinado
MAX
Devuelve el valor más alto de un campo especificado
MIN
Devuelve el valor más bajo de un campo especificado


PREDICADO
El predicado, sirve para se debe incluir o debe ir entre la cláusula y el primer nombre del campo del cual se desean recuperar los datos, a final del tutorial  en el título Subconsultas, se usan, los predicados ANY y SOME, entre los predicados aparte de los mencionados, tenemos:

  
Predicado
Descripción
ALL
Devuelve todos los campos de la tabla
TOP
Devuelve un determinado número de registros de la tabla
ANY
Hace referencia a alguno de los registros de la tabla
SOME
Hace referencia a alguno de los registros de la tabla
DISTINCT
Omite los registros cuyos campos seleccionados coincidan totalmente
DISTINCTROW
Omite los registros duplicados basándose en la totalidad del registro y no sólo en los campos seleccionados.




OPERADOR LIKE
Este operador se usa para comparar una expresión de cadena con un modelo en una expresión SQL, tipos de coincidencia.


Tipo de coincidencia
Modelo Planteado
Coincide
No coincide
Varios caracteres
'a*a'
'aa', 'aBa', 'aBBBa'
'aBC'
Carácter especial
'a[*]a'
'a*a'
'aaa'
Varios caracteres
'ab*'
'abcdefg', 'abc'
'cab', 'aab'
Un solo carácter
'a?a'
'aaa', 'a3a', 'aBa'
'aBBBa'
Un solo dígito
'a#a'
'a0a', 'a1a', 'a2a'
'aaa', 'a10a'
Rango de caracteres
'[a-z]'
'f', 'p', 'j'
'2', '&'
Fuera de un rango
'[!a-z]'
'9', '&', '%'
'b', 'a'
Distinto de un dígito
'[!0-9]'
'A', 'a', '&', '~'
'0', '1', '9'
Combinada
'a[!b-m]#'
'An9', 'az0', 'a99'
'abc', 'aj0'



TIPO DE DATOS
Los tipos de datos que se manejan con SQL son trece tipos denominados primarios y varios sinónimos que son reconocidos por dichos tipos de datos, en el cuadro que sigue se exponen los datos primarios y en el que sigue los sinónimos que reconoce.


Tipo de Datos
Longitud
Descripción
BINARY
1 byte
Para consultas sobre tabla adjunta de productos de bases de datos que definen un tipo de datos Binario.
BIT
1 byte
Valores Si/No ó True/False
BYTE
1 byte
Un valor entero entre 0 y 255.
COUNTER
4 bytes
Un número incrementado automáticamente (de tipo Long)
CURRENCY
8 bytes
Un entero escalable entre 922.337.203.685.477,5808 y 922.337.203.685.477,5807.
DATETIME
8 bytes
Un valor de fecha u hora entre los años 100 y 9999.
SINGLE
4 bytes
Un valor en punto flotante de precisión simple con un rango de -3.402823*1038 a -1.401298*10-45 para valores negativos, 1.401298*10-45 a 3.402823*1038 para valores positivos, y 0.
DOUBLE
8 bytes
Un valor en punto flotante de doble precisión con un rango de -1.79769313486232*10308 a -4.94065645841247*10-324 para valores negativos, 4.94065645841247*10-324 a 1.79769313486232*10308 para valores positivos, y 0.
SHORT
2 bytes
Un entero corto entre -32,768 y 32,767.
LONG
4 bytes
Un entero largo entre -2,147,483,648 y 2,147,483,647.
LONGTEXT
1 byte por carácter
De cero a un máximo de 1.2 gigabytes.
LONGBINARY
Según se necesite
De cero 1 gigabyte. Utilizado para objetos OLE.
TEXT
1 byte por caracter
De cero a 255 caracteres.


La tabla muestra los tipos de datos sinónimos:

Tipo de Dato
Sinónimos
BINARY
VARBINARY
BIT
BOOLEAN
LOGICAL
LOGICAL1
YESNO
BYTE
INTEGER1
COUNTER
AUTOINCREMENT
CURRENCY
MONEY
DATETIME
DATE
TIME
TIMESTAMP
SINGLE
FLOAT4
IEEESINGLE
REAL
DOUBLE
FLOAT
FLOAT8
IEEEDOUBLE
NUMBER
NUMERIC
SHORT
INTEGER2
SMALLINT
LONG
INT
INTEGER
INTEGER4
LONGBINARY
GENERAL
OLEOBJECT
LONGTEXT
LONGCHAR
MEMO
NOTE
TEXT
ALPHANUMERIC
CHAR
CHARACTER
STRING
VARCHAR
VARIANT (No Admitido)
VALUE


CLÁUSULA FROM
Esta cláusula no tiene mayores análisis, determina en que tabla se buscarán o harán las distintas operaciones.

El siguiente ejemplo permite seleccionar todos los campos de la tabla Ventas.
SELECT * FROM Ventas

Esta sentencia SQL selecciona el campo Cliente de la tabla Ventas
SELECT Cliente FROM Ventas

CLÁUSULA WHERE
Esta cláusula se ha visto a lo largo de los ejemplos que acá se han expuesto, permite determinar que registros se van a filtrar o recuperar; en otras palabras, determina que registros de la tabla seleccionada con la cláusula FROM deberán aparecer o serán el resultado de la instrucción SELECT.

Esta cláusula es opcional, si no se utiliza la instrucción SELECT devolverá todos los registros de los campos especificados algunos ejemplos aclararán el panorama.

Selecciona todos los campos cuyos registros del campo cliente sean igual a Dayra Col y Tomy Lee.
SELECT * FROM Ventas WHERE Cliente = 'Dayra Col' OR  Cliente = 'Tomy Lee'

Selecciona el campo cliente de la tabla ventas cuando venta sea superior a 450000
SELECT Cliente FROM Ventas WHERE Venta > 450000

Selecciona todos los campos cuando los registros del campo cliente se encuentren entre Day y Tom.

SELECT * FROM Ventas WHERE Cliente BETWEEN 'Day' AND 'Tom'


CLÁUSULA GROUP BY
La cláusula GROUP BY o agrupamiento de registros combina o une registros con valores idénticos en una lista de campos especificados, en un solo registro, obteniéndose una sumatoria si se incluyen en la sentencia SQL funciones de agregado como sumar o contar; la sintaxis de la cláusula es:

SELECT Campo FROM Tabla WHERE criterio GROUP BY campos del grupo.

La cláusula GROUP BY no es obligatoria, si no existe una función SQL agregada en la instrucción, los valores resúmenes se omiten; los valores nulos son agrupados por GROUP BY, pero no se evalúan en las funciones SQL agregadas; se puede agrupar cualquier campo de la tabla indicada por la cláusula FROM, excepto campos tipo memo y objetos OLE.

Al usar la cláusula WHERE se filtran los datos que se requieren agrupar; también se puede usar la cláusula HAVING para filtrar registros una vez agrupados los datos con GROUP BY.

Los campos de la lista GROUP BY puede referirse a cualquier campo de la tabla FROM, incluso si el campo no está incluido en la instrucción SELECT siempre y cuando SELECT contenga una función SQL agregada.

El siguiente ejemplo despejará algunas dudas; la sentencia SQL solicita seleccionar los datos del campo Fecha y Cliente, sumando el campo Venta de la tabla Ventas, cuando su estado sea finalizado, agrupando las ventas por fecha.

SELECT Fecha, Cliente, Estado SUM (Venta) FROM Ventas  WHERE Estado= 'Finalizado' GROUP BY Fecha


CLÁUSULA HAVING 
La cláusula HAVING es similar a la cláusula WHERE, la diferencia reside en que permite filtrar datos ya agrupados por la cláusula GROUP BY, es decir muestra los registros ya agrupados y que cumplan los criterios establecidos en la cláusula HAVING.

La siguiente sentencia SQL expresa que se deben mostrar los campos Fecha, Cliente y sumar (Venta) de la tabla Ventas, cuando su estado sea finalizado, agrupando datos por Fecha, una vez agrupados mostrar las ventas superiores a 60000 de los clientes Dayra Col y Tomy Lee.

SELECT Fecha, Cliente, Estado, SUM (Venta) FROM Ventas WHERE Estado= 'Finalizado' GROUP BY Fecha HAVING SUM (Venta) >600000 AND Cliente = 'Dayra Col' OR Cliente = 'Tomy Lee'


CLÁUSULA ORDER BY
Cuando se realiza una consulta muchas veces se necesita ordenar registros y especificar el orden en que se requiere sean devuelto los datos de las distintas tablas ello es posible con la cláusula ORDER BY, siguiendo el ejemplo anterior si se requiere que los datos sean devueltos ordenados por Cliente y luego por fecha, la consulta SQL sería la siguiente: 

SELECT Fecha, Cliente, Estado, SUM (Venta) FROM Ventas WHERE Estado= 'Finalizado' GROUP BY Fecha HAVING SUM (Venta) >600000 AND Cliente = 'Dayra Col' OR Cliente = 'Tomy Lee' ORDER BY Cliente, Fecha


Si se observa la sentencia SQL anterior se ordena por más de un campos, los campos deben ir separados por coma (,); se puede especificar el orden que se requieres es decir Ascendente o Descendente, siempre el orden por defecto es Ascendente; la cláusula del ejemplo quedaría así, en caso que quisiéramos ordenar Cliente en forma Descendente y Fecha en forma Ascendente:

SELECT Fecha, Cliente, Estado, SUM (Venta) FROM Ventas WHERE Estado= 'Finalizado' GROUP BY Fecha HAVING SUM (Venta) >600000 AND Cliente = 'Dayra Col' OR Cliente = 'Tomy Lee' ORDER BY Cliente DESC, Fecha ASC

Otro ejemplo menos complicado donde solo se solicita ordenar se muestra a continuación:

SELECT Fecha, Cliente, Estado, Venta FROM Ventas  ORDER BY Cliente
SELECT Fecha, Cliente, Estado, Venta FROM Ventas  ORDER BY Cliente DESC


Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends