Si alguna vez te has encontrado mirando una hoja de cálculo enorme, con filas y filas de números, nombres y fechas, probablemente hayas sentido que estás frente a un caos. ¡Pero no te preocupes! Porque aprendiendo los comandos en SQL, puedes dominar ese caos y convertirlo en información poderosa.
¿Qué es SQL y por qué deberías aprenderlo? 🤔
Para entender qué es SQL, hagamos una pequeña analogía: imagina que los datos en una base de datos son como libros en una biblioteca. Hay miles de libros (filas) organizados en diferentes categorías (columnas), pero cuando entras en la biblioteca, no puedes simplemente agarrar el libro que quieres al azar. Tienes que pedirle a la bibliotecaria que te lo busque.
En este caso, SQL (Structured Query Language) es el lenguaje que utilizas para «pedir» a la base de datos los datos que necesitas, filtrarlos, ordenarlos o analizarlos de la manera que prefieras. Es el estándar mundial para interactuar con bases de datos relacionales como MySQL, PostgreSQL o BigQuery.
SQL es una habilidad esencial si trabajas con datos, ya seas analista, desarrollador o gestor de proyectos. Es como aprender a andar en bicicleta en el mundo de los datos: puede ser un poco difícil al principio, pero una vez que lo dominas, nunca te lo olvidas.
BigQuery: Tu Plataforma Ideal para Practicar SQL 🚀
Si estás leyendo esto, probablemente te interese aprender SQL, pero no estás seguro de cómo empezar a practicarlo sin tener una base de datos gigante a mano. ¡Aquí es donde entra BigQuery!
BigQuery es una plataforma de análisis de datos en la nube creada por Google. La gran ventaja de BigQuery es que puedes practicar SQL directamente en la nube, lo que significa que no necesitas configurar una base de datos local en tu computadora. Es simple, eficiente y te da acceso a grandes conjuntos de datos en minutos.
¿Lo mejor? Google te da una cuota gratuita de procesamiento de datos cada mes, lo que significa que puedes empezar a practicar sin ningún costo.
¿Cómo Practicar SQL Usando BigQuery? 🛠️
Ahora que tienes una idea de los conceptos básicos de SQL, es hora de llevarlos a la práctica, y BigQuery es el lugar perfecto para hacerlo. Aquí tienes los pasos sencillos para empezar a practicar SQL en BigQuery:
Paso 1: Accede a BigQuery
Si tienes una cuenta de Google, ya tienes acceso a BigQuery. Solo necesitas dirigirte a Google Cloud Console y buscar la herramienta BigQuery.
Paso 2: Sube un Conjunto de Datos
Puedes utilizar conjuntos de datos de prueba que BigQuery te proporciona de manera gratuita o puedes subir tus propios datos. Por ejemplo, usa el archivo de ejemplo que usaré en los ejemplos:
Esta tabla tiene información sobre estudiantes: su nombre, su puntaje en exámenes, las horas que han estudiado, y otros detalles que nos servirán para practicar nuestros comandos SQL. ¡Así que prepárate!
Aquí un tutorial:
Paso 3: ¡Comienza a Escribir Consultas!
Con BigQuery puedes ejecutar consultas en tiempo real, lo que significa que cada vez que escribes una consulta SQL, puedes ver los resultados de inmediato. ¡Es una excelente manera de aprender y practicar!
Observación:
Para llamar de forma correcta en bigquery a nuestra tabla de datos no podemos agregar solamente el nombre la tabla que es student o student_data sino que debemos poner la ruta completa o el ID de la tabla que es como se ve en la imagen:
Generará a cada usuario un nombre distinto de ID como verán es larga pero al abrir las comillas invertidas en la consola ya te sugerirá hacer una llamada un proyecto o a las tablas dentro de las mismas.
Aquí viene un recorrido por los 20 comandos en SQL que te convertirán en un auténtico data master.
Por cuestiones practicas en los ejemplos pondré solo el nombre de nuestra tabla: student_data y no el ID o la ruta completa como vimos en la explicación de Bigquery mas arriba.
20 Comandos Esenciales en SQL
1. SELECT: El Comando que Te Muestra Todo 📋
Comenzamos con lo básico. Si quieres ver lo que hay dentro de una tabla, usas SELECT
. Es como abrir un libro y ver el contenido en su totalidad. Con este comando, puedes ver toda la información o seleccionar columnas específicas.
Ejemplo práctico:
SELECT * FROM student_data;
Este comando te mostrará todo lo que está en la tabla student_data. Pero, ¿qué pasa si solo quieres ver el nombre y el puntaje de examen de los estudiantes?
SELECT name, exam_score FROM student_data;
Ahora tienes solo las columnas que te interesan. Fácil, ¿no?
2. WHERE: Filtrando los Resultados para Ir al Grano 🔎
A veces no necesitas ver toda la tabla. ¿Qué pasa si solo quieres ver a los estudiantes que sacaron más de 70 en el examen? Ahí es donde entra WHERE
. Este comando filtra los resultados para que veas solo lo que necesitas.
Ejemplo práctico:
SELECT name, exam_score FROM student_data WHERE exam_score > 70;
Con esto, verás solo a los estudiantes que obtuvieron más de 70 puntos. ¡Nada de datos irrelevantes!
3. ORDER BY: Ordenando para Tener Más Claridad 📊
Imagina que quieres ver quién obtuvo la mejor calificación en el examen, de mayor a menor. Con ORDER BY
, puedes ordenar los resultados según la columna que elijas, ya sea de manera ascendente o descendente.
Ejemplo práctico:
SELECT name, exam_score FROM student_data ORDER BY exam_score DESC;
Con esto, verás a los estudiantes ordenados de mayor a menor en función de su puntaje de examen.
4. COUNT: Saber Cuántos Estudiantes Cumplen una Condición 📈
¿Te has preguntado cuántos estudiantes pasaron el examen con más de 50 puntos? Con COUNT
, puedes contar cuántos registros cumplen una condición específica.
Ejemplo práctico:
SELECT COUNT(*) FROM student_data WHERE exam_score > 50;
Este comando te dirá cuántos estudiantes sacaron más de 50 en el examen.
5. SUM: Sumando Valores Numéricos 💵
Si quieres sumar algo en tu tabla, como el total de horas que todos los estudiantes han estudiado, usas SUM
.
Ejemplo práctico:
SELECT SUM(hours_studied) FROM student_data;
Este comando te dará el total de horas de estudio de todos los estudiantes.
6. AVG: Promediar los Valores con Estilo 📊
Cuando necesitas saber el promedio de algo, AVG
es tu mejor aliado. Por ejemplo, si quieres saber el promedio de puntaje de examen de todos los estudiantes, solo tienes que usar este comando.
Ejemplo práctico:
SELECT AVG(exam_score) FROM student_data;
Con este comando, puedes ver cuál es el puntaje promedio del examen en tu tabla.
7. GROUP BY: Agrupar para Ver Resúmenes Agrupados 👫👬👭
Supongamos que quieres ver cuántos estudiantes hay en cada ciudad. El comando GROUP BY
agrupa tus datos según una columna y te permite usar funciones como COUNT
, SUM
, AVG
, etc.
Ejemplo práctico:
SELECT city, COUNT(*) FROM student_data GROUP BY city;
Con este comando, verás cuántos estudiantes hay en cada ciudad. ¡Ideal para agrupar resultados!
8. HAVING: Filtrar Después de Agrupar 🧹
Este comando es como el hermano mayor de WHERE
, pero aplicado después de agrupar datos con GROUP BY
. Si quieres ver, por ejemplo, las ciudades que tienen más de 3 estudiantes, usas HAVING
.
Ejemplo práctico:
SELECT city, COUNT(*) FROM student_data GROUP BY city HAVING COUNT(*) > 3;
Con esto, filtrarás las ciudades que tienen más de 3 estudiantes.
9. JOIN: Uniendo Tablas como un Pro 👩💻👨💻
Imagina que tienes dos tablas: una con los estudiantes y otra con las materias que cursan. Si quieres ver qué estudiantes están inscritos en qué materias, puedes usar JOIN
para unir las tablas y mostrar los resultados combinados.
Ejemplo práctico:
SELECT student_data.name, subjects.subject_name
FROM student_data
JOIN subjects ON student_data.subject_id = subjects.subject_id;
Con JOIN
, unes las tablas basadas en una columna común, como subject_id
. Así puedes ver qué estudiantes están cursando qué materias.
10. LEFT JOIN: Incluyendo a Todos, Incluso a los que No Coinciden 🤝
El LEFT JOIN
es como JOIN
, pero incluye todos los registros de la tabla izquierda, incluso si no hay coincidencia en la tabla derecha. Ideal para asegurarte de que no te estás perdiendo nada.
Ejemplo práctico:
SELECT student_data.name, subjects.subject_name
FROM student_data
LEFT JOIN subjects ON student_data.subject_id = subjects.subject_id;
Si hay estudiantes que no están inscritos en ninguna materia, también aparecerán, pero con valores NULL
.
11. DISTINCT: Elimina Duplicados y Ve Solo los Valores Únicos 🔄
Imagina que en tu tabla hay varias ciudades repetidas. Con DISTINCT
, puedes ver solo los valores únicos.
Ejemplo práctico:
SELECT DISTINCT city FROM student_data;
Con este comando, verás una lista de las ciudades sin duplicados. ¡Limpio y ordenado!
12. LIMIT: Muestra Solo los Primeros Resultados 📉
A veces, tienes demasiados resultados y solo quieres ver una muestra pequeña. Ahí es donde entra LIMIT
, que te permite limitar el número de filas que ves.
Ejemplo práctico:
SELECT * FROM student_data LIMIT 10;
Este comando te mostrará solo los primeros 10 registros.
13. CASE: Condiciones Personalizadas en tus Consultas 🔮
Si quieres mostrar resultados basados en condiciones, CASE
es la herramienta perfecta. Es como un «si pasa esto, entonces haz aquello» dentro de SQL.
Ejemplo práctico:
SELECT name, exam_score,
CASE
WHEN exam_score >= 70 THEN 'Aprobado'
ELSE 'Reprobado'
END AS resultado
FROM student_data;
Con este comando, puedes clasificar a los estudiantes como «Aprobado» o «Reprobado» según su puntaje de examen.
14. UPDATE: Actualiza los Datos en Tiempo Real 🔧
Si necesitas modificar información en tu tabla, como cambiar los puntajes de un examen, usas UPDATE
.
Ejemplo práctico:
UPDATE student_data SET exam_score = exam_score + 5 WHERE hours_studied > 10;
Con este comando, puedes actualizar los puntajes de todos los estudiantes que hayan estudiado más de 10 horas, sumándoles 5 puntos.
15. DELETE: Elimina Registros que Ya No Necesitas 🚮
A veces, simplemente tienes que eliminar registros de tu tabla. Con DELETE
, puedes hacer esto de manera segura.
Ejemplo práctico:
DELETE FROM student_data WHERE exam_score < 50;
Con este comando, uedes eliminar a todos los estudiantes que obtuvieron un puntaje menor a 50 en el examen. ¡Adiós a los datos innecesarios!
16. TRUNCATE: Limpia Toda la Tabla de un Solo Golpe 💣
Imagina que necesitas eliminar todos los datos de una tabla, pero quieres mantener la estructura de la tabla intacta para agregar datos nuevos más tarde. En este caso, TRUNCATE
es como presionar el botón de reinicio.
Ejemplo práctico:
TRUNCATE TABLE student_data;
Este comando elimina todos los registros de la tabla, dejando la estructura de la tabla lista para nuevos datos. Cuidado, una vez que lo haces, no hay vuelta atrás.
17. RENAME: Cambiando Nombres como un Maestro del Control ✏️
¿Alguna vez has querido cambiar el nombre de una columna o tabla para que tenga más sentido? RENAME
te permite hacerlo sin problemas.
Ejemplo práctico para renombrar una columna:
ALTER TABLE student_data RENAME COLUMN exam_score TO test_score;
Ahora, la columna «exam_score» se llama «test_score». Esto es útil cuando decides hacer cambios para que tu tabla sea más comprensible.
18. ALTER TABLE: Modificando la Estructura de tu Tabla 🔧
Con ALTER TABLE
, puedes modificar la estructura de una tabla existente. Por ejemplo, agregar una nueva columna, cambiar el tipo de dato de una columna o eliminar columnas que ya no necesitas.
Ejemplo práctico para agregar una nueva columna:
ALTER TABLE student_data ADD COLUMN email VARCHAR(255);
Ahora, tu tabla tiene una nueva columna llamada «email», donde puedes agregar correos electrónicos de los estudiantes.
19. DROP TABLE: El Comando que Borra Todo en un Instante 🔥
Cuando necesitas deshacerte por completo de una tabla, puedes usar DROP TABLE
. Es como borrar un archivo para siempre.
Ejemplo práctico:
DROP TABLE student_data;
Con este comando, la tabla entera desaparece, incluidos todos los datos que tenía. Advertencia: No hay recuperación después de hacer esto, así que úsalo con cuidado.
20. SUBQUERIES: Consultas Dentro de Consultas 🧠
Imagina que necesitas usar el resultado de una consulta dentro de otra consulta. Para eso existen las subconsultas o subqueries. Son como una pequeña consulta dentro de otra más grande.
Ejemplo práctico: Si quieres saber quiénes son los estudiantes que tienen más puntaje que el promedio general:
SELECT name, exam_score
FROM student_data
WHERE exam_score > (SELECT AVG(exam_score) FROM student_data);
Con esto, primero calculamos el puntaje promedio y luego seleccionamos a los estudiantes que están por encima de ese promedio. ¡Es SQL en su máxima expresión!
Recapitulación rápida
Ahora tienes las herramientas necesarias para empezar a controlar, organizar y manipular tus datos como un verdadero pro en SQL. Pero no es solo sobre saber qué comandos usar; también es importante entender cómo pueden ayudarte a resolver problemas del mundo real.
Comando aprendidos:
- SELECT: Para ver tus datos.
- WHERE: Filtra los datos que no necesitas.
- ORDER BY: Ordena los datos de forma ascendente o descendente.
- COUNT, SUM, AVG: Realiza cálculos rápidos en tus columnas.
- GROUP BY: Agrupa tus datos por categorías.
- HAVING: Filtra después de agrupar.
- JOIN: Une datos de varias tablas.
- LEFT JOIN: Incluye todos los registros de una tabla, aunque no haya coincidencia en la otra.
- DISTINCT: Elimina duplicados.
- LIMIT: Muestra solo una cantidad específica de resultados.
- CASE: Usa condiciones dentro de una consulta.
- UPDATE: Modifica registros existentes.
- DELETE: Elimina registros que ya no necesitas.
- TRUNCATE: Limpia la tabla sin eliminar su estructura.
- RENAME: Cambia el nombre de columnas o tablas.
- ALTER TABLE: Modifica la estructura de una tabla.
- DROP TABLE: Borra una tabla completa.
- SUBQUERIES: Usa consultas dentro de otras consultas.
¡Aquí tienes un cheat sheet o «muletilla» de los comandos esenciales de SQL que puedes imprimir y tener a mano! Este resumen incluye los comandos más usados, ejemplos y explicaciones rápidas para que los tengas siempre disponibles.
Operadores Lógicos en SQL ⚙️
1. Operadores de Comparación
=
: Igual a!=
o<>
: Distinto de>
: Mayor que<
: Menor que>=
: Mayor o igual que<=
: Menor o igual que
Ejemplo:
SELECT * FROM student_data WHERE exam_score > 70;
2. Operadores Lógicos
AND
: Ambos deben ser verdaderos.OR
: Uno de los dos debe ser verdadero.NOT
: Niega la condición.
Ejemplo:
SELECT * FROM student_data WHERE exam_score > 70 AND city = 'Madrid';
3. Operador IN
Permite seleccionar valores de una lista. Por ejemplo, si quieres ver estudiantes que viven en ciertas ciudades:
SELECT * FROM student_data WHERE city IN ('Madrid', 'Barcelona', 'Valencia');
4. Operador BETWEEN
Selecciona valores dentro de un rango. Por ejemplo, para ver a los estudiantes que estudiaron entre 10 y 20 horas:
SELECT * FROM student_data WHERE hours_studied BETWEEN 10 AND 20;
5. Operador LIKE
Busca coincidencias de patrones en texto. Usamos %
para cualquier número de caracteres y _
para un solo carácter.
SELECT * FROM student_data WHERE name LIKE 'C%'; -- Nombres que empiezan con C
Funciones Comunes en SQL 📊
COUNT()
: Cuenta el número de registros.SUM()
: Suma los valores de una columna.AVG()
: Calcula el promedio de una columna numérica.MIN()
: Devuelve el valor mínimo de una columna.MAX()
: Devuelve el valor máximo de una columna.
Ejemplo:
SELECT COUNT(*) FROM student_data; -- Cuenta el número de estudiantes
SELECT AVG(exam_score) FROM student_data; -- Promedio de los puntajes de examen
SELECT MAX(hours_studied) FROM student_data; -- Máximas horas estudiadas
Tipos de Datos Comunes en SQL 🛠️
1. VARCHAR(N)
Cadena de caracteres variable de hasta N caracteres de longitud. Utilizado para textos o cadenas alfanuméricas de longitud variable. Por ejemplo, si quieres almacenar nombres que no excedan los 100 caracteres en la columna name
de la tabla student_data
:
name VARCHAR(100); -- Hasta 100 caracteres permitidos
2. INT
Un número entero, utilizado para almacenar valores numéricos sin decimales. Es perfecto para cosas como edades, puntajes o identificadores únicos.
exam_score INT; -- Almacena puntajes enteros del examen
hours_studied INT; -- Almacena el número de horas de estudio
3. DECIMAL(precision, scale)
Almacena números decimales con una precisión fija. La precisión es el número total de dígitos, y la escala es el número de dígitos después del punto decimal. Esto es ideal cuando necesitas controlar el número exacto de decimales, como con precios o promedios precisos.
average_score DECIMAL(5, 2); -- Hasta 5 dígitos en total, con 2 después del decimal
4. DATE
Almacena fechas en formato AAAA-MM-DD
. Este tipo es ideal para almacenar fechas de nacimiento, fechas de examen o cualquier tipo de fecha relacionada.
códigobirth_date DATE; -- Almacena la fecha de nacimiento del estudiante
5. BOOLEAN
Este tipo de dato almacena valores booleanos, es decir, TRUE
o FALSE
. Puede ser útil para columnas como «aprobado» o «reprobado» o para indicar si un registro está activo.
is_active BOOLEAN; -- Indica si el estudiante está activo
SQL Tips: Consejos Rápidos
- Sé específico: Selecciona solo las columnas que necesitas, no uses
SELECT *
a menos que sea necesario. - Comienza con pequeñas consultas: Practica con consultas simples y luego ve complicándolas poco a poco.
- Documenta tu trabajo: Usa comentarios (
-- comentario
) en tu SQL para explicar partes complicadas. - Verifica antes de borrar o actualizar: Siempre prueba tu
SELECT
antes de ejecutar unUPDATE
oDELETE
. - Guarda tus consultas: Mantén un registro de las consultas que funcionaron para ti, ¡será útil más adelante!
¿Qué hago ahora?
La clave para dominar SQL es la práctica constante. Usa la tabla de datos que te proporcioné aquí y comienza a experimentar con estos comandos. Haz preguntas como: «¿Qué pasa si filtro esto?», «¿Qué sucede si uno estas tablas?» o «¿Cómo puedo agrupar estos datos?»
Recuerda: cada base de datos es como un rompecabezas, y con SQL tienes todas las piezas necesarias para armarlo a tu gusto. Así que adelante, lánzate a explorar y a resolver problemas como un verdadero experto en datos. ¡Tu futuro como analista de datos está a solo unos comandos de distancia! 🚀
¿Un último consejo de amigo? La paciencia y la curiosidad son tus mejores aliados. Cada nuevo desafío en SQL es una oportunidad para aprender algo nuevo y mejorar tus habilidades. ¡Desafiate con tareas complejas, aprende a aprender y sigue practicando!