0% encontró este documento útil (0 votos)
5 vistas11 páginas

Bases de Datos SQL

El documento presenta los fundamentos de las bases de datos relacionales y SQL, explicando su importancia en la gestión eficiente de datos. Se abordan conceptos clave como el modelo relacional, diseño y normalización de bases de datos, así como los diferentes sublenguajes de SQL para manipular y consultar datos. Además, se detallan ejemplos prácticos de creación, modificación y consulta de bases de datos, destacando la importancia de las transacciones para mantener la integridad de los datos.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
5 vistas11 páginas

Bases de Datos SQL

El documento presenta los fundamentos de las bases de datos relacionales y SQL, explicando su importancia en la gestión eficiente de datos. Se abordan conceptos clave como el modelo relacional, diseño y normalización de bases de datos, así como los diferentes sublenguajes de SQL para manipular y consultar datos. Además, se detallan ejemplos prácticos de creación, modificación y consulta de bases de datos, destacando la importancia de las transacciones para mantener la integridad de los datos.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Fundamentos de Bases de Datos Relacionales y SQL

1. Introducción a las Bases de Datos

Vivimos en la era de la información, donde los datos son uno de los activos más
valiosos de cualquier organización. Pero tener datos no es suficiente; es necesario
almacenarlos, organizarlos y recuperarlos de manera eficiente y segura.

Una Base de Datos (BD) es una colección estructurada de datos almacenados


electrónicamente. Para gestionar estas bases de datos, utilizamos sistemas de
software complejos conocidos como Sistemas Gestores de Bases de Datos
(SGBD) o DBMS por sus siglas en inglés (Database Management System). El SGBD
actúa como un intermediario entre el usuario, las aplicaciones y los datos.

Existen muchos tipos de bases de datos (orientadas a objetos, NoSQL,


jerárquicas), pero las más utilizadas en el mundo empresarial desde hace
décadas son las Bases de Datos Relacionales (RDBMS).

2. El Modelo Relacional

Propuesto por Edgar F. Codd en 1970, el modelo relacional organiza los datos en
tablas bidimensionales (compuestas por filas y columnas) que se relacionan entre
sí.

Shutterstock
Explorar

2.1. Conceptos Clave del Modelo Relacional

• Tabla (Entidad/Relación): Es la estructura principal donde se guardan los


datos. Representa un objeto o concepto del mundo real (ej. Clientes,
Pedidos, Productos).

• Columna (Atributo/Campo): Define una característica específica de la


tabla (ej. Nombre, Fecha_Nacimiento, Precio). Todos los datos de una
columna deben ser del mismo tipo.

• Fila (Registro/Tupla): Es una entrada individual en la tabla. Contiene los


datos concretos de una instancia específica (ej. Los datos del cliente "Juan
Pérez").

2.2. Claves (Keys)

Las claves son fundamentales para garantizar la integridad de los datos y


establecer relaciones.

• Clave Primaria (Primary Key - PK): Es una columna (o conjunto de


columnas) que identifica de manera única e irrepetible cada fila en una
tabla. No puede contener valores nulos ni repetidos. (Ej. DNI o un
ID_Cliente autonumérico).

• Clave Foránea (Foreign Key - FK): Es una columna en una tabla que hace
referencia a la Clave Primaria de otra tabla. Es el vínculo que conecta
ambas tablas y establece la "relación".

3. Diseño y Normalización

Antes de escribir código, una base de datos debe diseñarse correctamente. La


Normalización es un proceso sistemático para organizar los datos, reduciendo la
redundancia (datos repetidos) y mejorando la integridad de los mismos.

Se realiza aplicando "Formas Normales" (NF). Las más comunes son:

1. Primera Forma Normal (1NF): Los datos deben ser atómicos (indivisibles).
Cada celda debe contener un solo valor y no debe haber grupos repetidos
de columnas.

2. Segunda Forma Normal (2NF): Debe cumplir la 1NF y todos los atributos
que no sean clave deben depender completamente de la Clave Primaria
completa.
3. Tercera Forma Normal (3NF): Debe cumplir la 2NF y no debe haber
dependencias transitivas (un atributo no clave no puede depender de otro
atributo no clave; todos deben depender solo de la Clave Primaria).

4. Introducción a SQL

SQL (Structured Query Language o Lenguaje de Consulta Estructurado) es el


lenguaje estándar universal utilizado para comunicarse con las bases de datos
relacionales (como MySQL, PostgreSQL, Oracle, SQL Server, SQLite).

4.1. Sublenguajes de SQL

SQL es muy amplio y se divide en varias categorías según el propósito de los


comandos:

Comandos
Sublenguaje Significado Función
Principales

Define la estructura de la BD
Data Definition CREATE, ALTER,
DDL (crear, modificar o borrar
Language DROP
tablas).

INSERT,
Data Manipulation Manipula los datos (insertar,
DML UPDATE,
Language actualizar o borrar registros).
DELETE

Data Query
DQL Consulta y recupera datos. SELECT
Language

Data Control Controla el acceso y permisos GRANT,


DCL
Language a los datos. REVOKE

Gestiona los cambios


Transaction COMMIT,
TCL realizados por DML
Control Language ROLLBACK
(transacciones).

5. Tipos de Datos Comunes

Al definir las columnas de una tabla, debemos especificar qué tipo de datos
contendrán:

• Numéricos: INT (Enteros), DECIMAL(p,s) o NUMERIC (Números exactos


con decimales), FLOAT (Números de coma flotante).
• Cadenas de texto: VARCHAR(n) (Texto de longitud variable, hasta 'n'
caracteres), CHAR(n) (Texto de longitud fija), TEXT (Textos muy largos).

• Fechas y Horas: DATE (Año, mes, día), TIME (Hora, minutos, segundos),
DATETIME o TIMESTAMP (Fecha y hora juntas).

• Lógicos: BOOLEAN (Verdadero o Falso).

6. Lenguaje de Definición de Datos (DDL)

Vamos a ver cómo crear la estructura de nuestra base de datos con un ejemplo de
una tienda en línea.

6.1. Crear una Base de Datos y Tablas (CREATE)

SQL

-- Crear la base de datos

CREATE DATABASE TiendaOnline;

USE TiendaOnline;

-- Crear la tabla Clientes

CREATE TABLE Clientes (

ID_Cliente INT PRIMARY KEY,

Nombre VARCHAR(50) NOT NULL,

Apellido VARCHAR(50) NOT NULL,

Email VARCHAR(100) UNIQUE,

Fecha_Registro DATE

);

-- Crear la tabla Pedidos (relacionada con Clientes)

CREATE TABLE Pedidos (

ID_Pedido INT PRIMARY KEY,

ID_Cliente INT,

Fecha_Pedido DATE,
Total DECIMAL(10, 2),

-- Definir la clave foránea

FOREIGN KEY (ID_Cliente) REFERENCES Clientes(ID_Cliente)

);

6.2. Modificar y Eliminar Estructuras (ALTER y DROP)

SQL

-- Añadir una nueva columna a Clientes

ALTER TABLE Clientes ADD Telefono VARCHAR(15);

-- Eliminar una tabla (CUIDADO: Esto borra la tabla y todos sus datos)

DROP TABLE Pedidos;

7. Lenguaje de Manipulación de Datos (DML)

Una vez creada la estructura, necesitamos insertar y modificar los datos reales.

7.1. Insertar Datos (INSERT)

SQL

INSERT INTO Clientes (ID_Cliente, Nombre, Apellido, Email, Fecha_Registro)

VALUES (1, 'Ana', 'García', 'ana@[Link]', '2023-10-01');

INSERT INTO Clientes (ID_Cliente, Nombre, Apellido, Email, Fecha_Registro)

VALUES (2, 'Carlos', 'López', 'carlos@[Link]', '2023-10-05');

7.2. Actualizar Datos (UPDATE)

Nota importante: Siempre usa la cláusula WHERE en un UPDATE o modificarás


todos los registros de la tabla.

SQL

-- Cambiar el email del cliente con ID 1

UPDATE Clientes

SET Email = 'ana.garcia_nuevo@[Link]'


WHERE ID_Cliente = 1;

7.3. Borrar Datos (DELETE)

SQL

-- Eliminar al cliente con ID 2

DELETE FROM Clientes

WHERE ID_Cliente = 2;

8. Consultas Básicas (DQL)

El comando SELECT es el más utilizado en SQL. Sirve para extraer la información


que necesitamos.

8.1. Sintaxis Básica

SQL

-- Seleccionar todas las columnas de la tabla Clientes

SELECT * FROM Clientes;

-- Seleccionar solo columnas específicas

SELECT Nombre, Email FROM Clientes;

8.2. Filtrar Resultados (WHERE)

Podemos condicionar qué filas queremos ver utilizando operadores como =, <, >,
<=, >=, <> (distinto).

SQL

SELECT Nombre, Total

FROM Pedidos

WHERE Total > 100.00;

8.3. Operadores Lógicos y Especiales

• AND / OR: Para combinar múltiples condiciones.

• IN: Permite especificar múltiples valores en una cláusula WHERE.

• BETWEEN: Selecciona valores dentro de un rango (inclusivo).


• LIKE: Busca un patrón específico (usando % como comodín para
representar cero o más caracteres).

SQL

-- Clientes que se llamen Ana O Carlos

SELECT * FROM Clientes WHERE Nombre IN ('Ana', 'Carlos');

-- Pedidos entre 50 y 200 euros

SELECT * FROM Pedidos WHERE Total BETWEEN 50 AND 200;

-- Clientes cuyo apellido empiece por 'G'

SELECT * FROM Clientes WHERE Apellido LIKE 'G%';

8.4. Ordenar y Limitar (ORDER BY y LIMIT)

SQL

-- Mostrar clientes ordenados por apellido alfabéticamente (ASC) o inversamente


(DESC)

SELECT * FROM Clientes ORDER BY Apellido ASC;

-- Mostrar solo los 5 pedidos más caros

SELECT * FROM Pedidos ORDER BY Total DESC LIMIT 5;

9. Funciones Agregadas y Agrupación

SQL permite realizar cálculos sobre un conjunto de valores para devolver un único
valor resultante.

9.1. Funciones Agregadas

• COUNT(): Cuenta el número de filas.

• SUM(): Suma los valores numéricos de una columna.

• AVG(): Calcula la media (promedio).

• MIN() y MAX(): Encuentran el valor mínimo y máximo.

SQL
-- Saber cuántos clientes tenemos registrados

SELECT COUNT(ID_Cliente) FROM Clientes;

-- Calcular la suma total de dinero en pedidos

SELECT SUM(Total) FROM Pedidos;

9.2. Agrupar Datos (GROUP BY)

GROUP BY agrupa las filas que tienen los mismos valores en filas de resumen. Se
usa casi siempre con funciones agregadas.

SQL

-- Saber cuánto ha gastado en total CADA cliente

SELECT ID_Cliente, SUM(Total) AS Gasto_Total

FROM Pedidos

GROUP BY ID_Cliente;

9.3. Filtrar Grupos (HAVING)

Mientras que WHERE filtra filas antes de agrupar, HAVING filtra después de usar
GROUP BY.

SQL

-- Clientes que han gastado más de 500 euros en total

SELECT ID_Cliente, SUM(Total) AS Gasto_Total

FROM Pedidos

GROUP BY ID_Cliente

HAVING SUM(Total) > 500;

10. Relacionando Tablas: JOINs

El verdadero poder de las bases de datos relacionales reside en la capacidad de


cruzar información de múltiples tablas en una sola consulta. Esto se logra con la
cláusula JOIN.
Shutterstock

Explorar

10.1. INNER JOIN

Devuelve los registros que tienen valores coincidentes en ambas tablas.

SQL

-- Mostrar el nombre del cliente junto con los datos de sus pedidos

SELECT [Link], Pedidos.Fecha_Pedido, [Link]

FROM Clientes

INNER JOIN Pedidos ON Clientes.ID_Cliente = Pedidos.ID_Cliente;

10.2. LEFT JOIN (o LEFT OUTER JOIN)

Devuelve todos los registros de la tabla de la izquierda (la primera en la consulta),


y los registros coincidentes de la tabla de la derecha. Si no hay coincidencia,
devuelve NULL en el lado derecho.

SQL

-- Mostrar TODOS los clientes, tengan o no tengan pedidos realizados

SELECT [Link], [Link]

FROM Clientes

LEFT JOIN Pedidos ON Clientes.ID_Cliente = Pedidos.ID_Cliente;

10.3. RIGHT JOIN y FULL JOIN

• RIGHT JOIN: Lo opuesto al LEFT JOIN; devuelve todo de la tabla derecha.


• FULL JOIN: Devuelve todos los registros cuando hay una coincidencia en
los registros de la tabla izquierda o derecha (devuelve nulos donde falte
información en cualquier lado).

11. Subconsultas (Subqueries)

Una subconsulta es una consulta anidada dentro de otra consulta mayor. Se


utilizan para operaciones más complejas donde primero necesitas un dato
calculado para poder ejecutar la consulta principal.

SQL

-- Obtener los clientes que han hecho un pedido por encima de la media de todos
los pedidos

SELECT Nombre, Apellido

FROM Clientes

WHERE ID_Cliente IN (

SELECT ID_Cliente

FROM Pedidos

WHERE Total > (SELECT AVG(Total) FROM Pedidos)

);

12. Transacciones (TCL)

En entornos de producción, agrupar múltiples operaciones en una "Transacción"


asegura que los datos sean consistentes (Conceptos ACID: Atomicidad,
Consistencia, Aislamiento, Durabilidad). O se ejecutan todas las operaciones
correctamente, o no se guarda ninguna.

• START TRANSACTION / BEGIN: Inicia la transacción.

• COMMIT: Guarda los cambios permanentemente en la base de datos.

• ROLLBACK: Deshace los cambios de la transacción actual si ocurre un


error.

SQL

BEGIN;
-- Restar saldo a la cuenta A

UPDATE Cuentas SET Saldo = Saldo - 100 WHERE ID_Cuenta = 1;

-- Sumar saldo a la cuenta B

UPDATE Cuentas SET Saldo = Saldo + 100 WHERE ID_Cuenta = 2;

-- Si todo está bien, confirmamos:

COMMIT;

-- Si hubiese fallado algo, ejecutaríamos ROLLBACK en lugar de COMMIT.

Conclusión

Las bases de datos relacionales y el lenguaje SQL conforman una de las


tecnologías más robustas y probadas en el mundo del desarrollo de software y
análisis de datos. Dominar los conceptos de normalización estructural junto con
las consultas (desde simples SELECT hasta complejos JOIN y GROUP BY) te
proporcionará las bases para manipular prácticamente cualquier sistema de
información moderno.

También podría gustarte