Comandos Esenciales de DDL y DML: Crear, Seleccionar, Actualizar, Eliminar

Aprende los comandos centrales de DDL y DML de MySQL: CREATE TABLE, INSERT, SELECT, UPDATE y DELETE.

Comandos Esenciales de DDL y DML: Crear, Seleccionar, Actualizar, Eliminar

Trabajar con MySQL generalmente comienza con dos tareas: definir tus tablas y trabajar con las filas dentro de ellas. Los comandos esenciales de DDL y DML son cómo haces eso de manera segura.

Los comandos DDL definen objetos de base de datos como tablas. Los comandos DML insertan, leen, actualizan y eliminan datos de tablas. Los ejemplos a continuación utilizan una pequeña tabla products para que puedas ver los comandos en contexto.

Lenguaje de Definición de Datos (DDL): Creación de Tablas

Los comandos DDL se ocupan del esquema y la estructura de tus objetos de base de datos. El comando DDL más fundamental para el almacenamiento de datos es CREATE TABLE, que te permite definir el plano de tus datos.

Sintaxis de CREATE TABLE

La sintaxis básica para crear una tabla implica especificar el nombre de la tabla y luego definir sus columnas, incluyendo sus tipos de datos y cualquier restricción.

CREATE TABLE nombre_tabla (
    columna1 tipo_dato restricciones,
    columna2 tipo_dato restricciones,
    columna3 tipo_dato restricciones,
    ...
);

nombre_tabla debe ser único dentro de la base de datos actual. Cada columna necesita un nombre, un tipo de dato y restricciones opcionales como NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY o DEFAULT valor.

Ejemplo de CREATE TABLE

Creemos una tabla simple products para almacenar información sobre artículos en un inventario:

CREATE TABLE products (
    product_id INT AUTO_INCREMENT PRIMARY KEY,
    product_name VARCHAR(100) NOT NULL UNIQUE,
    category VARCHAR(50),
    price DECIMAL(10, 2) NOT NULL,
    stock_quantity INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

En este ejemplo:

  • product_id es un entero que se incrementa automáticamente y sirve como clave primaria.
  • product_name es una cadena requerida que debe ser única.
  • price es un número decimal requerido.
  • stock_quantity por defecto es 0 si no se especifica.
  • created_at registra la marca de tiempo cuando se creó la fila.

Lenguaje de Manipulación de Datos (DML): Trabajando con Datos

Los comandos DML se utilizan para gestionar los registros (filas) dentro de tus tablas de base de datos. Son los comandos más utilizados para las operaciones diarias de la base de datos.

Comando INSERT: Agregando Nuevos Datos

El comando INSERT se utiliza para agregar nuevas filas de datos a una tabla.

Sintaxis de INSERT

Hay un par de formas de usar INSERT:

  1. Especificando valores para todas las columnas:

    INSERT INTO nombre_tabla
    VALUES (valor1, valor2, valor3, ...);
    

    El orden de los valores debe coincidir con el orden de las columnas en la definición de la tabla.

  2. Especificando valores para columnas específicas:

    INSERT INTO nombre_tabla (columna1, columna2, columna3, ...)
    VALUES (valor1, valor2, valor3, ...);
    

    Esto generalmente es preferido porque es más legible y menos propenso a errores si la estructura de la tabla cambia.

Ejemplo de INSERT

Usando nuestra tabla products:

-- Insertando valores para todas las columnas (asumiendo AUTO_INCREMENT para product_id)
INSERT INTO products (product_name, category, price, stock_quantity)
VALUES ('Laptop Pro', 'Electronics', 1200.50, 50);

-- Insertando valores para columnas específicas
INSERT INTO products (product_name, price)
VALUES ('Mechanical Keyboard', 75.99);

-- Insertando múltiples filas a la vez
INSERT INTO products (product_name, category, price, stock_quantity)
VALUES 
('Ergonomic Mouse', 'Electronics', 25.00, 120),
('Desk Lamp', 'Home Goods', 45.00, 75);

Comando SELECT: Recuperando Datos

El comando SELECT es la piedra angular de la recuperación de datos. Te permite consultar tu base de datos y obtener datos específicos basados en varios criterios.

Sintaxis de SELECT

SELECT columna1, columna2, ...
FROM nombre_tabla
WHERE condición
ORDER BY nombre_columna [ASC|DESC]
LIMIT número;
  • columna1, columna2, ...: Las columnas que deseas recuperar. Usa * para seleccionar todas las columnas.
  • FROM nombre_tabla: La tabla que estás consultando.
  • WHERE condición: (Opcional) Filtra las filas basándose en una condición especificada. Las condiciones pueden involucrar operadores de comparación (=, !=, >, <, >=, <=), operadores lógicos (AND, OR, NOT) y coincidencia de patrones (LIKE).
  • ORDER BY nombre_columna [ASC|DESC]: (Opcional) Ordena el conjunto de resultados por una o más columnas. ASC para ascendente (predeterminado), DESC para descendente.
  • LIMIT número: (Opcional) Restringe el número de filas devueltas.

Ejemplos de SELECT

-- Seleccionar todas las columnas para todos los productos
SELECT *
FROM products;

-- Seleccionar solo el nombre y el precio de los productos
SELECT product_name, price
FROM products;

-- Seleccionar productos en la categoría 'Electronics'
SELECT *
FROM products
WHERE category = 'Electronics';

-- Seleccionar productos con un precio mayor a 100, ordenados por precio descendente
SELECT product_name, price
FROM products
WHERE price > 100
ORDER BY price DESC;

-- Seleccionar los 5 productos más caros
SELECT product_name, price
FROM products
ORDER BY price DESC
LIMIT 5;

-- Seleccionar productos cuyo nombre comienza con 'L'
SELECT *
FROM products
WHERE product_name LIKE 'L%';

Comando UPDATE: Modificando Datos Existentes

El comando UPDATE te permite cambiar registros existentes en una tabla.

Sintaxis de UPDATE

UPDATE nombre_tabla
SET columna1 = valor1, columna2 = valor2, ...
WHERE condición;
  • nombre_tabla: La tabla que contiene los registros a actualizar.
  • SET columna1 = valor1, ...: Especifica qué columnas actualizar y sus nuevos valores.
  • WHERE condición: ¡Crucial! Esta cláusula determina qué filas serán actualizadas. Si se omite, todas las filas de la tabla serán actualizadas.

Ejemplos de UPDATE

-- Aumentar el precio del 'Laptop Pro' en 50
UPDATE products
SET price = price + 50.00
WHERE product_name = 'Laptop Pro';

-- Actualizar la categoría y el stock del 'Mechanical Keyboard'
UPDATE products
SET category = 'Accessories', stock_quantity = 100
WHERE product_name = 'Mechanical Keyboard';

-- **ADVERTENCIA**: Esto actualizaría el precio de TODOS los productos a 10.00
-- UPDATE products
-- SET price = 10.00;

Consejo: Siempre usa una cláusula WHERE al actualizar para asegurarte de modificar solo los registros previstos. Prueba tu cláusula WHERE con una declaración SELECT primero para verificar que apunta a las filas correctas.

Comando DELETE: Eliminando Datos

El comando DELETE se utiliza para eliminar filas de una tabla.

Sintaxis de DELETE

DELETE FROM nombre_tabla
WHERE condición;
  • nombre_tabla: La tabla de la cual eliminar filas.
  • WHERE condición: ¡Crucial! Esta cláusula especifica qué filas eliminar. Si se omite, todas las filas de la tabla serán eliminadas.

Ejemplos de DELETE

-- Eliminar el producto con el nombre 'Desk Lamp'
DELETE FROM products
WHERE product_name = 'Desk Lamp';

-- Eliminar todos los productos que se han quedado sin stock (stock_quantity es 0)
DELETE FROM products
WHERE stock_quantity = 0;

-- **ADVERTENCIA**: ¡Esto eliminaría TODOS los registros de la tabla 'products'!
-- DELETE FROM products;

Advertencia: Similar a UPDATE, omitir la cláusula WHERE en una declaración DELETE es una operación destructiva que eliminará todos los datos de la tabla. Úsalo con extrema precaución.

Conclusión Clave

Entender y usar efectivamente los comandos DDL y DML es fundamental para la gestión de bases de datos. CREATE TABLE te permite definir la estructura de tus datos, mientras que INSERT, SELECT, UPDATE y DELETE te permiten poblar, consultar, modificar y gestionar esos datos.

Practicando estos comandos con cláusulas WHERE claras, especialmente para UPDATE y DELETE, puedes construir una base sólida para trabajar con bases de datos MySQL y asegurar la integridad y precisión de tus datos. Siempre recuerda hacer una copia de seguridad de tus datos antes de realizar operaciones potencialmente destructivas.