Kitabı oku: «Excel y SQL de la mano»
Excel y SQL de la mano
Primera edición, 2021
© 2021 Joan Pallerola Comamala
© MARCOMBO, S.L. 2021
Diseño de la cubierta: ENEDENÚ DISEÑO GRÁFICO
Corrección: Nuria Barroso y Mónica Muñoz
Directora de producción: M.a Rosa Castillo
Cualquier forma de reproducción, distribución, comunicación pública o transformación de esta obra solo puede ser realizada con la autorización de sus titulares, salvo excepción prevista por la ley. Diríjase a CEDRO (Centro Español de Derechos Reprográficos, www.cedro.org) si necesita fotocopiar o escanear algún fragmento de esta obra.
ISBN: 978-84-267-3341-2
Producción del ePub: booqlab
A Núria, Anna, Gemma y Eduard.No hace falta decir más.
Índice general
INTRODUCCIÓN
CAPÍTULO 1. Bases de datos: qué son y su estructura
1.1. CLASIFICACIÓN DE LAS BASES DE DATOS
1.2. CARACTERÍSTICAS DE LAS BASES DE DATOS
1.2.1. Ventajas de las bases de datos
1.2.2. Desventajas de las bases de datos
1.3. TIPOS DE BASES DE DATOS
1.4. MICROSOFT EXCEL COMO BASE DE DATOS
1.4.1. Requisitos importantes que tener en cuenta
1.4.2. Las funciones de Excel para bases de datos
1.4.3. Ejemplos de las funciones de Excel para bases de datos
CAPÍTULO 2. SQL: el lenguaje de las bases de datos
2.1. CATEGORÍAS DE DATOS
2.2. TIPOS DE DATOS
2.3. TIPOS DE SENTENCIAS SQL
2.4. EJEMPLOS DE SENTENCIAS SQL
2.4.1. Consultas sencillas
2.4.2. Consultas sencillas eliminando registros repetidos
2.4.3. Consultas sencillas con condición
2.4.4. Consultas con ordenación
2.4.5. Consultas con asignación de un alias
2.4.6. Consultas con contadores y agrupación
2.4.7. Consultas de registros vacíos o no vacíos
2.4.8. Consultas por intersección de tablas
2.4.9. Consultas por cruce de tablas
2.4.10. Consultas Self Join
2.4.11. Consultas de unión
2.4.12. Consultas anidadas
2.5. LA AYUDA DE ACCESS PARA SENTENCIAS SQL
2.5.1. Los componentes de Access
2.5.2. Las consultas
2.6. MÁS SENTENCIAS SQL
CAPÍTULO 3. SQL dentro de Excel: Microsoft Query
3.1. EN BUSCA DE MICROSOFT QUERY
3.2. ¿DÓNDE ESTÁ EL SQL?
3.3. VAMOS A PONER MÁS TABLAS
3.4. COMBINAR CAMPOS CON LOS EXISTENTES
3.5. ORDENACIÓN Y FILTROS
3.6. LA CONSULTA EN EXCEL
CAPÍTULO 4. MACROS y SQL: tratamiento de los datos del propio libro
4.1. LAS MACROS DE EXCEL
4.1.1. La primera macro
4.1.2. Tablas en lugar de rangos
4.1.3. Trabajando con rangos variables
4.1.4. Copiando la tabla en otra hoja
4.2. SQL SOBRE LA PROPIA HOJA A TODO GAS
4.2.1. Insertar datos en la base de datos
4.2.2. Delete, Update y alternativas
4.2.3. Búsqueda y referencia
4.2.4. ¿Y las no coincidencias?
4.2.5. Referencias cruzadas versus tablas dinámicas
4.2.6. Búsqueda de duplicados
CAPÍTULO 5. Tratamiento de datos sobre libros de Excel externos
5.1. LAS CADENAS DE CONEXIÓN
5.2. LEYENDO LIBROS EXTERNOS
5.3. CARACTERÍSTICAS DE LOS LIBROS EXTERNOS
5.4. BASES DE DATOS SIN CABECERA
5.5. RECORDSET IN MEMORY
5.6. RECORDSET IN MEMORY PÚBLICO, ACCESIBLE DESDE OTROS PROCEDIMIENTOS
5.7. EXPORTACIÓN A UNA HOJA EXTERNA
CAPÍTULO 6. Interaccionando con Access
6.1. ACCEDIENDO A TABLAS Y CONSULTAS DE ACCESS
6.2. CONSULTAS CON VARIAS TABLAS
6.3. CONCATENACIÓN DE CADENAS
6.4. EXPORTACIÓN DE DATOS DE EXCEL A TABLAS DE ACCESS
6.5. CONECTANDO DOS BASES DE ACCESS EXTERNAS DESDE EXCEL
6.6. ACCEDIENDO A TABLAS A LAS QUE NO SE PERMITE ACCEDER DESDE MICROSOFT QUERY
6.7. CONSULTA DE UN EXCEL DESDE ACCESS O DESDE OTRO EXCEL CON MODIFICACIÓN DE CAMPOS INCLUIDA
6.8. CREAR UNA TABLA EN ACCESS PARTIENDO DE UN EXCEL EXTERNO
CAPÍTULO 7. Interrelación con dBASE
7.1. CONSULTAS DE FICHEROS .DBF
7.2. EXPORTACIÓN DE EXCEL A .DBF
7.3. OTRA OPCIÓN DE LEER LOS FICHEROS .DBF
7.4. FILTROS Y AGRUPACIONES
CAPÍTULO 8. Interrelación con ficheros de texto
8.1. CONSULTAS SOBRE FICHEROS DE TEXTO
8.2. TRASPASO DE UNA CONSULTA A UN FICHERO DE TEXTO
8.3. FSO: FILE SYSTEM OBJECTS, EJEMPLOS Y OPCIONES
CAPÍTULO 9. Excel y SQL Server
9.1. CONSULTAS SOBRE TABLAS DE SQL SERVER
9.2. LISTAR TODAS LAS TABLAS DE SQL SERVER
9.3. GUARDAR UNA CONSULTA DE EXCEL EN SQL SERVER
9.4. RESTABLECER FORMATOS EN IMPORTACIONES DE SQL SERVER
9.5. EJECUTAR PROCEDIMIENTOS ALMACENADOS
9.6. MODIFICACIÓN Y/O BORRADO DE REGISTROS DE UNA TABLA DE SQL SERVER
9.7. CAMBIO DE LAS CARACTERÍSTICAS DE UN CAMPO DE UNA TABLA
9.8. BÚSQUEDA EN SQL SERVER MEDIANTE ÍNDICES
CAPÍTULO 10. Consideraciones finales: pequeñas herramientas
10.1. CLONACIÓN DE UN RECORDSET
10.2. ANIDAMIENTO DE SENTENCIAS SQL
10.3. NUMERACIÓN DE REGISTROS
10.4. CREACIÓN DE CAMPO CON UN SELECT EN LA PROPIA TABLA
10.5. CREAR ACUMULADOS DE UN CAMPO
10.6. CALCULAR LAS DIFERENCIAS DE UN CAMPO CON EL ANTERIOR
10.7. CAMBIO DE NOMBRE DE UN CAMPO
INTRODUCCIÓN
Las bases de datos en nuestra sociedad están a la orden del día: contabilidad, nóminas, ventas, almacén y movimientos, visitas a la web... ¿Nos sirven de algo si no los analizamos? La respuesta es simple y es evidente: si no lo hacemos, de poco servirán. Y, puestos ya a manipular grandes cantidades de datos, ¿no nos hemos encontrado muchas veces que se ha colgado el ordenador sin haber grabado previamente y hemos tenido que volver a empezar trabajando con Excel?
Una de las muchas preguntas sobre este tema que seguramente todos, en un momento u otro, contestaríamos afirmativamente.
Estos pequeños apuntes que encontrará a continuación no pretenden ser una disertación ni un gran análisis sobre bases de datos, sino aportar a los usuarios que tienen que bregar cada día con ellas una serie de herramientas para facilitar su trabajo: primero, el más manual, como puede ser la obtención, copia, selección y filtros desde y hacia otras bases y, segundo, con un ahorro de tiempo que el primer punto facilita, realizar el análisis, que es lo más importante.
El lenguaje SQL tiene una gran potencia. Y desgraciadamente, pudiéndose emplear con Excel para aprovecharlo, se utiliza más bien poco. Incluso muchos usuarios desconocen la herramienta de Microsoft Query que lleva incorporada desde hace bastantes versiones, concretamente desde la del 97.
La información que se detalla a continuación va destinada a todos los que utilizan Excel, sean del sector que sean, ya que les será de utilidad. Muchos ejemplos están basados en contabilidad (porque es mi sector), pero en cuanto a las bases de datos da lo mismo el sector que sea uno. Siempre se encontrará una aplicación que facilitará el trabajo que realizar.
La idea de escribirla y la ilusión en hacerlo es que sirvan a muchos que, como yo, si lo hubiésemos sabido antes, nos habría facilitado el trabajo.
Para acabar esta pequeña introducción, todos los ejemplos se pueden descargar de la web de la editorial Marcombo para poder probar los ejemplos a medida que los vaya leyendo y evitar el engorro de copiarlos. La página web donde se pueden descargar es www.marcombo.info, en el apartado de los contenidos adicionales, a los que se accede mediante el código que se encuentra enmarcado en las primeras páginas de este libro.
Todas las macros expuestas en este libro las encontrará en los distintos libros de Excel descargables. Muchas de ellas con más anotaciones y opciones de las que se encuentran aquí. Estas amplían sin duda los puntos expuestos. También hay un libro de Excel con una macro que permite buscar una determinada macro, indicando en qué libro y módulo está.
Animamos al lector a que se adentre en el campo de las bases de datos sin ningún miedo, porque podrá analizarlas y encontrar siempre una nueva idea, explicación o causa con una herramienta muy sencilla pero también muy potente, la hoja de cálculo Excel. Si con este libro se logra este objetivo, habrá valido el esfuerzo de recopilación que ha hecho posible estas páginas.
CAPÍTULO 1.
Bases de datos: qué son y su estructura
Una base de datos es un conjunto de información perteneciente a un mismo contexto, ordenada de modo sistemático para su posterior análisis. Obviamente, de este análisis se debe obtener una información relevante y útil.
Actualmente existen muchas formas de bases de datos: basta ver a nuestro alrededor, tanto en el mundo de la empresa, como la contabilidad, los ficheros de personal y nóminas, los movimientos de almacén, las ventas y los distintos clientes con los productos demandados..., hasta los de la vida ordinaria, como los datos almacenados en la web, en la nube, los que manejamos con el teléfono, hoteles a los que accedemos a través de un clic, etc. Se podrían llenar hojas y hojas con listas interminables.
Las bases de datos son el producto de la necesidad humana de almacenar la información para preservarla del tiempo y el deterioro y poder acudir a ella posteriormente. Y, con la ayuda de los ordenadores, apareció un medio indispensable en la actualidad para guardar enormes cantidades de datos en espacios físicos limitados.
El manejo de las bases de datos se lleva a cabo mediante sistemas de gestión, llamados DBMS (Database Management Systems) o sistemas de gestión de bases de datos, digitales y automatizados, que permiten el almacenamiento ordenado y la rápida recuperación de la información.
En la conformación de una base de datos se pueden seguir diferentes modelos y paradigmas, cada uno dotado de características, ventajas y dificultades, haciendo énfasis en su estructura organizativa, su jerarquía, su capacidad de transmisión o de interrelación, etc.
1.1 CLASIFICACIÓN DE LAS BASES DE DATOS
Existen diferentes clasificaciones de las bases de datos, atendiendo a distintas características y necesidades:
Según su variabilidad: Conforme a los procesos de recuperación y preservación de los datos, podemos hablar de:
• Bases de datos estáticas. Son las típicas de las áreas de análisis histórico, siendo bases de datos de solo lectura, de las que se puede extraer información, pero no modificarla. En el mundo de la empresa podría ser el diario de contabilidad de un ejercicio cerrado al que se acudirá para realizar consultas.
• Bases de datos dinámicas. Además de las operaciones básicas de consulta que se han visto en el punto anterior, estas bases de datos manejan procesos de actualización, reorganización, añadidura y borrado de información. Continuando en el mundo de la empresa, sería el diario del ejercicio actual al que se van añadiendo los asientos que se van produciendo por la actividad de la misma. Los movimientos de almacén o los clics de los visitantes de nuestra web.
Según su contenido: De acuerdo con la naturaleza de la información contenida, pueden ser:
• Bibliográficas. Contienen material diverso de lectura, como libros, revistas y similares, ordenado a partir de información clave como son los datos del autor, del editor, del año de aparición, del área temática o del título del libro, entre otras características.
• De texto completo. Textos históricos o documentales, cuya preservación debe ser primordial, considerándose fuentes primarias.
• Directorios. Listados enormes de datos personalizados o de direcciones de correo electrónico, números telefónicos, etc.
• Especializadas. Bases de datos de información muy especializada o técnica, pensadas a partir de las necesidades puntuales de un público determinado que consume dicha información. En el mundo de la empresa se encontrarían las bases de datos contables, diario, plan de cuentas, diario de ventas y compras, personal y nóminas, movimientos de almacén y sus correspondientes artículos, historiales de personal, médicos, pacientes, etc.
Por tanto, se define una base de datos como una serie de datos organizados y relacionados entre sí, los cuales se recolectan y explotan por los sistemas de información de una empresa, negocio en particular, entidad, etc.
1.2 CARACTERÍSTICAS DE LAS BASES DE DATOS
Entre las características más importantes de las bases de datos, podemos enumerar las siguientes:
• Independencia lógica y física de los datos
• Redundancia mínima
• Acceso concurrente por parte de múltiples usuarios
• Integridad de los datos
• Consultas complejas optimizadas
• Seguridad de acceso y auditoría
• Respaldo y recuperación
• Acceso a través de lenguajes de programación estándar
Y, de acuerdo con todo ello, las ventajas y desventajas de las bases de datos podrían ser las que se enumeran en los puntos siguientes.
1.2.1 Ventajas de las bases de datos
Control sobre la redundancia de datos. Los sistemas de ficheros pueden almacenar varias copias de los mismos datos en ficheros distintos. Si se produce esto, se desperdicia espacio de almacenamiento, además de provocar la falta de consistencia de datos. En los sistemas de bases de datos todos estos ficheros están integrados, por lo que no se almacenan varias copias de los mismos datos.
Consistencia de datos. Eliminando o controlando las redundancias de datos se reduce en gran medida el riesgo de que haya inconsistencias. Si un dato está almacenado una sola vez, cualquier actualización se debe realizar también solo una vez. Así estará disponible para todos los usuarios inmediatamente. Si un dato está duplicado y el sistema conoce esta redundancia, el propio sistema debe encargarse de garantizar que todas las copias se mantienen consistentes. Por desgracia, no siempre es así.
Compartir datos. En los sistemas de ficheros, estos pertenecen a las personas o a los departamentos que los utilizan. Pero, en los sistemas de bases de datos, estas pertenecen a la empresa y pueden ser compartidas por todos los usuarios que estén autorizados.
Mantenimiento de estándares. Gracias a la integración es más fácil respetar los estándares necesarios, tanto los establecidos a nivel de la empresa como los nacionales e internacionales. Estos estándares pueden establecerse sobre el formato de los datos para facilitar su intercambio; pueden ser estándares de documentación, procedimientos de actualización y también reglas de acceso.
Mejora en la integridad de datos. La integridad de la base de datos se refiere a la validez y la consistencia de los datos almacenados. Normalmente, la integridad se expresa mediante restricciones o reglas que no se pueden violar. Estas restricciones se pueden aplicar tanto a los datos como a sus relaciones, y es el SGBD, sistema de gestión de bases de datos, quien se debe encargar de mantenerlas.
Mejora en la seguridad. La seguridad de la base de datos es la protección de esta frente a usuarios no autorizados. Sin unas buenas medidas de seguridad, la integración de datos en los sistemas de bases de datos hace que estos sean más vulnerables que en los sistemas de ficheros.
Mejora en la accesibilidad a los datos. Muchos SGBD proporcionan lenguajes de consultas o generadores de informes que permiten al usuario hacer cualquier tipo de consulta sobre los datos, sin que sea necesario que un programador escriba una aplicación que realice tal tarea.
Mejora en la productividad. El SGBD proporciona muchas de las funciones estándar que el programador necesita escribir en un sistema de ficheros. A nivel básico, el SGBD proporciona todas las rutinas de manejo de ficheros típicas de los programas de aplicación. Al programador, el hecho de disponer de estas funciones le permite centrarse en la función específica requerida por los usuarios, sin tener que preocuparse de los detalles de implementación de bajo nivel.
Mejora en el mantenimiento. En los sistemas de ficheros, las descripciones de los datos se encuentran inmersas en los programas de aplicación que los manejan. Esto hace que los programas sean dependientes de los datos, de modo que un cambio en su estructura, o un cambio en el modo en que se almacena en disco, requiere cambios importantes en los programas cuyos datos se ven afectados. Sin embargo, los SGBD separan las descripciones de los datos de las aplicaciones. Esto es lo que se conoce como independencia de datos, gracias a la cual se simplifica el mantenimiento de las aplicaciones que acceden a la base de datos.
Aumento de la concurrencia. En algunos sistemas de ficheros, si hay varios usuarios que pueden acceder simultáneamente a un mismo fichero, es posible que el acceso interfiera entre ellos de modo que se pierda información o se pierda la integridad. La mayoría de los SGBD gestionan el acceso concurrente a la base de datos y garantizan que no ocurran problemas de este tipo.
Mejora en los servicios de copias de seguridad. Muchos sistemas de ficheros dejan que sea el usuario quien proporcione las medidas necesarias para proteger los datos ante fallos en el sistema o en las aplicaciones. Los usuarios tienen que hacer copias de seguridad cada día y, si se produce algún fallo, utilizar estas copias para restaurarlas. En este caso, todo el trabajo realizado sobre los datos desde que se hizo la última copia de seguridad se pierde y se tiene que volver a realizar. Sin embargo, los SGBD actuales funcionan de modo que se minimiza la cantidad de trabajo perdido cuando se produce un fallo.
1.2.2 Desventajas de las bases de datos
Complejidad. Los SGBD son conjuntos de programas que pueden llegar a ser complejos con una gran funcionalidad. Es preciso comprender muy bien esta funcionalidad para poder realizar un buen uso de ellos.
Coste del equipamiento adicional. Tanto el SGBD como la propia base de datos pueden hacer que sea necesario adquirir más espacio de almacenamiento. Además, para alcanzar las prestaciones deseadas, es posible que sea necesario adquirir una máquina más grande o que se dedique solamente al SGBD. Todo esto hará que la implantación de un sistema de bases de datos sea más cara.
Vulnerable a los fallos. El hecho de que todo esté centralizado en el SGBD hace que el sistema sea más vulnerable ante los fallos que puedan producirse. Por ello, deben tenerse copias de seguridad, llamadas backup.
1.3 TIPOS DE BASES DE DATOS
Entre los diferentes tipos de base de datos, podemos encontrar los siguientes:
MySql: Es una base de datos con licencia GPL (General Public License), aunque solo en parte, basada en un servidor. Se caracteriza por su rapidez. No es recomendable para grandes volúmenes de datos.
PostgreSql y Oracle: Son sistemas de base de datos poderosos. Administran muy bien grandes cantidades de datos, y suelen ser utilizadas en intranets y sistemas de gran calibre.
Access: Es una base de datos desarrollada por Microsoft. Esta base de datos debe ser creada bajo el programa Microsoft Access, el cual crea un archivo .mdb o .accdb.
Microsoft SQL Server: Es una base de datos más potente que Access desarrollada por Microsoft. Se utiliza para manejar grandes volúmenes de informaciones.
Estas bases de datos poseen muchos elementos en común, y todas ellas con el siguiente orden jerárquico:
1. Tablas
2. Campos
3. Registros
4. Lenguaje SQL
El lenguaje SQL es el más universal en los sistemas de base de datos. Este lenguaje permite realizar consultas a las bases de datos para mostrar, insertar, actualizar y/o borrar información.
Cada base de datos se compone de una o más tablas que guardan un conjunto de datos. Cada tabla se compone de una o más columnas, llamadas campos, y también de filas, que se denominan registros. Las columnas o campos guardan una parte de la información y el conjunto de campos conforman un registro, de acuerdo con el siguiente gráfico:
Los campos que se pueden ver en la figura anterior, cuyo nombre es DIARIO, son FECHA, SUBCTA, CONCEPTO, DEBE, HABER, MES y 3DIG.
El conjunto de estos campos conforma un registro. El registro carece de nombre; solo tiene un número de orden, que será el que tenga porque le toca, pero se podrán ordenar con base en distintos criterios.
En este caso se podría ordenar por FECHA o por SUBCTA, o por la combinación de varios campos, subordinados los posteriores a los anteriores. Sería el caso de ordenar por FECHA y luego por SUBCTA.
El lenguaje que sirve para realizar estas operaciones es el lenguaje SQL, que tiene variantes según las bases de datos. No es exactamente el mismo el que se utiliza en SQL Server del que se utiliza en MySql o Access, a pesar de que algunos programas o sistemas sean de un mismo fabricante. Aunque, frente a esta dificultad, la ventaja es que son muy parecidos. Sirva esto de consuelo.
Si se quiere enlazar datos de una tabla con otra, aparecen las CONSULTAS o QUERIES. Para ello debe haber un campo en cada tabla que sirva de nexo entre ellas. Sería el caso del campo SUBCTA en la figura vista anteriormente, con el campo CUENTA en una tabla del plan de cuentas. De esta manera, de una forma práctica se evitará la redundancia de datos.
Y otra ventaja de las consultas es que, establecido el nexo, se pueden seleccionar todos los campos de ambas tablas o los campos de una u otra que se necesiten. Y, además, se pueden crear nuevos campos que provengan de los existentes: podría ser el caso de un nuevo campo que podría llamarse AÑO, obtenido por la aplicación de la función YEAR sobre el campo FECHA.
El tratamiento de la consulta obtenida sería parecido al que se realiza en una tabla existente. Y la consulta, que tal y como se ha explicado se ha realizado vinculando dos tablas, se podría hacer con más tablas.
Y, en lugar de un solo nexo, puede haber varios:
En este caso, se relacionan dos tablas: CoDia y CoPla. Una es un diario contable que tiene el código de cuenta en DIACTA, al que le falta la descripción, que está en CoPla, para evitar redundancias. Si se modifica esta descripción en CoPla, quedará modificada en todas las consultas que se hagan porque en estas se relaciona la empresa con el código de cuenta.
La flecha indica que en el caso de que no se encuentre la correspondiente cuenta de CoDia en CoPla, se muestre la cuenta de CoDia sin descripción. Si no hubiese ninguna flecha, solo se mostrarían los campos coincidentes. Más adelante, en el capítulo dedicado a las consultas de Access o del Query de Excel, ya se verá cómo se indica esta condición.
La selección de los campos que aparecen en la consulta puede ser selectiva o hacer que aparezcan todos. Esto último suele ser pesado, a no ser que haya pocos campos en las tablas constitutivas de las consultas.
En este ejemplo, se han seleccionado diversos campos de la tabla CoDia; un campo, PLADES, de la tabla CoPla, y el campo DEBE, resultante de aplicar una función a un campo de CoDia.
Esta consulta se ha realizado con el programa Microsoft Access, que permite crearlas en un entorno gráfico en casi su totalidad. Y también permite obtener la sentencia SQL que la conforma. En este caso esta sentencia sería:
En el capítulo dedicado al lenguaje SQL se analizará cómo se elaboran estas instrucciones.