Curso de programación con SQL

Aprende SQL y domina el lenguaje de consulta para gestionar y manipular bases de datos. Optimiza tus habilidades de bases de datos con SQL.

Aprende SQL GRATIS y certifícate

SQL (Structured Query Language) es un lenguaje de programación diseñado para gestionar y manipular bases de datos relacionales. Permite realizar operaciones como consultar, insertar, actualizar y eliminar datos almacenados en sistemas de gestión de bases de datos (SGBD) como MySQL, PostgreSQL, Oracle y SQL Server.

Fundamentos de las bases de datos relacionales

Las bases de datos relacionales almacenan información en tablas compuestas por filas y columnas. Cada tabla representa una entidad, y las relaciones entre tablas se establecen mediante claves primarias y foráneas. Este modelo facilita la organización y acceso eficiente a los datos.

Operaciones básicas en SQL

Consultas con SELECT

La sentencia SELECT se utiliza para recuperar datos de una o varias tablas.

SELECT nombre, edad FROM usuarios;

Este comando obtiene los campos nombre y edad de la tabla usuarios.

Filtrado de datos con WHERE

La cláusula WHERE permite filtrar registros según condiciones específicas.

SELECT * FROM usuarios WHERE edad > 30;

Recupera todos los usuarios cuya edad es mayor de 30 años.

Ordenamiento con ORDER BY

Para ordenar los resultados, se utiliza ORDER BY.

SELECT nombre, edad FROM usuarios ORDER BY edad DESC;

Muestra los usuarios ordenados por edad de mayor a menor.

Limitación de resultados con LIMIT

Es posible limitar el número de registros devueltos.

SELECT * FROM usuarios LIMIT 10;

Obtiene los primeros 10 registros de la tabla usuarios.

Manipulación de datos

Inserción de datos con INSERT

La sentencia INSERT añade nuevos registros a una tabla.

INSERT INTO usuarios (nombre, edad, correo) VALUES ('Ana', 28, 'ana@example.com');

Agrega un nuevo usuario con los datos proporcionados.

Actualización de datos con UPDATE

UPDATE modifica registros existentes.

UPDATE usuarios SET correo = 'ana.nuevo@example.com' WHERE nombre = 'Ana';

Actualiza el correo de la usuaria llamada Ana.

Eliminación de datos con DELETE

DELETE elimina registros de una tabla.

DELETE FROM usuarios WHERE edad < 18;

Elimina todos los usuarios menores de 18 años.

Creación y modificación de estructuras

Creación de tablas con CREATE TABLE

Para crear una nueva tabla:

CREATE TABLE productos (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nombre VARCHAR(100) NOT NULL,
    precio DECIMAL(10, 2) NOT NULL,
    stock INT DEFAULT 0
);

Esta sentencia crea la tabla productos con los campos especificados.

Modificación de tablas con ALTER TABLE

Permite añadir, modificar o eliminar columnas.

Agregar una columna:

ALTER TABLE productos ADD COLUMN descripcion TEXT;

Eliminar una columna:

ALTER TABLE productos DROP COLUMN stock;

Eliminación de tablas con DROP TABLE

Para eliminar una tabla completa:

DROP TABLE productos;

Claves y restricciones

Clave primaria (PRIMARY KEY)

Identifica de manera única cada registro en una tabla.

id INT PRIMARY KEY AUTO_INCREMENT

Clave foránea (FOREIGN KEY)

Establece relaciones entre tablas.

CREATE TABLE pedidos (
    id INT PRIMARY KEY AUTO_INCREMENT,
    usuario_id INT,
    fecha DATE,
    FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);

Restricciones de integridad

  • NOT NULL: La columna no puede contener valores nulos.
  • UNIQUE: El valor debe ser único en la columna.
  • CHECK: Impone una condición que los datos deben cumplir.
  • DEFAULT: Establece un valor por defecto.

Ejemplo:

precio DECIMAL(10, 2) NOT NULL CHECK (precio > 0)

Funciones agregadas y agrupamiento

Funciones agregadas

  • COUNT(): Cuenta el número de registros.
  • SUM(): Suma los valores de una columna.
  • AVG(): Calcula el promedio.
  • MAX() y MIN(): Obtienen el valor máximo y mínimo.

Ejemplo:

SELECT COUNT(*) FROM usuarios;

Agrupamiento con GROUP BY

Permite agrupar registros y aplicar funciones agregadas.

SELECT edad, COUNT(*) FROM usuarios GROUP BY edad;

Cuenta cuántos usuarios hay de cada edad.

Filtrado de grupos con HAVING

Similar a WHERE, pero para grupos.

SELECT edad, COUNT(*) FROM usuarios GROUP BY edad HAVING COUNT(*) > 1;

Muestra solo las edades que tienen más de un usuario.

Subconsultas y uniones

Subconsultas

Consultas anidadas dentro de otra consulta.

SELECT nombre FROM usuarios WHERE id IN (SELECT usuario_id FROM pedidos);

Obtiene los nombres de usuarios que tienen pedidos.

Uniones (JOIN)

Permiten combinar registros de dos o más tablas.

INNER JOIN

Combina filas cuando hay coincidencias en ambas tablas.

SELECT usuarios.nombre, pedidos.fecha
FROM usuarios
INNER JOIN pedidos ON usuarios.id = pedidos.usuario_id;

LEFT JOIN

Incluye todas las filas de la tabla izquierda, con coincidencias de la derecha si existen.

SELECT usuarios.nombre, pedidos.fecha
FROM usuarios
LEFT JOIN pedidos ON usuarios.id = pedidos.usuario_id;

Vistas y procedimientos almacenados

Vistas

Una vista es una consulta almacenada que se puede tratar como una tabla virtual.

Crear una vista:

CREATE VIEW vista_usuarios_activos AS
SELECT nombre, correo FROM usuarios WHERE activo = 1;

Usar la vista:

SELECT * FROM vista_usuarios_activos;

Procedimientos almacenados

Permiten encapsular código SQL para reutilizarlo.

Crear un procedimiento:

CREATE PROCEDURE actualizar_stock(IN producto_id INT, IN cantidad INT)
BEGIN
    UPDATE productos SET stock = stock + cantidad WHERE id = producto_id;
END;

Ejecutar el procedimiento:

CALL actualizar_stock(5, 10);

Transacciones

Las transacciones garantizan la integridad de los datos mediante operaciones atómicas.

START TRANSACTION;

UPDATE cuentas SET saldo = saldo - 100 WHERE id = 1;
UPDATE cuentas SET saldo = saldo + 100 WHERE id = 2;

COMMIT;

Si ocurre un error, se puede deshacer:

ROLLBACK;

Índices y optimización

Índices

Mejoran el rendimiento de las consultas.

Crear un índice:

CREATE INDEX idx_nombre ON usuarios(nombre);

Consideraciones de optimización

  • Evitar el uso excesivo de subconsultas anidadas.
  • Utilizar índices en columnas frecuentemente consultadas.
  • Normalizar las tablas para reducir la redundancia.

Seguridad y permisos

Gestión de usuarios

Crear un usuario:

CREATE USER 'nuevo_usuario'@'localhost' IDENTIFIED BY 'contraseña_segura';

Asignar permisos:

GRANT SELECT, INSERT ON base_de_datos.* TO 'nuevo_usuario'@'localhost';

Revocar permisos:

REVOKE INSERT ON base_de_datos.* FROM 'nuevo_usuario'@'localhost';

Eliminar un usuario:

DROP USER 'nuevo_usuario'@'localhost';

Conexión desde aplicaciones

Las aplicaciones se conectan a la base de datos mediante controladores específicos. Por ejemplo, en Python se puede utilizar psycopg2 para PostgreSQL o PyMySQL para MySQL.

Ejemplo en Python:

import pymysql

conexion = pymysql.connect(
    host='localhost',
    user='usuario',
    password='contraseña',
    db='base_de_datos'
)

cursor = conexion.cursor()
cursor.execute("SELECT * FROM usuarios")
resultados = cursor.fetchall()

for fila in resultados:
    print(fila)

conexion.close()

Herramientas y recursos adicionales

  • SGBD populares: MySQL, PostgreSQL, Oracle, SQL Server.
  • Clientes gráficos GUI: phpMyAdmin, pgAdmin, MySQL Workbench.
  • Documentación oficial: Consultar la documentación del SGBD utilizado para detalles específicos.
Aprende SQL GRATIS online

Tutoriales de SQL

Aprende SQL con tutoriales de programación en SQL.

Introducción A Sql

Introducción Y Entorno

Ddl Y Dml

Introducción Y Entorno

Instalación De Mysql

Introducción Y Entorno

Instalación De Postgresql

Introducción Y Entorno

Tipos De Datos

Introducción Y Entorno

Bases De Datos Y Tablas

Introducción Y Entorno

Sistemas De Gestión De Bases De Datos

Introducción Y Entorno

Tipos De Bases De Datos

Introducción Y Entorno

Creación De Bases De Datos Y Tablas: Create Database, Create Table

Sintaxis Dml Crud

Consultas Básicas De Selección: Select Y Where

Sintaxis Dml Crud

Inserción De Datos: Insert Into

Sintaxis Dml Crud

Actualización De Datos: Update

Sintaxis Dml Crud

Eliminación De Datos: Delete

Sintaxis Dml Crud

Introducción A Dml

Sintaxis Dml Crud

Consultar Datos: Select

Sintaxis Dml Crud

Clasificación De Resultados Con Order By

Filtros Y Clasificación

Filtrado De Valores Únicos Con Distinct

Filtros Y Clasificación

Paginación Con Limit Y Offset

Filtros Y Clasificación

Alterar La Estructura De Tablas Existentes: Alter Table

Sintaxis Ddl

Renombrar Tablas Y Bases De Datos: Rename

Sintaxis Ddl

Vaciar Tablas Y Bases De Datos: Drop

Sintaxis Ddl

Uso De Funciones Agregadas: Count, Sum, Avg, Max, Min

Funciones Y Agrupación

Agrupación De Resultados Con Group By

Funciones Y Agrupación

Filtrado De Grupos De Resultados Con Having

Funciones Y Agrupación

Funciones Numéricas Y Matemáticas

Funciones Y Agrupación

Funciones De Fecha Y Hora

Funciones Y Agrupación

Funciones De Texto

Funciones Y Agrupación

Many To One

Asociaciones Entre Tablas

One To Many

Asociaciones Entre Tablas

One To One

Asociaciones Entre Tablas

Many To Many

Asociaciones Entre Tablas

Relaciones Entre Tablas

Joins Y Subqueries

Uso De Inner Join, Left Join, Right Join, Full Join

Joins Y Subqueries

Creación Y Uso De Subqueries

Joins Y Subqueries

Left Join Y Right Join

Joins Y Subqueries

Full Join

Joins Y Subqueries

Cross Join Y Self Join

Joins Y Subqueries

Optimización De Consultas

Sintaxis Avanzada

Uso De Índices Y Particiones

Sintaxis Avanzada

Uso De Vistas

Sintaxis Avanzada

Triggers Y Eventos

Sintaxis Avanzada

Particiones

Sintaxis Avanzada

Restricciones E Integridad

Sintaxis Avanzada

Transacciones

Sintaxis Avanzada

Vistas Materializadas

Sintaxis Avanzada

Rollback

Sintaxis Avanzada

Vistas Con Create View

Sintaxis Avanzada

Principios Acid

Sintaxis Avanzada

Manejo De Errores Y Excepciones

Sintaxis Avanzada

Funciones Ventana

Sintaxis Avanzada

Índices

Sintaxis Avanzada

Expresiones De Tabla Comunes (Cte) Con With

Sintaxis Avanzada

Creación Y Uso De Funciones

Programación En Sql

Creación Y Uso De Procedimientos Almacenados

Programación En Sql

Variables Y Control De Flujo

Programación En Sql

Creación Y Manejo De Usuarios Y Roles

Seguridad Y Administración

Asignación Y Gestión De Permisos

Seguridad Y Administración

Copias De Seguridad Y Restauración De Bases De Datos

Seguridad Y Administración

Ejercicios de programación de SQL

Evalúa tus conocimientos en SQL con ejercicios de programación SQL de tipo Test, Puzzle, Código y Proyecto con VSCode.

Tipos de datos

Test

Inserción de datos: INSERT INTO

Test

Filtrado de grupos de resultados con HAVING

Test

Uso de índices y particiones

Test

Renombrar tablas y bases de datos: RENAME

Test

Uso de vistas

Test

Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN

Test

Agrupación de resultados con GROUP BY

Test

Creación y uso de subqueries

Test

Sentencias INSERT

Código

Copias de seguridad y restauración de bases de datos

Test

Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN

Código

Instalación de MySQL

Test

Relaciones entre tablas

Código

Eliminación de datos: DELETE

Test

Creación de bases de datos y tablas: CREATE DATABASE, CREATE TABLE

Test

Creación y uso de funciones

Test

Creación de tablas e inserción de datos con SQL

Proyecto

Uso de funciones agregadas: COUNT, SUM, AVG, MAX, MIN

Test

Optimización de consultas

Test

Introducción a SQL

Test

Triggers y eventos

Test

Clasificación de resultados con ORDER BY

Test

Alterar la estructura de tablas existentes: ALTER TABLE

Test

Eliminación de datos: DELETE

Código

Instalación de PostgreSQL

Test

Creación y uso de procedimientos almacenados

Test

Consultas básicas de selección: SELECT y WHERE

Test

Vaciar tablas y bases de datos: DROP

Test

Actualización de datos: UPDATE

Test

Creación y manejo de usuarios y roles

Test

Consultas básicas de selección SELECT y WHERE

Código

Creación de bases de datos y tablas

Código

Bases de datos y tablas

Test

Actualización de datos: UPDATE

Código

Relaciones entre tablas

Test

Filtrado de valores únicos con DISTINCT

Test

Asignación y gestión de permisos

Test

Tipo de tecnología

Lenguaje

Categoría laboral

Bases de datos

Año de lanzamiento

1974

Developers

Donald D. Chamberlin y Raymond F. Boyce

Todos los módulos del curso de SQL

Ver todos los módulos de SQL

Otras tecnologías

Rust
Rust

Rust

Backend

Lenguaje de programación de sistemas enfocado en seguridad, concurrencia y rendimiento.

C
C

C

Backend

Lenguaje de propósito general, eficiente y de bajo nivel.

R
R

R

Ciencia de Datos e IA

Lenguaje para análisis estadístico, manipulación de datos y visualización gráfica.

TypeScript
TypeScript

TypeScript

Full Stack

Superconjunto de JavaScript con tipado estático.

Apache Spark
PySpark

PySpark

Big Data

Motor unificado de análisis de datos distribuido para grandes volúmenes.

Go
Go

Go

Backend

Lenguaje de programación eficiente y concurrente creado por Google.

Django
Django

Django

Backend

Framework web Python para desarrollo rápido y seguro.

Spring Boot
SpringBoot

SpringBoot

Backend

Framework para desarrollo rápido de aplicaciones Java.

Laravel
Laravel

Laravel

Backend

Framework de PHP para desarrollo web backend.

Node.js
Node

Node

Backend

Node.js es un entorno de ejecución de JavaScript basado en el motor V8 de Google.

Java

Java

Backend

Lenguaje de programación versátil y multiplataforma.

OpenCV
OpenCV

OpenCV

Ciencia de Datos e IA

Biblioteca de Python para Computer Vision en imágenes y vídeos.

Flask
Flask

Flask

Backend

Microframework web para Python, simple y flexible.

NestJS
Nest

Nest

Backend

Framework Node.js para crear aplicaciones escalables y eficientes.

Selenium
Selenium

Selenium

Testing / QA

Suite de herramientas open-source para automatizar navegadores web y pruebas de software de interfaz de usuario.

React
React

React

Frontend

Librería framework para frontend interfaces de usuario.

Vue.js
Vuejs

Vuejs

Frontend

Framework de JS progresivo para construir interfaces de usuario reactivas y modulares.

Docker
Docker

Docker

DevOps

Plataforma de contenedores para aplicaciones portátiles.

PHP
PHP

PHP

Backend

Lenguaje de programación para desarrollo web del lado del servidor, el motor del ecosistema Wordpress.

CSharp

CSharp

Backend

Lenguaje C# de Microsoft para desarrollo en el ecosistema .NET para todo tipo de aplicaciones.

Streamlit
Streamlit

Streamlit

Ciencia de Datos e IA

Biblioteca Python para prototipado web UI rápido en ciencia de datos.

Seaborn

Seaborn

Ciencia de Datos e IA

Biblioteca de visualización de datos para Python.

FastAPI
FastAPI

FastAPI

Backend

Framework web moderno y rápido para Python.

Fundamentos

Fundamentos

Full Stack

Fundamentos y bases de la programación de software moderna.

TensorFlow
TensorFlow

TensorFlow

Ciencia de Datos e IA

Biblioteca Python para redes neuronales en Deep Learning

Tailwind CSS
TailwindCSS

TailwindCSS

Frontend

Framework de utilidades CSS para diseños rápidos y personalizables.

Git
Git

Git

DevOps

Sistema de control de versiones distribuido.

scikit-learn
ScikitLearn

ScikitLearn

Ciencia de Datos e IA

Biblioteca de aprendizaje automático en Python.

Kotlin
Kotlin

Kotlin

Backend

Lenguaje de programación moderno y seguro para aplicaciones Android.

NumPy
Numpy

Numpy

Ciencia de Datos e IA

Biblioteca Python para computación científica y matrices.

HTML5
HTML

HTML

Frontend

Lenguaje de marcado para estructurar contenido web.

GNU Bash
Bash

Bash

Administración de sistemas

Intérprete de comandos para sistemas Unix y Linux.

Bootstrap
Bootstrap

Bootstrap

Frontend

Framework CSS para diseños web responsive y modernos.

2022-09-27T22:26:51.030457 image/svg+xml Matplotlib v3.6.0, https://matplotlib.org/
Matplotlib

Matplotlib

Ciencia de Datos e IA

Biblioteca Python para crear gráficos y visualizaciones.

Hibernate
Hibernate

Hibernate

Backend

ORM para Java, simplifica el acceso a bases de datos.

pandas
Pandas

Pandas

Ciencia de Datos e IA

Herramienta Python para análisis y manipulación de datos.

JavaScript
JavaScript

JavaScript

Full Stack

Lenguaje de scripting para desarrollo web interactivo.

Angular
Angular

Angular

Frontend

Framework web de Google para aplicaciones dinámicas.

CSS
CSS

CSS

Frontend

Lenguaje de estilo para diseñar páginas web atractivas.

Python
Python

Python

Backend

Lenguaje de programación fácil de aprender y versátil.

Acceder a todas las tecnologías