¿Qué es SQL?

¿Qué es SQL? Explicación de por qué en Rails casi no se usa SQL y del papel de ActiveRecord. Resolución de la confusión de los desarrolladores novatos.

bamchi 497

¿Qué es SQL? ¿Y por qué en Rails casi no usamos SQL? - La razón de ser de ActiveRecord

Muchos desarrolladores novatos se confunden en este punto.

  • ¿No se necesita SQL al usar una base de datos?
  • ¿Pero en Rails, cómo funciona un servicio web sin usar SQL?
  • ¿Qué papel juega ActiveRecord para que esto sea posible?

Este texto explica claramente ese punto central.


1⃣ ¿Qué es SQL? (Resumen de la esencia)

SQL (Structured Query Language) es
el lenguaje oficial para interactuar con bases de datos.

Se utiliza SQL al solicitar operaciones en la base de datos.

Ejemplo:

SELECT * FROM users WHERE age > 20;

Esta sentencia significa
"traer registros de la tabla de usuarios donde la edad es mayor de 20".

Las cuatro cosas que se pueden hacer con SQL se resumen en:

  1. Crear - Crear datos
  2. Leer - Leer datos
  3. Actualizar - Actualizar datos
  4. Eliminar - Eliminar datos

Es decir, CRUD.

Todos los servicios web, en última instancia,
solicitan operaciones CRUD en la base de datos a través de SQL.


2⃣ Pero en Rails, casi no usamos SQL. ¿Por qué? Porque existe ActiveRecord.

Uno de los componentes principales de Rails es ActiveRecord.

ActiveRecord es un ORM (Mapeo Objeto-Relacional).

¿Qué significa esto?


3⃣ ¿Qué es un ORM? Un sistema que conecta automáticamente "objetos ↔ base de datos (tablas)"

Los lenguajes de programación utilizan objetos.

usuario = Usuario.new(nombre: "bamcoding")

Las bases de datos utilizan registros.

Fila 1 de la tabla de usuarios

La función del ORM es una sola:

Conectar automáticamente el "objeto del mundo Ruby" con el "registro del mundo de la base de datos".

De esta manera, podemos manejar la base de datos
como si estuviéramos manejando objetos.


4⃣ Reemplazando SQL con ActiveRecord

Ejemplo 1) Leer datos (Read)

SQL:

SELECT * FROM users;

Rails:

Usuario.all

Ejemplo 2) Búsqueda condicional

SQL:

SELECT * FROM users WHERE age > 20;

Rails:

Usuario.where("age > 20")

O de manera más "Ruby":

Usuario.where(age: 21..)

Ejemplo 3) Crear

SQL:

INSERT INTO users (nombre, edad) VALUES ('bamcoding', 34);

Rails:

Usuario.create(nombre: "bamcoding", edad: 34)

Ejemplo 4) Actualizar

SQL:

UPDATE users SET edad = 35 WHERE id = 1;

Rails:

usuario = Usuario.find(1)
usuario.update(edad: 35)

Ejemplo 5) Eliminar

SQL:

DELETE FROM users WHERE id = 1;

Rails:

usuario = Usuario.find(1)
usuario.destroy

5⃣ Punto clave: Los desarrolladores de Rails manejan la base de datos con "Ruby" en lugar de SQL

Porque ActiveRecord
convierte mis comandos Ruby
en SQL en segundo plano.

Es decir,

Aunque el desarrollador no use SQL, Rails genera y ejecuta SQL internamente.

Gracias a esto, el desarrollador puede
centrarse en diseñar la lógica del negocio
sin la carga técnica de controlar directamente la base de datos.


6⃣ La verdadera razón por la que se dice que ActiveRecord es "poderoso"

La fortaleza de ActiveRecord no es simplemente "no necesitas usar SQL".
Eso es solo una ventaja superficial.

La verdadera esencia radica en estas cuatro cosas.


1) El modelo y la tabla de la base de datos se conectan automáticamente

Al crear el modelo Usuario,
se conecta automáticamente con la tabla usuarios.

  • No es necesario coincidir los nombres de las tablas
  • No es necesario especificar el mapeo
  • Rails se encarga de la conexión automática por convención

Esto acelera exponencialmente la velocidad de desarrollo.


2) La configuración de relaciones es abrumadoramente intuitiva

Ejemplo:

class Edificio < ApplicationRecord
  has_many :habitaciones
end

class Habitacion < ApplicationRecord
  belongs_to :edificio
end

Estas dos líneas
hacen que Rails realice automáticamente lo siguiente:

  • Crear un JOIN SQL adecuado
  • Soportar la llamada a edificio.habitaciones
  • Gestionar automáticamente la clave externa edificio_id
  • Optimizar las consultas basadas en relaciones

Para implementar esto directamente en SQL,
se necesitarían decenas de líneas de JOIN, INDEX y condiciones.

ActiveRecord lo resuelve todo
con solo dos líneas.


3) Rails se encarga de la seguridad, previene inyecciones, optimiza consultas

Riesgos al usar SQL directamente:

  • Inyección SQL
  • Degradación del rendimiento debido a consultas incorrectas
  • Uso excesivo de SELECT *
  • Consultas lentas debido a índices faltantes

ActiveRecord previene la mayoría de estos problemas
o convierte las consultas en SQL seguras.

Es la red de seguridad del desarrollador web.


4) Experiencia de desarrollo totalmente integrada con la sintaxis de Ruby

Puedes ensamblar consultas de manera "Ruby":

Usuario.where(activo: true)
    .where("edad > ?", 20)
    .order(created_at: :desc)
    .limit(10)

Aunque parece código Ruby,
se genera SQL optimizado internamente.

Esta capacidad de "combinación de código"
hace de ActiveRecord uno de los ORM más poderosos.


7⃣ Conclusión - Por qué los desarrolladores de Rails casi no usan SQL

ActiveRecord abstrae toda la complejidad de SQL

Los desarrolladores solo necesitan escribir código Ruby

Modelos, relaciones, consultas, almacenamiento, eliminación se sienten como manipulación de objetos Ruby

La productividad, seguridad y mantenibilidad mejoran de manera abrumadora

ActiveRecord no es solo un ORM simple,
es el motor central de productividad de Rails.

Comments

Add Comment

Your email won't be published and will only be used for reply notifications.

Sigue leyendo

Get notified of new posts

We'll email you when Bamchi Blog publishes new content.

Your email will only be used for new post notifications.