Guía introductoria a SQL: Día 1
Índice de contenido
Resumen:
La capacidad de trabajar con SQL se está convirtiendo en una habilidad cada vez más demandada, tanto para los desarrolladores de software como para las personas que desempeñan funciones menos técnicas. Si está interesado en aprender SQL y no tiene experiencia previa con él, este curso será su luz en un túnel oscuro.
¿Cómo citar el presente artículo?
Romero, J. (15 de agosto de 2020). Guía introductoria a SQL: Día 1. Python-Data-Analyst. https://www.python-data-analyst.com/post/gisql/dia_1/.
Guía introductoria a SQL: Día 1 by Jeshua Romero Guadarrama, available under Attribution 4.0 International (CC BY 4.0) at https://www.python-data-analyst.com/post/gisql/dia_1/.
Día 1. Introducción a SQL
Objetivos
El curso Comenzará cubriendo los conceptos básicos de SQL; es decir, cómo crear una base de datos, insertar, consultar y actualizar datos. También aprenderá conceptos fundamentales que los desarrolladores y científicos de datos utilizan todos los días (operaciones con varias tablas, consultas anidadas y cómo configurar vistas).
En todo momento, podrá ejecutar consultas SQL en su navegador y ver los resultados en tiempo real; no tendrá que preocuparse por la configuración.
Al final de este curso, también obtendrá práctica con preguntas comunes en entrevistas de SQL, de modo que cuando llegue el momento, estará listo y seguro para responder cualquier pregunta que se le presente. ¡Empecemos!
Introducción
A lo largo de la historia, los humanos han tratado de almacenar información de una forma u otra. Los egipcios inscribieron jeroglíficos en las paredes de las tumbas, el papiro y la madera ya en 3200 a. C. para preservar su mensaje para la posteridad. En los últimos siglos, el papel se ha utilizado como medio para almacenar información. Instrumento que no tenía rival hasta el siglo XX, cuando el almacenamiento electrónico y la recuperación de información se convirtieron en algo común.
Figura 1. Jeroglíficos egipcios.
La base de datos relacional y su primo, el lenguaje de consulta estructurado, han potenciado las aplicaciones y ofertas de compañías populares de Internet desde el comienzo de la revolución misma del Internet. De hecho, el destino en línea más popular para los desarrolladores, Stack Overflow, ejecuta un servidor SQL. El advenimiento de las tecnologías Big Data y NoSQL no ha puesto de moda las bases de datos relacionales o SQL. Dichas tecnologías sirven a casos de uso diferentes y complementarios, aunque existe una superposición en las capacidades de ambos. Aprender y dominar SQL puede ser un gran activo cuando se quiere empezar una carrera en el mundo de la tecnología, ya que cualquier aplicación significativa tendrá una base de datos relacional que se ejecuta bajo el capó, y SQL es el estándar de facto para interactuar con él. La familiaridad con SQL paga ricos dividendos, incluso en el ámbito del Big Data, ya varios sistemas de software como Hive y Phoenix contemplan interfaces y sintaxis similares a SQL para los usuarios finales.
Figura 2. Bases de Datos/SQL/Internet.
Audiencia prevista
Echamos un nuevo vistazo al aprendizaje del lenguaje de consulta estructurado omnipresente al proporcionar a los usuarios una vista completa a los comandos SQL más utilizados. La elección de comandos se fundamenta en el popular software código abierto MySQL. La audiencia prevista de este curso son profesionales, no expertos en tecnología, que ocasionalmente pueden usar SQL para análisis e informes. Además, las personas que son principiantes o que luchan con SQL también pueden beneficiarse del curso.
¿Qué esperar?
El curso está estructurado para proporcionar una visión general, breve y superficial de la teoría detrás de las bases de datos y la jerga de la industria relacionada. El curso intencionalmente no se sumerge profundamente en la teoría de las bases de datos y, en cambio, se enfoca más en el aprendizaje práctico. Para las personas interesadas en el aprendizaje teórico, recomendamos consultar el curso de Fundamentos de diseño de bases de datos. Más tarde, nos sumergimos en aprender SQL con ejemplos. Cada lección viene con un ejemplos interactivos para que el lector pueda copiar y probar las consultas de la lección en el momento oportuno, tal como la mayoría de los lectores experimentarían en entornos de trabajo reales. Finalmente, terminaré el curso con rigurosos cuestionarios y preguntas comunes en las entrevistas de trabajo. El objetivo es elevar las habilidades de SQL del lector a un nivel intermedio y permitir que el lector salte fácilmente a las entrevistas de trabajo sobre SQL partiendo del conocimiento propio de un principiantes y llegando hasta un nivel intermedio.
Relacional versus no relacional
Existen una gran cantidad de términos y jerga que pueden ser confusos al comenzar a leer sobre los datos y su almacenamiento. Proporcionaremos aclaraciones en varios términos a continuación:
Figura 3. Evolución de las tecnologías de almacenamiento.
Datos
Los datos ( plural de dato ) se definen como distintos tipos de información.
Los datos pueden existir en varias formas diferentes: números, texto, bytes, imágenes de Instagram o videos de YouTube. Estos representan varios tipos de datos que pueden almacenarse y transmitirse electrónicamente. Resulta importante mencionar que los datos generalmente se interpretan en un contexto; por ejemplo, los datos que representan una prosa en el idioma español no se pueden interpretar como una imagen y viceversa.
En general, hay tres categorías de datos:
- Datos estructurados: Al respecto, tienen alguna propiedad organizativa predefinida que los hacen fácilmente buscables y analizables. Los datos están respaldados por un modelo que dicta el tamaño de cada campo de los datos: su tipo, longitud y cualquier restricción sobre los valores que puede asumir. Los datos almacenados en bases de datos SQL están estructurados. Los datos estructurados generalmente se formatean de una manera universalmente comprensible e identificable. En la mayoría de los casos, un esquema especifica formalmente datos estructurados. Cada vez que trabaja en cualquier variante de SQL, casi siempre se trabaja con datos estructurados.
- Datos no estructurados: Se caracterizan por una falta de organización y un modelo de datos que describe la estructura de un solo registro o atributo de cualquier campo individual dentro del registro. Videos, audio, blogs, archivos de registro, publicaciones en redes sociales, entre otros, son ejemplos de datos no estructurados. Son datos sin ninguna definición o tipo conceptual.
- Datos semiestructurados: Son un cruce entre datos estructurados y no estructurados; es decir, aunque no existe un modelo de datos explícito o una definición de estructura, uno puede estar implícito. Los datos semiestructurados contienen etiquetas semánticas, pero no se ajustan a la estructura asociada a las típicas bases de datos relacionales. Los ejemplos incluyen datos JSON y XML, ya que se encuentran entre el espectro de datos estructurados y no estructurados. Otro ejemplo a considerar es el de los metadatos relacionados con videos y archivos de audios, que se incluyen en datos no estructurados (los metadatos como creador, último acceso, permisos, entre otros, pueden considerarse datos semiestructurados).
Ahora bien, los datos semiestructurados contienen ciertas partes que están estructuradas y otras que no. Por ejemplo, los rayos X y otras imágenes grandes consisten en gran parte en datos no estructurados que comprenden millones de píxeles. Resulta imposible buscar y consultar estas imágenes de rayos X de la misma manera que se puede buscar, consultar y analizar una gran base de datos relacional. Sin embargo, aunque los archivos en sí consisten en solo píxeles, existe una pequeña sección conocida como metadatos dentro de cada archivo que consta de detalles como autor, marca de tiempo de creación, último acceso, etc. Estos metadatos permiten algún tipo de análisis de datos no estructurados.
Lo puntos anteriores nos lleva a la siguiente pregunta: Si todos los datos no estructurados tienen metadatos asociados, ¿cuál es la diferencia entre los datos semiestructurados y no estructurados? Hoy en día, casi no hay datos verdaderamente no estructurados (sin organización ni metadatos). De hecho, la distinción entre datos semiestructurados y no estructurados es una especie de área gris y en constante disputa. Sin embargo, ambos están lejos de los datos estructurados rigurosamente organizados que viven en bases de datos relacionales. A menudo, lo que se conoce como datos no estructurados, como videos, imágenes, documentos, publicaciones en redes sociales, archivos, entre otros, son realmente datos semiestructurados. Sin embargo, por simplicidad, los datos generalmente se dividen y describen como estructurados o no estructurados.
En este curso, trataremos exclusivamente con datos estructurados.
Sistema de administración de bases de datos (DBMS)
Por lo general, cuando nos referimos a bases de datos como MySQL y PostgreSQL, estamos hablando de un sistema de gestión, llamado sistema de administración de bases de datos. Es un software que permite al usuario crear, mantener y eliminar múltiples bases de datos individuales. Proporciona servicios periféricos e interfaces para que el usuario final interactúe con las bases de datos.
Base de datos
Una base de datos es una recopilación de datos organizada y estructurada, generalmente almacenada y establecida electrónicamente.
La estructura y organización de los datos ayuda a una recuperación eficiente de los mismos.
En general, hay dos tipos de bases de datos:
- Bases de datos relacionales o SQL
- Bases de datos no relacionales o NoSQL
En este curso, nuestro enfoque se centrará en las bases de datos relacionales.
Bases de datos relacionales / SQL
Las bases de datos relacionales consisten en datos almacenados como filas en tablas. Las columnas de una tabla siguen rígidamente un esquema definido que describe el tipo y el tamaño de los datos que puede contener una columna de tabla (es como un esquema predefinidio o plan de cómo debería ser cada registro o fila de la tabla). En consecuencia, las bases de datos relacionales solo manejan datos estructurados, en vista de que las tablas generalmente tienen una columna como clave, que se utiliza para identificar de manera única cada fila en una tabla. Una relación entre dos tablas se define mediante una columna o un conjunto de columnas que se encuentran en ambas tablas.
Los sistemas de administración de bases de datos relacionales (RDBMS) son tecnologías maduras y ampliamente adoptadas. Las implementaciones populares incluyen Oracle, DB2, Microsoft SQL Server, PostgreSQL y MySQL.
Bases de datos no relacionales / NoSQL
El auge de las compañías de Web 2.0 hizo populares las bases de datos NoSQL. A medida que los conjuntos de datos manejados por las compañías de Internet crecieron cada vez más, surgió un nuevo enfoque para diseñar bases de datos. El esquema estricto de una base de datos relacional se rechazó a favor de una base de datos sin esquema. Las bases de datos NoSQL vienen en diferentes formas y abordan diferentes casos de uso. El espectro incluye el almacenamiento de valores-clave (Redis, Amazon Dynamo DB), columnas (HBase, Cassandra), documentos (Mongo DB, Couchbase), bases de datos gráficas (Neo4J) y motores de búsqueda (TAG, ElasticSearch, Splunk). La distinción principal entre estas bases de datos NoSQL y las bases de datos SQL es la ausencia de un esquema rígido en el primero. Así pues, las bases de datos NoSQL (los datos no estructurados y semiestructurados) caen en el campo del Big Data.
Big Data
El Big Data generalmente incluye conjuntos de datos con tamaños más allá de la capacidad de las herramientas de software tradicionales (tecnologías SQL) para capturar, seleccionar, administrar y procesar datos dentro de un tiempo transcurrido tolerable. El “Big” en el concepto Big Data implica un estándar que cambia a un número mayor a medida que las capacidades de software y hardware mejoran para procesar mayores volúmenes de datos.
Historia y arquitectura de MySQL
SQL significa Lenguaje de Consulta Estructurado, pero inicialmente se conceptualizó como Lenguaje de Consulta Estructurado en Inglés SEQUEL. El nombre fue cambiado de SEQUEL a SQL porque otra compañía ya tenía los derechos de autor de SEQUEL. SQL fue desarrollado originalmente por dos ingenieros de IBM para manipular los datos almacenados en una base de datos desarrollada por IBM, que se cimentó en cierta medida en el modelo relacional para bases de datos.
Estándar e implementaciones de SQL
SQL fue aceptado como estándar por ANSI en 1986 e ISO en 1987. Ha sido revisado varias veces. En este contesto, varias compañías crearon sus propias implementaciones de este estándar. El estándar puede considerarse como la estructura que describe el comportamiento, mientras que la implementación real consiste en MySQL, SQL Server, PostgreSQL, etc.
Las implementaciones de varios proveedores son similares porque todas cumplen con el mismo estándar. Sin embargo, hay algunas diferencias en la sintaxis. Las implementaciones populares incluyen Oracle RDBMS, IBM DB2, Microsoft SQL Server, Teradata, y MySQL.
SQL es importante porque muchas compañías tienen bases de datos basadas en el modelo relacional que funcionan con tecnologías relacionadas con SQL.
Figura 4. Implementaciones de SQL.
MySQL consta de diferentes componentes que discutiremos en esta lección. MySQL se basa en una arquitectura cliente-servidor. Las aplicaciones como un sitio web o el cliente que programa en la línea de comandos MySQL se conectan e interactúan con las bases de datos a través del servidor MySQL y dicho servidor responde a las consultas de los clientes. Hay tres capas en las que podemos dividir MySQL:
- Aplicación / Capa para clientes.
- Capa del servidor MySQL.
- Capa del motor de almacenamiento.
Aplicación / Capa de clientes
La capa de aplicación es responsable de las conexiones del cliente, la autorización, la autenticación y la seguridad.
Capa del servidor MySQL
La capa del servidor es responsable de analizar, procesar y optimizar las consultas enviadas. Además, también mantiene cachés y tampones. MySQL proporciona otras funciones integradas, como la recuperación y la partición de respaldo que también se manejan en esta capa. Por último, la interfaz SQL para interactuar con la base de datos también es parte de esta capa.
Esta capa también se conoce como motor relacional, ya que la salida consiste en un plan de ejecución de consultas que alimenta al motor de almacenamiento. El motor de almacenamiento luego modifica o recupera datos según el plan.
Capa del motor de almacenamiento
El motor de almacenamiento es la parte del DBMS que realmente escribe y recupera datos del medio de almacenamiento físico subyacente. En el caso de MySQL, la arquitectura permite al usuario elegir el motor de almacenamiento entre un conjunto dado de posibilidades. Los diferentes motores de almacenamiento se adaptan a las necesidades de los casos de uso específicos que abordan. Por ejemplo, el motor de almacenamiento InnoDB admite restricciones y transacciones de clave externa, mientras que MyISAM es mucho más simple, carece de esas dos características pero es más adecuado para aplicaciones de un solo usuario.
Figura 5. Capas del servidor MySQL.
El presente blog ha sido patrocinado mediante crowdfunding con el siguiente mensaje:
Nuestro Señor Jesucristo, el único Dios verdadero, es misericordioso y nuestro Salvador.