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
);
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; -- должно вернуть 0Conclusió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!
