{}const=>[]async()letfn</>var
DesarrolloSQL

Conceptos básicos de SQL: SELECT, INSERT, UPDATE, DELETE: una guía completa para desarrolladores

Aprende los cuatro comandos básicos de SQL para trabajar con bases de datos. Ejemplos detallados de SELECT, INSERT, UPDATE y DELETE con consejos prácticos, transacciones y protección contra inyecciones SQL. Ideal para desarrolladores principiantes.

К

Kodik

Autor

5 min de lectura

Preparación: creación de una tabla de prueba

Antes de empezar a trabajar con los datos, crearemos una tabla sencilla para los ejemplos:

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    age INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

🔥 100.000+ estudiantes ya están con nosotros

¿Cansado de leer teoría?
¡Hora de programar!

Kodik — una app donde aprendes a programar con práctica. Mentor IA, lecciones interactivas, proyectos reales.

🤖 IA 24/7
🎓 Certificados
💰 Gratis
🚀 Empezar
Se unieron hoy

SELECT: lectura de datos

El comando SELECT se utiliza para extraer datos de una tabla. Esta es la operación más común cuando se trabaja con bases de datos.

Sintaxis básica

SELECT column1, column2 FROM table_name;

Ejemplos de uso

Seleccionar todas las columnas:

SELECT * FROM users;

Selección de columnas específicas:

SELECT name, email FROM users;

Uso de WHERE para filtrar:

SELECT * FROM users WHERE age > 25;

Ordenar resultados con ORDER BY:

SELECT * FROM users ORDER BY name ASC;
SELECT * FROM users ORDER BY created_at DESC;

Límite de resultados:

SELECT * FROM users LIMIT 10;
SELECT * FROM users LIMIT 10 OFFSET 20; -- пагинация

Uso de LIKE para buscar por patrón:

SELECT * FROM users WHERE email LIKE '%@gmail.com';
SELECT * FROM users WHERE name LIKE 'А%'; -- имена на букву А

Funciones agregadas:

SELECT COUNT(*) FROM users;
SELECT AVG(age) FROM users;
SELECT MAX(age), MIN(age) FROM users;

Agrupación con GROUP BY:

SELECT age, COUNT(*) as count 
FROM users 
GROUP BY age 
HAVING COUNT(*) > 1;

INSERT: añadir datos

El comando INSERT permite añadir nuevos registros a la tabla.

Sintaxis básica

INSERT INTO table_name (column1, column2) VALUES (value1, value2);

Ejemplos de uso

Insertar una entrada:

INSERT INTO users (name, email, age) 
VALUES ('Alexey', 'alexey@example.com', 28);

Insertar varias entradas:

INSERT INTO users (name, email, age) VALUES 
    ('Maria', 'maria@example.com', 25),
    ('Dmitry', 'dmitry@example.com', 32),
    ('Elena', 'elena@example.com', 29);

Insertar sin especificar todas las columnas:

INSERT INTO users (name, email) 
VALUES ('Ivan', 'ivan@example.com');
-- age будет NULL, created_at заполнится автоматически

Insertar con retorno de ID:

-- MySQL
INSERT INTO users (name, email, age) 
VALUES ('Olga', 'olga@example.com', 27);
SELECT LAST_INSERT_ID();

-- PostgreSQL
INSERT INTO users (name, email, age) 
VALUES ('Olga', 'olga@example.com', 27)
RETURNING id;

ACTUALIZACIÓN: actualización de datos

El comando UPDATE modifica los registros existentes en la tabla.

Sintaxis básica

UPDATE table_name 
SET column1 = value1, column2 = value2 
WHERE condition;

Ejemplos de uso

Actualización de un registro:

UPDATE users 
SET age = 29 
WHERE id = 1;

Actualización de varios campos:

UPDATE users 
SET name = 'Alexey Petrov', age = 30 
WHERE id = 1;

Actualización de varios registros:

UPDATE users 
SET age = age + 1 
WHERE age < 30;

Uso de cálculos:

UPDATE users 
SET email = LOWER(email);

Actualización condicional con varias condiciones:

UPDATE users 
SET age = 25 
WHERE name = 'Maria' AND email LIKE '%@example.com';

Advertencia importante

¡Siempre usa WHERE al ACTUALIZAR! Sin esta condición, se actualizarán todos los registros de la tabla:

-- ОПАСНО! Обновит все записи
UPDATE users SET age = 25;

-- ПРАВИЛЬНО! Обновит только нужные записи
UPDATE users SET age = 25 WHERE id = 1;

DELETE: eliminación de datos

El comando DELETE elimina registros de la tabla.

Sintaxis básica

DELETE FROM table_name WHERE condition;

Ejemplos de uso

Eliminar una entrada:

DELETE FROM users WHERE id = 1;

Eliminación por condición:

DELETE FROM users WHERE age < 18;

Eliminación con varias condiciones:

DELETE FROM users 
WHERE created_at < '2024-01-01' AND age IS NULL;

Eliminar todas las entradas (¡cuidado!):

DELETE FROM users; -- удалит все записи
TRUNCATE TABLE users; -- быстрее, но нельзя откатить в транзакции

Advertencia importante

Al igual que con UPDATE, siempre verifica la presencia de WHERE con DELETE:

-- ОПАСНО! Удалит все записи
DELETE FROM users;

-- ПРАВИЛЬНО! Удалит только нужные записи
DELETE FROM users WHERE id = 1;

Transacciones: trabajo seguro con datos

Al realizar las operaciones INSERT, UPDATE y DELETE, se recomienda utilizar transacciones para garantizar la integridad de los datos:

START TRANSACTION;

UPDATE users SET age = 30 WHERE id = 1;
UPDATE users SET age = 28 WHERE id = 2;

-- Если всё хорошо:
COMMIT;

-- Если нужно отменить изменения:
ROLLBACK;

Consejos prácticos

Utiliza SELECT antes de UPDATE/DELETE

Antes de modificar o eliminar datos, ejecute SELECT con la misma condición para asegurarse de que está trabajando con los registros correctos:

-- Сначала проверяем
SELECT * FROM users WHERE age < 18;

-- Если всё верно, удаляем
DELETE FROM users WHERE age < 18;

Índices de rendimiento

Crea índices para las columnas que se utilizan con frecuencia en WHERE:

CREATE INDEX idx_email ON users(email);
CREATE INDEX idx_age ON users(age);

Evite SELECT *

En el código de producción, especifica columnas concretas en lugar de un asterisco:

-- Плохо
SELECT * FROM users;

-- Хорошо
SELECT id, name, email FROM users;

Utilice LIMIT

Cuando trabaje con tablas grandes, limite el número de registros devueltos:

SELECT * FROM users LIMIT 100;

Consultas parametrizadas

Cuando trabajes con SQL desde el código, utiliza siempre consultas parametrizadas para protegerte de las inyecciones SQL:

JavaScript (Node.js)

const userId = 1;
const query = 'SELECT * FROM users WHERE id = ?';
db.query(query, [userId]);

Python

user_id = 1
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))

PHP (PDO)

$userId = 1;
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$userId]);

Unión de equipos: un ejemplo práctico

Vamos a crear una pequeña aplicación para gestionar usuarios:

-- Создание пользователя
INSERT INTO users (name, email, age) 
VALUES ('Anna', 'anna@example.com', 26);

-- Получение ID нового пользователя
SET @user_id = LAST_INSERT_ID();

-- Чтение данных пользователя
SELECT * FROM users WHERE id = @user_id;

-- Обновление возраста
UPDATE users SET age = 27 WHERE id = @user_id;

-- Проверка обновления
SELECT name, age FROM users WHERE id = @user_id;

-- Удаление пользователя
DELETE FROM users WHERE id = @user_id;

-- Проверка удаления
SELECT COUNT(*) FROM users WHERE id = @user_id; -- должно вернуть 0

Conclusión

Los comandos SELECT, INSERT, UPDATE y DELETE son la base para trabajar con SQL. Una vez que domines estas operaciones, podrás gestionar eficazmente los datos en cualquier base de datos relacional. Recuerda la seguridad al trabajar con UPDATE y DELETE, usa siempre consultas parametrizadas en el código y no te olvides de las transacciones para operaciones críticas.

Únete a la plataforma educativa Kodik — aquí encontrarás cursos interactivos de Python, JavaScript, HTML, CSS, SQL y otros lenguajes de programación. Todos los materiales están creados específicamente para desarrolladores novatos con ejemplos prácticos y explicaciones paso a paso.

Codika también tiene un comunidad en Telegram, donde los desarrolladores se comunican, comparten experiencias y se ayudan mutuamente a resolver problemas.

Únete ¡Únete a nosotros y comienza tu viaje en la programación!

🎯Deja de postergar

¿Te gustó el artículo?
¡Hora de practicar!

En Kodik no solo lees — escribes código de inmediato. Teoría + práctica = habilidades reales.

Práctica instantánea
🧠IA explica código
🏆Certificado

Sin registro • Sin tarjeta