Fundamentos de la Base de Datos MySQL

  1. Introducción a las Bases de Datos

1.1 Razones para usar bases de datos

Los sistemas operativos como Windows, Linux y MacOS manejan archivos, pero la gestión de datos en archivos puros dificulta operaciones como creación, lectura, actualización y eliminación. Aunque herramientas como hojas de cálculo almacenan datos, no soportan consultas relacionales. Los sistemas de gestión de bases de datos (DBMS) utilizan archivos subyacentes, pero proporcionan una capa de abstracción y lenguajes como SQL para facilitar el manejo. Específicamente, los sistemas de bases de datos relacionales (RDBMS) implementan el modelo relacional.

1.2 Sistemas de Bases de Datos Relacionales (RDBMS)

El modelo relacional organiza datos en tablas independientes con relaciones entre sí. Ejemplos notables incluyen Oracle, DB2, MySQL y SQL Server, que surgieron a partir de las ideas pioneras de sistemas como Oracle Database.

1.3 Bases de Datos No Relacionales (NoSQL)

Las bases de datos NoSQL almacenan datos sin un esquema rígido ni relaciones directas, optimizadas para escenarios de alto rendimiento como gestión de inventarios en ventas flash, sesiones de usuario o notificaciones. Proporcionan lecturas y escrituras rápidas, complementando a las bases de datos relacionales. Ejemplos populares son Redis y MongoDB.

  1. Instalación de MySQL en Entornos Windows

2.1 Proceso de Instalación

Para instalar MySQL 8.0.23 (versión MSI, arquitectura x86), siga estos pasos modificados:

  1. Seleccione el tipo de instalación como "Solo servidor".
  2. Verifique requisitos: se necesitará Visual C++ 2015, que se descarga automáticamente si hay conexión a Intrenet.
  3. Complete la instalación inicial.
  4. En "Replicación de grupo", mantenga la configuración predeterminada para instalación única.
  5. En "Tipo y Red", ajuste el puerto si ya existen instalaciones previas (por ejemplo, use 5001 en lugar de 3306).
  6. Elija el método de autenticación "Usar método de autenticación heredado (compatibilidad con MySQL 5.x)".
  7. Configure la contraseña para el usuario root.
  8. En "Servicio de Windows", asegúrese de marcar "Iniciar el servidor MySQL al inicio del sistema".
  9. Finalice la instalación.

2.2 Configuración de Variables de Entorno

Añada la ruta del directorio bin de MySQL (por ejemplo, C:\Program Files\MySQL\MySQL Server 8.0\bin) a las variables de entorno del sistema.

2.3 Inicio de Sesión desde la Línea de Comandos

Después de reiniciar, el servidor MySQL se ejecuta automáticamente. Abra PowerShell con privilegios de administrador y ejecute los siguientes comandos para inicializar y acceder:

mysqld --install
# Servicio instalado exitosamente
net start mysql
# El servicio solicitado ya está en ejecución

# Inicialice la base de datos y anote la contraseña temporal generada
mysqld --initialize --user=root --console
# Una contraseña temporal se genera para root@localhost:abc123XYZ

# Inicie sesión con la contraseña temporal y cámbiela
mysql -u root -p
# Ingrese contraseña: abc123XYZ
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'nueva_contrasena';

2.4 Archivos de Configuración de MySQL 8.0

La instalación predeterminada separa los archivos del software y los datos. Por ejemplo, el software está en C:\Program Files\MySQL\MySQL Server 8.0, mientras que los datos se almacenan en C:\ProgramData\MySQL\MySQL Server 8.0 (un directorio oculto). El archivo de configuración principal es my.ini.

2.5 Uso de Herramientas Gráficas como Navicat

Navicat es una herramienta de administración visual para bases de datos. Para conectar, asegúrese de que MySQL esté en ejecución y configure una nueva conexión con el puerto, usuario y contraseña correctos.

  1. Lenguaje SQL

SQL es el estándar para interactuar con bases de datos relacionales. Se clasifica en:

  • DML: Operaciones de manipulación de datos (consultar, insertar, actualizar, eliminar).
  • DCL: Control de acceso y transacciones.
  • DDL: Definición de estructuras como bases de datos, tablas, vistas e índices.

3.1 Tipos de Datos

3.1.1 Numéricos

Para datos numéricos, use FLOAT o DOUBLE para precisión moderada, pero DECIMAL para alta precisión, ya que almacena valores exactos como cadenas de dígitos.

3.1.2 Cadenas de Caracteres

VARCHAR(n) almacena cadenas de hasta n caracteres. En MySQL 5.0 y posteriores, n se refiere a caracteres, no bytes, por lo que puede contener hasta n caracteres Unicode (por ejemplo, 50 caracteres, ya sean letras o símbolos CJK).

3.1.3 Tipos de Fecha

MySQL ofrece tipos como DATE, TIME y TIMESTAMP para gestionar información temporal.

  1. Comandos Comunes de MySQL

Los comandos SQL se ejecutan en el cliente de MySQL o herramientas como Navicat. Por convención, se recomienda usar mayúsculas para palabras clave.

4.1 Crear, Listar y Eliminar Objetos

-- Listar bases de datos
SHOW DATABASES;
-- Usar una base de datos específica
USE sistema_db;
-- Listar tablas
SHOW TABLES;
-- Describir estructura de una tabla
DESCRIBE usuarios;
-- Ver código de creación de una tabla
SHOW CREATE TABLE usuarios;

-- Crear una base de datos
CREATE DATABASE ejemplo_db;
-- Eliminar una base de datos
DROP DATABASE ejemplo_db;

-- Crear una tabla con índices
CREATE TABLE IF NOT EXISTS productos(
    id INT UNSIGNED AUTO_INCREMENT,
    nombre VARCHAR(100) NOT NULL,
    proveedor VARCHAR(50) NOT NULL,
    fecha_registro DATE,
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Eliminar una tabla
DROP TABLE productos;

4.2 Modificar Estructura de Tablas

-- Añadir columnas
ALTER TABLE empleados
ADD COLUMN direccion VARCHAR(150) NOT NULL,
ADD COLUMN telefono CHAR(12);

-- Modificar tipo de dato de una columna
ALTER TABLE empleados MODIFY telefono CHAR(15);

-- Renombrar una columna
ALTER TABLE empleados CHANGE direccion ubicacion VARCHAR(150) NOT NULL;

-- Eliminar columnas
ALTER TABLE empleados
DROP COLUMN ubicacion,
DROP COLUMN telefono;

4.3 Manipular Datos

-- Insertar registros
INSERT INTO productos (nombre, proveedor, fecha_registro)
VALUES ('Artículo A', 'Proveedor X', CURDATE());

-- Actualizar datos
UPDATE productos SET nombre = 'Artículo B' WHERE id = 1;

-- Eliminar registros
DELETE FROM productos WHERE id = 1;

  1. Conceptos Teóricos

5.1 Normalización de Bases de Datos

  • Primera Forma Normal (1FN): Los atributos deben ser atómicos, sin valores múltiples o repetidos.
  • Segunda Forma Normal (2FN): Cada registro es único, identificado por una clave primaria.
  • Tercera Forma Normal (3FN): No hay dependencias transitivas; las tablas se descomponen manteniendo relaciones mediante claves foráneas.

5.2 Restricciones de Campos

Las claves foráneas establecen relaciones entre tablas, pero su uso puede complicar la eliminación de datos debido a restricciones de integridad. Se recomienda gestionar la integridad a nivel de aplicación en algunos casos.

5.3 Índices

Los índices mejoran el rendimiento de consultas al ordenar datos en campos específicos. Ejemplo de creación:

-- Crear tabla con índice
CREATE TABLE mensajes(
    id INT UNSIGNED PRIMARY KEY,
    contenido VARCHAR(200) NOT NULL,
    tipo ENUM("aviso", "notificación", "alerta") NOT NULL,
    creado_en TIMESTAMP NOT NULL,
    INDEX idx_tipo(tipo)
);

-- Mostrar índices de una tabla
SHOW INDEX FROM mensajes;

-- Añadir índice a tabla existente
CREATE INDEX idx_contenido ON mensajes(contenido);
-- Alternativa: ALTER TABLE mensajes ADD INDEX idx_contenido(contenido);

-- Eliminar índice
DROP INDEX idx_contenido ON mensajes;

Las claves primarias actúan como índices por defecto. Principios de uso:

  • Crear índices en tablas con grandes volúmenes de datos y consultas frecuentes.
  • Indexar solo campos usados comúnmente como criterios de búsqueda.
  • Evitar índices en campos muy largos para reducir el uso de almacenamiento.

Etiquetas: MySQL SQL RDBMS Database Installation Indexes

Publicado el 6-4 16:49