SQL

Tutorial SQL: Introducción a SQL

Aprende la historia, estructura de consultas y diferencias entre dialectos SQL como MySQL y PostgreSQL en esta lección completa de SQL.

Aprende SQL y certifícate

Historia de SQL

El lenguaje SQL (Structured Query Language) tiene sus raíces en la década de 1970, cuando la necesidad de gestionar grandes volúmenes de datos de manera eficiente se convirtió en una prioridad para las organizaciones. Su desarrollo está estrechamente ligado a la evolución de las bases de datos relacionales, un modelo que revolucionó la forma en que almacenamos y accedemos a la información.

Orígenes en IBM

Todo comenzó en 1970 cuando el matemático e informático Edgar F. Codd, mientras trabajaba en IBM, publicó su influyente artículo "A Relational Model of Data for Large Shared Data Banks". Este documento sentó las bases teóricas del modelo relacional, proponiendo que los datos se organizaran en tablas bidimensionales (relaciones) con filas y columnas, conectadas mediante valores comunes.

Basándose en estas ideas, un equipo de IBM liderado por Donald D. Chamberlin y Raymond F. Boyce desarrolló en 1974 un lenguaje llamado SEQUEL (Structured English Query Language). Este primer lenguaje estaba diseñado para manipular y recuperar datos almacenados en System R, el sistema de gestión de bases de datos experimentales de IBM.

-- Ejemplo de sintaxis temprana de SEQUEL (1974)
SELECT EMPNO, LASTNAME, SALARY
FROM EMPLOYEE
WHERE DEPT = 'RESEARCH'

De SEQUEL a SQL

Por cuestiones legales, el nombre SEQUEL tuvo que cambiarse a SQL (Structured Query Language). Durante los años siguientes, IBM continuó refinando el lenguaje mientras desarrollaba System R, el primer sistema que implementó SQL. En 1979, Oracle Corporation (entonces llamada Relational Software, Inc.) se convirtió en la primera empresa en comercializar un sistema de gestión de bases de datos basado en SQL, adelantándose incluso a IBM.

Estandarización

Un hito crucial en la historia de SQL fue su estandarización. En 1986, el American National Standards Institute (ANSI) publicó el primer estándar oficial de SQL, conocido como SQL-86. Dos años después, en 1988, este estándar fue adoptado por la Organización Internacional de Normalización (ISO), consolidando a SQL como el lenguaje estándar para bases de datos relacionales a nivel mundial.

Las principales versiones del estándar SQL han sido:

  • SQL-86: Primera versión estandarizada
  • SQL-89: Revisión menor con algunas mejoras
  • SQL-92: Expansión significativa que añadió numerosas características
  • SQL:1999: Introdujo características orientadas a objetos
  • SQL:2003: Añadió funciones XML y características para almacenes de datos
  • SQL:2008: Incorporó funcionalidades para servicios web
  • SQL:2011: Mejoró el soporte para datos temporales
  • SQL:2016: Añadió características para JSON y análisis de patrones
  • SQL:2023: Última versión con mejoras en funciones de ventana y expresiones de tabla comunes

Popularización y adopción comercial

Durante la década de 1980, SQL experimentó una rápida adopción gracias a su simplicidad conceptual y su capacidad para gestionar datos de manera eficiente. Numerosas empresas desarrollaron sus propios sistemas de gestión de bases de datos relacionales (RDBMS) basados en SQL:

  • Oracle Database (1979)
  • DB2 de IBM (1983)
  • SQL Server de Microsoft (1989)
  • PostgreSQL (1989, inicialmente como Postgres)
  • MySQL (1995)

Cada uno de estos sistemas implementó el estándar SQL con sus propias extensiones y optimizaciones, dando lugar a los dialectos SQL que conocemos hoy.

La revolución de las bases de datos de código abierto

Un capítulo importante en la historia de SQL fue el surgimiento de sistemas de código abierto en la década de 1990. PostgreSQL, desarrollado originalmente en la Universidad de California en Berkeley, y MySQL, creado por Michael Widenius y David Axmark, democratizaron el acceso a las bases de datos relacionales al ofrecer alternativas gratuitas y de código abierto a los costosos sistemas comerciales.

-- Ejemplo de consulta SQL moderna
SELECT 
    departments.name AS department,
    COUNT(employees.id) AS employee_count,
    AVG(employees.salary) AS average_salary
FROM 
    employees
JOIN 
    departments ON employees.department_id = departments.id
GROUP BY 
    departments.name
HAVING 
    COUNT(employees.id) > 10
ORDER BY 
    average_salary DESC;

SQL en la era de Internet

Con la explosión de Internet en los años 90 y 2000, SQL se convirtió en la columna vertebral de innumerables aplicaciones web. Las bases de datos relacionales gestionadas con SQL pasaron a almacenar desde información de usuarios y productos en tiendas online hasta contenido de redes sociales y aplicaciones empresariales.

SQL en la actualidad

A pesar del surgimiento de alternativas NoSQL para ciertos casos de uso específicos, SQL ha demostrado una notable resiliencia y capacidad de adaptación. Lejos de volverse obsoleto, SQL ha evolucionado para incorporar características modernas como soporte para datos JSON, análisis espacial, procesamiento de grafos y capacidades analíticas avanzadas.

Hoy, SQL sigue siendo el lenguaje dominante para la gestión de datos estructurados, con millones de desarrolladores y organizaciones que lo utilizan diariamente. Su influencia se extiende incluso a tecnologías NoSQL y Big Data, donde variantes como SparkSQL permiten consultar grandes volúmenes de datos con una sintaxis familiar.

La historia de SQL es un testimonio de cómo un diseño sólido basado en fundamentos matemáticos puede crear una tecnología con décadas de relevancia, capaz de adaptarse a un panorama tecnológico en constante evolución.

Estructura de consultas

Las consultas SQL siguen una estructura lógica que refleja la forma natural en que pensamos sobre los datos. Esta organización permite a los desarrolladores y analistas expresar operaciones complejas sobre bases de datos de manera clara y concisa. Comprender esta estructura es fundamental para dominar el lenguaje SQL.

Anatomía básica de una consulta SQL

Una consulta SQL típica está compuesta por varias cláusulas que se ejecutan en un orden específico. Cada cláusula cumple una función particular dentro de la consulta:

SELECT columna1, columna2
FROM tabla
WHERE condición
GROUP BY columna1
HAVING condición_de_grupo
ORDER BY columna2;

Aunque no todas las cláusulas son obligatorias, esta estructura proporciona un marco consistente para construir consultas desde las más simples hasta las más complejas.

Cláusulas principales y su orden de ejecución

El orden en que escribimos las cláusulas SQL no coincide con el orden en que el motor de base de datos las procesa. Entender esta secuencia de ejecución es crucial para escribir consultas eficientes:

  1. FROM: Especifica la tabla o tablas de donde se obtendrán los datos
  2. WHERE: Filtra las filas según las condiciones especificadas
  3. GROUP BY: Agrupa filas que comparten valores en columnas específicas
  4. HAVING: Filtra grupos según condiciones específicas
  5. SELECT: Determina qué columnas aparecerán en los resultados
  6. ORDER BY: Ordena el conjunto de resultados
-- Ejemplo de consulta con múltiples cláusulas
SELECT departamento, COUNT(*) as num_empleados
FROM empleados
WHERE fecha_contratacion > '2020-01-01'
GROUP BY departamento
HAVING COUNT(*) > 5
ORDER BY num_empleados DESC;

Cláusula SELECT

La cláusula SELECT define qué columnas queremos recuperar. Es la única cláusula obligatoria junto con FROM en una consulta básica.

-- Seleccionar columnas específicas
SELECT nombre, apellido, email FROM clientes;

-- Seleccionar todas las columnas
SELECT * FROM productos;

-- Usar alias para renombrar columnas
SELECT 
    precio * cantidad AS importe_total,
    fecha_pedido AS fecha
FROM pedidos;

Es importante señalar que usar SELECT * puede ser conveniente durante el desarrollo, pero en entornos de producción es mejor práctica especificar exactamente las columnas necesarias para mejorar el rendimiento.

Cláusula FROM

La cláusula FROM indica la fuente de los datos. Puede ser una tabla, múltiples tablas unidas, o incluso subconsultas (conocidas como "tablas derivadas").

-- Tabla simple
FROM clientes

-- Múltiples tablas con JOIN
FROM pedidos
JOIN clientes ON pedidos.cliente_id = clientes.id

-- Subconsulta como tabla
FROM (SELECT id, SUM(importe) as total FROM ventas GROUP BY id) AS resumen_ventas

Cláusula WHERE

La cláusula WHERE filtra las filas según condiciones específicas. Funciona como un "filtro horizontal" que reduce el número de filas procesadas.

-- Condición simple
WHERE edad > 18

-- Múltiples condiciones con operadores lógicos
WHERE categoria = 'Electrónica' AND precio < 500

-- Condiciones de rango
WHERE fecha_pedido BETWEEN '2023-01-01' AND '2023-12-31'

-- Búsqueda de patrones
WHERE nombre LIKE 'A%'

Los operadores de comparación más comunes incluyen:

  • Igualdad: =, <> (o != en algunos dialectos)
  • Comparación: <, >, <=, >=
  • Pertenencia: IN, NOT IN
  • Existencia: EXISTS, NOT EXISTS
  • Patrones: LIKE, NOT LIKE
  • Valores nulos: IS NULL, IS NOT NULL

Cláusula GROUP BY

La cláusula GROUP BY agrupa filas que comparten valores en una o más columnas, permitiendo realizar cálculos agregados sobre cada grupo.

-- Agrupar ventas por región
SELECT region, SUM(importe) as ventas_totales
FROM ventas
GROUP BY region;

-- Agrupar por múltiples columnas
SELECT categoria, subcategoria, COUNT(*) as num_productos
FROM productos
GROUP BY categoria, subcategoria;

Cláusula HAVING

Mientras que WHERE filtra filas individuales, HAVING filtra grupos creados por GROUP BY. Esta cláusula se aplica después de que los datos han sido agrupados.

-- Filtrar grupos con más de 100 ventas
SELECT producto_id, COUNT(*) as total_ventas
FROM ventas
GROUP BY producto_id
HAVING COUNT(*) > 100;

-- Filtrar por valor agregado
SELECT departamento, AVG(salario) as salario_promedio
FROM empleados
GROUP BY departamento
HAVING AVG(salario) > 50000;

Cláusula ORDER BY

La cláusula ORDER BY ordena los resultados según una o más columnas, en orden ascendente (ASC, predeterminado) o descendente (DESC).

-- Ordenar por una columna en orden ascendente
SELECT nombre, precio FROM productos ORDER BY precio;

-- Ordenar por múltiples columnas
SELECT apellido, nombre FROM clientes ORDER BY apellido, nombre;

-- Ordenar en orden descendente
SELECT producto, ventas FROM estadisticas ORDER BY ventas DESC;

-- Ordenar por posición de columna (menos recomendado)
SELECT nombre, fecha_registro FROM usuarios ORDER BY 2 DESC;

Consultas anidadas y subconsultas

Las subconsultas permiten usar el resultado de una consulta dentro de otra. Pueden aparecer en diferentes partes de la consulta principal:

-- Subconsulta en la cláusula WHERE
SELECT nombre
FROM productos
WHERE categoria_id IN (SELECT id FROM categorias WHERE nombre = 'Electrónica');

-- Subconsulta en la cláusula FROM
SELECT dept_nombre, promedio_salario
FROM (
    SELECT departamento_id, AVG(salario) as promedio_salario
    FROM empleados
    GROUP BY departamento_id
) AS promedios
JOIN departamentos ON promedios.departamento_id = departamentos.id;

-- Subconsulta en la cláusula SELECT
SELECT 
    nombre,
    (SELECT COUNT(*) FROM pedidos WHERE pedidos.cliente_id = clientes.id) AS total_pedidos
FROM clientes;

Operadores SET

Los operadores SET permiten combinar resultados de múltiples consultas:

-- UNION: combina y elimina duplicados
SELECT nombre FROM clientes
UNION
SELECT nombre FROM proveedores;

-- UNION ALL: combina manteniendo duplicados
SELECT producto_id FROM ventas_2022
UNION ALL
SELECT producto_id FROM ventas_2023;

-- INTERSECT: filas que aparecen en ambos conjuntos
SELECT cliente_id FROM clientes_activos
INTERSECT
SELECT cliente_id FROM clientes_premium;

-- EXCEPT/MINUS: filas del primer conjunto que no están en el segundo
SELECT producto_id FROM productos
EXCEPT  -- En MySQL se usa MINUS
SELECT producto_id FROM productos_descontinuados;

Estructura de consultas en MySQL y PostgreSQL

Aunque MySQL y PostgreSQL siguen el estándar SQL, existen algunas diferencias en la sintaxis y funcionalidades:

MySQL:

-- Limitación de resultados en MySQL
SELECT nombre, precio FROM productos ORDER BY precio DESC LIMIT 10;

-- Actualización con JOIN en MySQL
UPDATE productos p
JOIN categorias c ON p.categoria_id = c.id
SET p.precio = p.precio * 1.1
WHERE c.nombre = 'Electrónica';

PostgreSQL:

-- Limitación de resultados en PostgreSQL
SELECT nombre, precio FROM productos ORDER BY precio DESC LIMIT 10;

-- Actualización con FROM en PostgreSQL
UPDATE productos p
SET precio = p.precio * 1.1
FROM categorias c
WHERE p.categoria_id = c.id AND c.nombre = 'Electrónica';

Buenas prácticas en la estructura de consultas

Para escribir consultas SQL eficientes y mantenibles:

  • Usa indentación consistente para mejorar la legibilidad:
SELECT 
    c.nombre,
    c.apellido,
    COUNT(p.id) AS total_pedidos
FROM 
    clientes c
LEFT JOIN 
    pedidos p ON c.id = p.cliente_id
WHERE 
    c.fecha_registro > '2023-01-01'
GROUP BY 
    c.nombre, c.apellido
HAVING 
    COUNT(p.id) > 0
ORDER BY 
    total_pedidos DESC;
  • Nombra las columnas explícitamente en lugar de usar SELECT *
  • Utiliza alias de tabla para consultas que involucran múltiples tablas
  • Prefiere JOIN explícitos sobre la sintaxis de coma en la cláusula FROM
  • Evita funciones en la cláusula WHERE que impidan el uso de índices
  • Limita el número de filas cuando sea posible con LIMIT o TOP

La estructura de consultas SQL proporciona un marco flexible pero consistente para interactuar con bases de datos relacionales. Dominar esta estructura es el primer paso para escribir consultas eficientes que puedan resolver problemas complejos de manejo de datos.

Estándares y dialectos

El lenguaje SQL, aunque universalmente reconocido, no se implementa de manera idéntica en todos los sistemas de gestión de bases de datos relacionales (SGBDR). Esta realidad da lugar a la distinción entre el estándar SQL oficial y los diversos dialectos SQL que encontramos en la práctica profesional.

El estándar SQL: la base común

El estándar SQL es mantenido conjuntamente por el Instituto Nacional Estadounidense de Estándares (ANSI) y la Organización Internacional de Normalización (ISO). Este estándar define la sintaxis y semántica que todo sistema compatible con SQL debería implementar, estableciendo un lenguaje común para la manipulación de datos relacionales.

La evolución del estándar ha sido gradual, con cada nueva versión añadiendo funcionalidades para adaptarse a las necesidades cambiantes:

  • SQL-92 (o SQL2): Estableció las bases sólidas del lenguaje moderno
  • SQL:1999: Introdujo características orientadas a objetos y expresiones regulares
  • SQL:2003: Añadió soporte para XML y funciones de ventana (window functions)
  • SQL:2008: Incorporó la ordenación por collations y mejoras en OLAP
  • SQL:2011: Amplió el soporte para datos temporales
  • SQL:2016: Integró funcionalidades para JSON y análisis de patrones

Estas especificaciones oficiales garantizan cierto nivel de portabilidad entre sistemas, permitiendo que el conocimiento básico de SQL sea transferible entre diferentes plataformas.

Dialectos SQL: la realidad práctica

En la práctica, cada sistema de gestión de bases de datos implementa su propia variante o dialecto de SQL, que generalmente incluye:

  1. Un subconjunto del estándar oficial
  2. Extensiones propietarias que añaden funcionalidades específicas
  3. Variaciones sintácticas para ciertas operaciones

Los dialectos más relevantes para nuestro curso son:

MySQL

MySQL, ahora propiedad de Oracle, presenta un dialecto con características distintivas:

-- Limitación de resultados (extensión de MySQL)
SELECT nombre, precio FROM productos
ORDER BY precio DESC
LIMIT 10;

-- Uso de comillas invertidas para identificadores
SELECT `id`, `nombre` FROM `clientes`;

-- Funciones específicas de MySQL
SELECT CONCAT_WS(' ', nombre, apellido) AS nombre_completo
FROM empleados;

Particularidades de MySQL:

  • Uso de AUTO_INCREMENT para columnas de incremento automático
  • Diversos motores de almacenamiento (InnoDB, MyISAM)
  • Sintaxis específica para gestión de índices y particiones
  • Funciones de fecha y texto propias

PostgreSQL

PostgreSQL, conocido por su adherencia a estándares y robustez, ofrece:

-- Operador de texto específico para PostgreSQL
SELECT nombre FROM productos
WHERE descripcion ILIKE '%digital%';

-- Tipos de datos específicos
CREATE TABLE geometrias (
    id SERIAL PRIMARY KEY,
    ubicacion POINT,
    region POLYGON
);

-- Funciones de ventana avanzadas
SELECT 
    departamento,
    empleado,
    salario,
    RANK() OVER (PARTITION BY departamento ORDER BY salario DESC)
FROM empleados;

Características distintivas de PostgreSQL:

  • Soporte avanzado para tipos de datos (arrays, JSON, geoespaciales)
  • Operadores específicos como ILIKE (LIKE insensible a mayúsculas/minúsculas)
  • Secuencias mediante SERIAL o IDENTITY
  • Herencia de tablas y otras características orientadas a objetos

Diferencias comunes entre dialectos

Algunas áreas donde los dialectos suelen diferir incluyen:

Funciones de cadena

-- Concatenación en estándar SQL
SELECT first_name || ' ' || last_name FROM employees;

-- En MySQL
SELECT CONCAT(first_name, ' ', last_name) FROM employees;

-- En PostgreSQL (soporta ambas formas)
SELECT CONCAT(first_name, ' ', last_name) FROM employees;
SELECT first_name || ' ' || last_name FROM employees;

Funciones de fecha y hora

-- Extraer el año en MySQL
SELECT YEAR(fecha_nacimiento) FROM empleados;

-- En PostgreSQL
SELECT EXTRACT(YEAR FROM fecha_nacimiento) FROM empleados;

Paginación y límites

-- Limitar resultados en MySQL y PostgreSQL
SELECT * FROM productos ORDER BY precio LIMIT 10;

-- En SQL Server
SELECT TOP 10 * FROM productos ORDER BY precio;

-- Paginación en MySQL y PostgreSQL
SELECT * FROM productos ORDER BY id LIMIT 10 OFFSET 20;

-- En SQL Server (versiones más recientes)
SELECT * FROM productos ORDER BY id OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;

Valores autoincrementales

-- En MySQL
CREATE TABLE clientes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100)
);

-- En PostgreSQL
CREATE TABLE clientes (
    id SERIAL PRIMARY KEY,
    nombre VARCHAR(100)
);

Operaciones con cadenas de texto

-- Búsqueda insensible a mayúsculas/minúsculas
-- MySQL
SELECT * FROM productos WHERE nombre LIKE '%tablet%' COLLATE utf8mb4_general_ci;

-- PostgreSQL
SELECT * FROM productos WHERE nombre ILIKE '%tablet%';

Estrategias para manejar las diferencias entre dialectos

Como desarrollador, existen varias estrategias para lidiar con las diferencias entre dialectos:

  1. Ceñirse al estándar ANSI SQL cuando sea posible, evitando características específicas de cada dialecto.

  2. Usar capas de abstracción como ORMs (Object-Relational Mappers) que manejan las diferencias entre dialectos automáticamente.

  3. Implementar código condicional según la base de datos:

# Ejemplo en Python con diferentes dialectos
if database_type == "mysql":
    query = "SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees"
elif database_type == "postgresql":
    query = "SELECT first_name || ' ' || last_name AS full_name FROM employees"
  1. Documentar las dependencias específicas de cada dialecto en el código.

Compatibilidad y portabilidad

Al desarrollar aplicaciones que podrían necesitar cambiar de sistema de base de datos:

  • Identifica las áreas críticas donde los dialectos difieren (funciones de fecha, manejo de texto, paginación)
  • Encapsula las consultas específicas del dialecto en funciones o métodos separados
  • Prueba regularmente con diferentes sistemas de bases de datos
  • Mantén un registro de las características específicas de cada dialecto utilizadas

Herramientas de compatibilidad

Existen herramientas que pueden ayudar a gestionar las diferencias entre dialectos:

  • SQLines: Herramienta para convertir SQL entre diferentes dialectos
  • Frameworks ORM: Como Hibernate (Java), SQLAlchemy (Python) o Entity Framework (C#)
  • Middleware de base de datos: Sistemas que proporcionan una capa de abstracción sobre diferentes bases de datos

Consideraciones para elegir un dialecto

Al seleccionar un sistema de gestión de bases de datos, considera:

  • Requisitos funcionales: ¿Necesitas características específicas como soporte geoespacial avanzado?
  • Rendimiento: ¿Qué sistema se adapta mejor a tu patrón de carga de trabajo?
  • Ecosistema: Herramientas, comunidad y soporte disponibles
  • Licenciamiento: Costos y restricciones de uso
  • Familiaridad del equipo: La experiencia previa puede reducir la curva de aprendizaje

Tendencias en la estandarización

En los últimos años, hemos visto una tendencia hacia mayor compatibilidad:

  • Los sistemas de bases de datos están implementando más partes del estándar SQL
  • Las extensiones propietarias útiles tienden a ser adoptadas por otros sistemas
  • Las herramientas de abstracción están mejorando su capacidad para manejar diferencias

MySQL y PostgreSQL, en particular, han mejorado significativamente su adherencia al estándar SQL, aunque mantienen sus características distintivas que les dan ventajas en diferentes escenarios de uso.

Recomendaciones prácticas

Para nuestro curso, donde trabajaremos principalmente con MySQL y PostgreSQL:

  • Aprende primero la sintaxis estándar cuando esté disponible
  • Familiarízate con las particularidades de cada sistema
  • Practica identificando qué partes de una consulta son estándar y cuáles son específicas del dialecto
  • Desarrolla el hábito de consultar la documentación oficial cuando tengas dudas sobre compatibilidad

Dominar tanto el estándar SQL como las particularidades de los dialectos más comunes te convertirá en un desarrollador de bases de datos más versátil y efectivo, capaz de adaptarte a diferentes entornos y requisitos técnicos.

Aprende SQL online

Otros ejercicios de programación de SQL

Evalúa tus conocimientos de esta lección Introducción a SQL con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

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

Todas las lecciones de SQL

Accede a todas las lecciones de SQL y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

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

Accede GRATIS a SQL y certifícate

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender los orígenes y evolución histórica de SQL.
  • Identificar la estructura y cláusulas principales de una consulta SQL.
  • Diferenciar entre el estándar SQL y los dialectos más comunes.
  • Reconocer las particularidades de MySQL y PostgreSQL en la implementación de SQL.
  • Aplicar buenas prácticas para escribir consultas eficientes y portables.