Comandos Esenciales de DDL y DML: Crear, Seleccionar, Actualizar, Eliminar
Trabajar con bases de datos, especialmente las relacionales como MySQL, implica fundamentalmente definir la estructura de tus datos y luego interactuar con ellos. Este proceso se divide típicamente en dos categorías principales de comandos SQL: Lenguaje de Definición de Datos (DDL) y Lenguaje de Manipulación de Datos (DML). Los comandos DDL se utilizan para definir y administrar objetos de base de datos, como tablas, mientras que los comandos DML se usan para insertar, recuperar, modificar y eliminar registros dentro de esas tablas.
Esta guía te mostrará los comandos MySQL DDL y DML más esenciales: CREATE TABLE para definir tus estructuras de datos, e INSERT, SELECT, UPDATE y DELETE para manipular los datos en sí. Dominar estos comandos es un paso crucial para cualquiera que busque administrar y utilizar eficazmente una base de datos MySQL.
Lenguaje de Definición de Datos (DDL): Creación de Tablas
Los comandos DDL se ocupan del esquema y la estructura de los objetos de tu 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: El nombre que deseas dar a tu tabla. Debe ser único dentro de la base de datos.nombre_columna: El nombre de cada campo individual dentro de la tabla.tipo_dato: Especifica el tipo de datos que contendrá la columna (por ejemplo,INTpara enteros,VARCHAR(255)para cadenas de longitud variable,DATEpara fechas,DECIMAL(10, 2)para números decimales precisos).restricciones: Reglas aplicadas a una columna para garantizar la integridad de los datos. Las restricciones comunes incluyen:NOT NULL: Asegura que una columna no pueda tener un valor NULL.UNIQUE: Asegura que todos los valores en una columna sean distintos.PRIMARY KEY: Una combinación deNOT NULLyUNIQUE. Cada tabla debe tener una clave primaria para identificar de forma única cada fila.FOREIGN KEY: Vincula una columna en una tabla con la clave primaria de otra tabla, reforzando la integridad referencial.DEFAULT valor: Establece un valor predeterminado para una columna si no se especifica ningún valor durante la inserción.
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 tiene un valor predeterminado de 0 si no se especifica.
* created_at registra la marca de tiempo cuando se creó la fila.
Lenguaje de Manipulación de Datos (DML): Trabajo con Datos
Los comandos DML se utilizan para administrar los registros (filas) dentro de tus tablas de base de datos. Son los comandos que se usan con más frecuencia para las operaciones diarias de la base de datos.
Comando INSERT: Añadir Nuevos Datos
El comando INSERT se utiliza para añadir nuevas filas de datos a una tabla.
Sintaxis de INSERT
Hay un par de formas de usar INSERT:
-
Especificando valores para todas las columnas:
sql 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. -
Especificando valores para columnas específicas:
sql INSERT INTO nombre_tabla (columna1, columna2, columna3, ...) VALUES (valor1, valor2, valor3, ...);
Generalmente se prefiere esto, ya que 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: Recuperar 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 basándose en varios criterios.
Sintaxis de SELECT
SELECT columna1, columna2, ...
FROM nombre_tabla
WHERE condicion
ORDER BY nombre_columna [ASC|DESC]
LIMIT numero;
columna1, columna2, ...: Las columnas que deseas recuperar. Usa*para seleccionar todas las columnas.FROM nombre_tabla: La tabla de la que estás consultando.WHERE condicion: (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.ASCpara ascendente (predeterminado),DESCpara descendente.LIMIT numero: (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 comience con 'L'
SELECT *
FROM products
WHERE product_name LIKE 'L%';
Comando UPDATE: Modificar 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 condicion;
nombre_tabla: La tabla que contiene los registros a actualizar.SET columna1 = valor1, ...: Especifica qué columnas actualizar y sus nuevos valores.WHERE condicion: ¡Crucial! Esta cláusula determina qué filas se actualizarán. Si se omite, se actualizarán todas las filas de la tabla.
Ejemplos de UPDATE
-- Incrementar 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 deseados. Primero prueba tu cláusula WHERE con una declaración SELECT para verificar que apunta a las filas correctas.
Comando DELETE: Eliminar Datos
El comando DELETE se utiliza para eliminar filas de una tabla.
Sintaxis de DELETE
DELETE FROM nombre_tabla
WHERE condicion;
nombre_tabla: La tabla de la que se eliminarán las filas.WHERE condicion: ¡Crucial! Esta cláusula especifica qué filas se eliminarán. Si se omite, se eliminarán todas las filas de la tabla.
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 agotado (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: Al igual que con UPDATE, omitir la cláusula WHERE en una declaración DELETE es una operación destructiva que eliminará todos los datos de la tabla. Úsala con extrema precaución.
Resumen
Comprender y usar eficazmente 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 administrar esos datos.
Al practicar 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 garantizar la integridad y precisión de tus datos. Recuerda siempre hacer una copia de seguridad de tus datos antes de realizar operaciones potencialmente destructivas.