<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Bases De Datos · DacaCode &lt;/&gt;</title><link>https://blog.dacadev.com/tags/bases-de-datos/</link><description>Blog de tecnología, programación y electrónica, para compartir conocimientos, experiencias y tutoriales con este apasionante mundo.</description><generator>Hugo</generator><language>es-CO</language><copyright>Copyright © 2026 DacaDev. All rights reserved.</copyright><lastBuildDate>Fri, 26 Jun 2026 00:00:00 -0500</lastBuildDate><atom:link href="https://blog.dacadev.com/tags/bases-de-datos/index.xml" rel="self" type="application/rss+xml"/><image><url>https://blog.dacadev.com/images/blog-logo.png</url><title>DacaCode &lt;/&gt;</title><link>https://blog.dacadev.com/</link></image><item><title>SQL: Transacciones, Índices y Constraints</title><link>https://blog.dacadev.com/programacion/sql/08-transacciones-indices-constraints/</link><pubDate>Fri, 26 Jun 2026 00:00:00 -0500</pubDate><guid>https://blog.dacadev.com/programacion/sql/08-transacciones-indices-constraints/</guid><dc:creator>Dacadev</dc:creator><category>programación</category><description>Aprende transacciones en SQL con COMMIT, ROLLBACK, índices y constraints para proteger integridad y optimizar consultas.</description><media:content url="https://blog.dacadev.com/images/programming/sql/transactions-constraints/banner.png" medium="image" type="image/png"/><content:encoded>
&lt;details class="table-of-content "&gt;
 &lt;summary&gt;
 
 Tabla de Contenido
 
 &lt;/summary&gt;
 &lt;nav id="TableOfContents"&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#qué-es-una-transacción-en-sql"&gt;Qué es una transacción en SQL&lt;/a&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#candados-y-concurrencia"&gt;Candados y concurrencia&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#iniciar-una-transacción"&gt;Iniciar una transacción&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#terminar-una-transacción"&gt;Terminar una transacción&lt;/a&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#savepoints-dentro-de-una-transacción"&gt;Savepoints dentro de una transacción&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#índices-y-constraints"&gt;Índices y constraints&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#creación-de-índices"&gt;Creación de índices&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#índices-únicos"&gt;Índices únicos&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#índices-multicolumna"&gt;Índices multicolumna&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#tipos-de-índices"&gt;Tipos de índices&lt;/a&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#índices-b-tree"&gt;Índices B-tree&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#índices-bitmap"&gt;Índices bitmap&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#índices-de-texto"&gt;Índices de texto&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#cómo-se-usan-los-índices"&gt;Cómo se usan los índices&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#constraints-restricciones-de-integridad"&gt;Constraints: restricciones de integridad&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#conclusión-de-la-serie-sql"&gt;Conclusión de la serie SQL&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
&lt;/nav&gt;
&lt;/details&gt;

&lt;p&gt;En sistemas con múltiples usuarios escribiendo datos al mismo tiempo, la diferencia entre una aplicación confiable y una que corrompe información suele estar en cómo manejas &lt;strong&gt;transacciones en SQL&lt;/strong&gt;, &lt;strong&gt;índices&lt;/strong&gt; y &lt;strong&gt;constraints&lt;/strong&gt;. En el artículo anterior analizamos &lt;a href="https://blog.dacadev.com/programacion/sql/07-vistas-views"



 


&gt;Vistas (Views)&lt;/a&gt;; ahora cerramos la serie con mecanismos de integridad y rendimiento.&lt;/p&gt;




 
 





 


&lt;div class="notice note"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" width="22" height="22" stroke-width="1.5" stroke="currentColor"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Note&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;En este artículo vas a aprender cómo iniciar y cerrar transacciones con &lt;code&gt;COMMIT&lt;/code&gt; y &lt;code&gt;ROLLBACK&lt;/code&gt;, cuándo usar savepoints, cómo funcionan los índices B-tree, bitmap y full-text, y cómo las constraints mantienen reglas de integridad dentro del esquema.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="qué-es-una-transacción-en-sql"&gt;Qué es una transacción en SQL&lt;/h2&gt;
&lt;p&gt;Una &lt;strong&gt;transacción&lt;/strong&gt; agrupa una o varias sentencias SQL que deben ejecutarse como una unidad lógica. El objetivo es que los cambios se apliquen completos o no se apliquen en absoluto.&lt;/p&gt;
&lt;p&gt;Consideremos una transferencia bancaria. Restar dinero de una cuenta y sumarlo a otra no son acciones independientes desde el punto de vista del negocio. Si una actualización se ejecuta y la otra falla, el sistema queda en un estado inconsistente.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;START&lt;/span&gt; &lt;span style="color:#c678dd"&gt;TRANSACTION&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7f848e"&gt;/* retirar dinero de la primera cuenta, validando saldo suficiente */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;UPDATE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;account&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SET&lt;/span&gt; &lt;span style="color:#e06c75"&gt;avail_balance&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;avail_balance&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;-&lt;/span&gt; &lt;span style="color:#d19a66"&gt;500&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;account_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#d19a66"&gt;9988&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#e06c75"&gt;avail_balance&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#d19a66"&gt;500&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;IF&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#e06c75"&gt;exactly&lt;/span&gt; &lt;span style="color:#e06c75"&gt;one&lt;/span&gt; &lt;span style="color:#c678dd"&gt;row&lt;/span&gt; &lt;span style="color:#e06c75"&gt;was&lt;/span&gt; &lt;span style="color:#e06c75"&gt;updated&lt;/span&gt; &lt;span style="color:#c678dd"&gt;by&lt;/span&gt; &lt;span style="color:#e06c75"&gt;the&lt;/span&gt; &lt;span style="color:#e06c75"&gt;previous&lt;/span&gt; &lt;span style="color:#c678dd"&gt;statement&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7f848e"&gt;/* depositar dinero en la segunda cuenta */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;UPDATE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;account&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SET&lt;/span&gt; &lt;span style="color:#e06c75"&gt;avail_balance&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;avail_balance&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;+&lt;/span&gt; &lt;span style="color:#d19a66"&gt;500&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;account_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#d19a66"&gt;9989&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;IF&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#e06c75"&gt;exactly&lt;/span&gt; &lt;span style="color:#e06c75"&gt;one&lt;/span&gt; &lt;span style="color:#c678dd"&gt;row&lt;/span&gt; &lt;span style="color:#e06c75"&gt;was&lt;/span&gt; &lt;span style="color:#e06c75"&gt;updated&lt;/span&gt; &lt;span style="color:#c678dd"&gt;by&lt;/span&gt; &lt;span style="color:#e06c75"&gt;the&lt;/span&gt; &lt;span style="color:#e06c75"&gt;previous&lt;/span&gt; &lt;span style="color:#c678dd"&gt;statement&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7f848e"&gt;/* todo funcionó, hacer los cambios permanentes */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;COMMIT&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;ELSE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7f848e"&gt;/* algo falló, deshacer todos los cambios de esta transacción */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;ROLLBACK&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;END&lt;/span&gt; &lt;span style="color:#c678dd"&gt;IF&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;ELSE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#7f848e"&gt;/* saldo insuficiente o error durante la actualización */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;ROLLBACK&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;END&lt;/span&gt; &lt;span style="color:#c678dd"&gt;IF&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En este flujo, &lt;code&gt;COMMIT&lt;/code&gt; confirma los cambios y &lt;code&gt;ROLLBACK&lt;/code&gt; revierte todo lo ejecutado desde el inicio de la transacción. La base de datos actúa como una frontera de consistencia.&lt;/p&gt;
&lt;h3 id="candados-y-concurrencia"&gt;Candados y concurrencia&lt;/h3&gt;
&lt;p&gt;Cuando varias sesiones intentan leer o escribir los mismos datos, el motor puede usar &lt;strong&gt;candados&lt;/strong&gt; (&lt;em&gt;locks&lt;/em&gt;) sobre filas, páginas o tablas. Los locks evitan que una transacción lea datos en transición o sobrescriba cambios que todavía no han sido confirmados.&lt;/p&gt;
&lt;h2 id="iniciar-una-transacción"&gt;Iniciar una transacción&lt;/h2&gt;
&lt;p&gt;Los servidores de base de datos suelen manejar la creación de transacciones de una de estas dos formas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Siempre existe una transacción activa asociada a la sesión. Cuando la transacción actual termina, el servidor inicia automáticamente una nueva.&lt;/li&gt;
&lt;li&gt;Cada sentencia SQL se confirma automáticamente, a menos que inicies una transacción explícita.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En MySQL, una transacción explícita puede comenzar con:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;start&lt;/span&gt; &lt;span style="color:#c678dd"&gt;transaction&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



 
 





 


&lt;div class="notice tip"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0 1 12 21 8.25 8.25 0 0 1 6.038 7.047 8.287 8.287 0 0 0 9 9.601a8.983 8.983 0 0 1 3.361-6.867 8.21 8.21 0 0 0 3 2.48Z" /&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 0 0 .495-7.468 5.99 5.99 0 0 0-1.925 3.547 5.975 5.975 0 0 1-2.133-1.001A3.75 3.75 0 0 0 12 18Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Tip&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Puedes configurar el comportamiento de &lt;code&gt;autocommit&lt;/code&gt; según el motor y el cliente que uses.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="terminar-una-transacción"&gt;Terminar una transacción&lt;/h2&gt;
&lt;p&gt;Una vez iniciada una transacción, necesitas terminarla explícitamente para que los cambios sean permanentes. &lt;code&gt;COMMIT&lt;/code&gt; marca los cambios como definitivos y libera recursos usados durante la transacción,.&lt;/p&gt;
&lt;p&gt;Si decides deshacer lo ejecutado desde el inicio de la transacción, usas &lt;code&gt;ROLLBACK&lt;/code&gt;. El servidor devuelve los datos al estado previo de la transacción.&lt;/p&gt;
&lt;p&gt;Además de &lt;code&gt;COMMIT&lt;/code&gt; y &lt;code&gt;ROLLBACK&lt;/code&gt;, una transacción puede terminar por otros eventos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El servidor se apaga; al reiniciar, la transacción pendiente se revierte automáticamente.&lt;/li&gt;
&lt;li&gt;Ejecutas una sentencia de esquema como &lt;code&gt;ALTER TABLE&lt;/code&gt;; en varios motores esto puede confirmar la transacción actual e iniciar otra.&lt;/li&gt;
&lt;li&gt;Ejecutas otro &lt;code&gt;START TRANSACTION&lt;/code&gt;; algunos motores confirman la transacción anterior antes de abrir la nueva.&lt;/li&gt;
&lt;li&gt;El servidor detecta un &lt;strong&gt;deadlock&lt;/strong&gt;, elige una transacción como víctima y la revierte para desbloquear el sistema.&lt;/li&gt;
&lt;/ul&gt;




 
 





 


&lt;div class="notice warning"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Warning&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Las sentencias DDL no siempre participan en transacciones igual que las sentencias DML. Antes de mezclar &lt;code&gt;ALTER TABLE&lt;/code&gt;, &lt;code&gt;CREATE INDEX&lt;/code&gt; o cambios de esquema con operaciones de datos, revisa el comportamiento específico de tu motor.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3 id="savepoints-dentro-de-una-transacción"&gt;Savepoints dentro de una transacción&lt;/h3&gt;
&lt;p&gt;Los &lt;strong&gt;savepoints&lt;/strong&gt; permiten definir puntos intermedios de rollback dentro de una misma transacción. En lugar de revertir todo, puedes regresar a un punto específico y continuar trabajando.&lt;/p&gt;
&lt;h2 id="índices-y-constraints"&gt;Índices y constraints&lt;/h2&gt;
&lt;p&gt;Una consulta sin apoyo puede obligar al servidor a escanear fila por fila. En tablas con millones de registros y decenas de columnas, esto se convierte en un cuello de botella.&lt;/p&gt;
&lt;p&gt;Los &lt;strong&gt;índices&lt;/strong&gt; son estructuras auxiliares que permiten encontrar filas con menos trabajo. Aceleran búsquedas, filtros, joins y ordenamientos.&lt;/p&gt;
&lt;h2 id="creación-de-índices"&gt;Creación de índices&lt;/h2&gt;
&lt;p&gt;Para crear un índice en MySQL podemos usar &lt;code&gt;ALTER TABLE&lt;/code&gt;. Supongamos que el sistema consulta clientes frecuentemente por correo electrónico:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ALTER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;TABLE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ADD&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INDEX&lt;/span&gt; &lt;span style="color:#e06c75"&gt;idx_email&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;email&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;Query&lt;/span&gt; &lt;span style="color:#e06c75"&gt;OK&lt;/span&gt;, &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#e06c75"&gt;affected&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;1&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;87&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;Records&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Duplicates&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Warnings&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Después de crear el índice, el optimizador decide si conviene usarlo. El motor evalúa estadísticas, cardinalidad y costo estimado.&lt;/p&gt;
&lt;p&gt;Podemos inspeccionar los índices existentes con &lt;code&gt;SHOW INDEX&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SHOW&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INDEX&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; \&lt;span style="color:#c678dd"&gt;G&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;***************************&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt;. &lt;span style="color:#c678dd"&gt;row&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;***************************&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;Table&lt;/span&gt;: &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;Non_unique&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;Key_name&lt;/span&gt;: &lt;span style="color:#e06c75"&gt;idx_email&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;Seq_in_index&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;Column_name&lt;/span&gt;: &lt;span style="color:#e06c75"&gt;email&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;Collation&lt;/span&gt;: &lt;span style="color:#e06c75"&gt;A&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;Cardinality&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;599&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;Sub_part&lt;/span&gt;: &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;Packed&lt;/span&gt;: &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;Null&lt;/span&gt;: &lt;span style="color:#e06c75"&gt;YES&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;Index_type&lt;/span&gt;: &lt;span style="color:#e06c75"&gt;BTREE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;5&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;06&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Y también podemos eliminarlos cuando dejan de aportar valor:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ALTER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;TABLE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;DROP&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INDEX&lt;/span&gt; &lt;span style="color:#e06c75"&gt;idx_email&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;Query&lt;/span&gt; &lt;span style="color:#e06c75"&gt;OK&lt;/span&gt;, &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#e06c75"&gt;affected&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;50&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;Records&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Duplicates&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Warnings&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



 
 





 


&lt;div class="notice info"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Info&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Cada índice ocupa espacio y debe actualizarse cuando cambian las filas afectadas. Un índice acelera lecturas específicas, pero también puede encarecer escrituras como &lt;code&gt;INSERT&lt;/code&gt;, &lt;code&gt;UPDATE&lt;/code&gt; y &lt;code&gt;DELETE&lt;/code&gt;.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="índices-únicos"&gt;Índices únicos&lt;/h2&gt;
&lt;p&gt;Un &lt;strong&gt;índice único&lt;/strong&gt; cumple dos funciones: acelera búsquedas y evita valores duplicados en las columnas indexadas. Cada vez que insertas una fila o modificas la columna, el servidor valida si el valor ya existe.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ALTER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;TABLE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ADD&lt;/span&gt; &lt;span style="color:#c678dd"&gt;UNIQUE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;idx_email&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;email&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;Query&lt;/span&gt; &lt;span style="color:#e06c75"&gt;OK&lt;/span&gt;, &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#e06c75"&gt;affected&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;64&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;Records&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Duplicates&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Warnings&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Si intentas insertar un cliente con un email ya registrado, el motor rechaza la operación:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INSERT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INTO&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;store_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;email&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;address_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;active&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;VALUES&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;1&lt;/span&gt;,&lt;span style="color:#98c379"&gt;&amp;#39;ALAN&amp;#39;&lt;/span&gt;,&lt;span style="color:#98c379"&gt;&amp;#39;KAHN&amp;#39;&lt;/span&gt;, &lt;span style="color:#98c379"&gt;&amp;#39;ALAN.KAHN@sakilacustomer.org&amp;#39;&lt;/span&gt;, &lt;span style="color:#d19a66"&gt;394&lt;/span&gt;, &lt;span style="color:#d19a66"&gt;1&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;ERROR&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1062&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;23000&lt;/span&gt;): &lt;span style="color:#e06c75"&gt;Duplicate&lt;/span&gt; &lt;span style="color:#e06c75"&gt;entry&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;ALAN.KAHN@sakilacustomer.org&amp;#39;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;for&lt;/span&gt; &lt;span style="color:#c678dd"&gt;key&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;idx_email&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="índices-multicolumna"&gt;Índices multicolumna&lt;/h2&gt;
&lt;p&gt;También puedes crear índices que cubren varias columnas. Si buscas clientes por apellido y nombre, un índice compuesto puede ser más útil que dos índices separados.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ALTER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;TABLE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ADD&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INDEX&lt;/span&gt; &lt;span style="color:#e06c75"&gt;idx_full_name&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;Query&lt;/span&gt; &lt;span style="color:#e06c75"&gt;OK&lt;/span&gt;, &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#e06c75"&gt;affected&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;35&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;Records&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Duplicates&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Warnings&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;El orden importa. Un índice &lt;code&gt;(last_name, first_name)&lt;/code&gt; ayuda a consultas que filtran por &lt;code&gt;last_name&lt;/code&gt; o por &lt;code&gt;last_name&lt;/code&gt; junto con &lt;code&gt;first_name&lt;/code&gt;. No ayuda igual a una consulta que filtra solo por &lt;code&gt;first_name&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="tipos-de-índices"&gt;Tipos de índices&lt;/h2&gt;
&lt;h3 id="índices-b-tree"&gt;Índices B-tree&lt;/h3&gt;
&lt;p&gt;Los índices &lt;strong&gt;B-tree&lt;/strong&gt; organizan los valores como árboles balanceados. Los &lt;strong&gt;branch nodes&lt;/strong&gt; sirven para navegar por rangos, mientras que los &lt;strong&gt;leaf nodes&lt;/strong&gt; almacenan los valores reales del índice.&lt;/p&gt;
&lt;p&gt;Branch nodes dirigen la búsqueda hacia el rango correcto; leaf nodes contienen las entradas finales asociadas a los valores indexados.&lt;/p&gt;
&lt;pre class="mermaid"&gt;flowchart TD
 root["Nodo raíz&lt;br/&gt;A - M | N - Z"]
 b1["A-C | D-F | G-I | J-M"]
 b2["N-P | Q-S | T-V | W-Z"]
 root --&gt; b1
 root --&gt; b2
 b1 --&gt; l1["Barker&lt;br/&gt;Blake"]
 b1 --&gt; l2["Fleming&lt;br/&gt;Fowler"]
 b1 --&gt; l3["Gooding&lt;br/&gt;Grossman&lt;br/&gt;Hawthorne"]
 b1 --&gt; l4["Jameson&lt;br/&gt;Markham&lt;br/&gt;Mason"]
 b2 --&gt; l5["Parker&lt;br/&gt;Portman"]
 b2 --&gt; l6["Roberts&lt;br/&gt;Smith"]
 b2 --&gt; l7["Tucker&lt;br/&gt;Tulman&lt;br/&gt;Tyler"]
 b2 --&gt; l8["Ziegler"]
&lt;/pre&gt;

&lt;p&gt;Este tipo de índice funciona muy bien para columnas con muchos valores distintos, como &lt;code&gt;customer.last_name&lt;/code&gt;, fechas, identificadores externos o campos usados en rangos.&lt;/p&gt;
&lt;h3 id="índices-bitmap"&gt;Índices bitmap&lt;/h3&gt;
&lt;p&gt;Los &lt;strong&gt;bitmap indexes&lt;/strong&gt; están diseñados para columnas de baja cardinalidad, es decir, columnas con pocos valores posibles repetidos en muchas filas. Un ejemplo clásico es &lt;code&gt;customer.active&lt;/code&gt;, donde puede haber solo &lt;code&gt;1&lt;/code&gt; para activo y &lt;code&gt;0&lt;/code&gt; para inactivo.&lt;/p&gt;
&lt;p&gt;En lugar de mantener un árbol grande, el motor mantiene bitmaps por valor. Para consultar clientes inactivos, puede recorrer el bitmap del valor &lt;code&gt;0&lt;/code&gt; y localizar las filas correspondientes.&lt;/p&gt;
&lt;p&gt;Esta estrategia es compacta para baja cardinalidad, pero se degrada cuando la columna tiene demasiados valores distintos.&lt;/p&gt;
&lt;h3 id="índices-de-texto"&gt;Índices de texto&lt;/h3&gt;
&lt;p&gt;Cuando almacenas documentos o contenido largo, buscar palabras con un escaneo completo es costoso.&lt;/p&gt;
&lt;p&gt;MySQL y SQL Server ofrecen índices &lt;strong&gt;full-text&lt;/strong&gt;; Oracle incluye herramientas bajo &lt;strong&gt;Oracle Text&lt;/strong&gt;. Estos mecanismos están especializados para documentos y búsquedas textuales.&lt;/p&gt;
&lt;h2 id="cómo-se-usan-los-índices"&gt;Cómo se usan los índices&lt;/h2&gt;
&lt;p&gt;Los índices permiten acceder rápidamente a datos, pero el motor decide si usarlos según el plan de ejecución. Un índice creado no garantiza automáticamente una consulta más rápida.&lt;/p&gt;
&lt;p&gt;Observemos tres criterios prácticos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Crea índices alrededor de consultas frecuentes, no alrededor de columnas al azar.&lt;/li&gt;
&lt;li&gt;Evita indexar columnas con baja selectividad usando B-tree si el motor ofrece una estrategia mejor.&lt;/li&gt;
&lt;li&gt;Mide el impacto en escrituras, porque cada índice debe mantenerse actualizado.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="constraints-restricciones-de-integridad"&gt;Constraints: restricciones de integridad&lt;/h2&gt;
&lt;p&gt;Una &lt;strong&gt;constraint&lt;/strong&gt; es una restricción aplicada a una o más columnas de una tabla. Vive dentro del esquema y protege los datos desde la base.&lt;/p&gt;
&lt;p&gt;Los tipos principales son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Primary key constraints&lt;/strong&gt;: identifican la columna o combinación de columnas que garantizan unicidad dentro de una tabla.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Foreign key constraints&lt;/strong&gt;: restringen una o más columnas para que contengan valores existentes en la primary key de otra tabla.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unique constraints&lt;/strong&gt;: evitan duplicados en una o más columnas; una primary key es un caso especial de unicidad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Check constraints&lt;/strong&gt;: restringen los valores permitidos para una columna según una condición.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Normalmente las constraints se crean junto con la tabla usando &lt;code&gt;CREATE TABLE&lt;/code&gt;. Este ejemplo del esquema Sakila combina primary key, índices y foreign keys:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;CREATE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;TABLE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;SMALLINT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;UNSIGNED&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NOT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AUTO_INCREMENT&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;store_id&lt;/span&gt; &lt;span style="color:#e06c75"&gt;TINYINT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;UNSIGNED&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NOT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;VARCHAR&lt;/span&gt;(&lt;span style="color:#d19a66"&gt;45&lt;/span&gt;) &lt;span style="color:#c678dd"&gt;NOT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;VARCHAR&lt;/span&gt;(&lt;span style="color:#d19a66"&gt;45&lt;/span&gt;) &lt;span style="color:#c678dd"&gt;NOT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;email&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;VARCHAR&lt;/span&gt;(&lt;span style="color:#d19a66"&gt;50&lt;/span&gt;) &lt;span style="color:#c678dd"&gt;DEFAULT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;address_id&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;SMALLINT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;UNSIGNED&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NOT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;active&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;BOOLEAN&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NOT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt; &lt;span style="color:#c678dd"&gt;DEFAULT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;TRUE&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;create_date&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DATETIME&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NOT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;last_update&lt;/span&gt; &lt;span style="color:#c678dd"&gt;TIMESTAMP&lt;/span&gt; &lt;span style="color:#c678dd"&gt;DEFAULT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;CURRENT_TIMESTAMP&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;UPDATE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;CURRENT_TIMESTAMP&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;PRIMARY&lt;/span&gt; &lt;span style="color:#c678dd"&gt;KEY&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;KEY&lt;/span&gt; &lt;span style="color:#e06c75"&gt;idx_fk_store_id&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;store_id&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;KEY&lt;/span&gt; &lt;span style="color:#e06c75"&gt;idx_fk_address_id&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;address_id&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;KEY&lt;/span&gt; &lt;span style="color:#e06c75"&gt;idx_last_name&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;CONSTRAINT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fk_customer_address&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FOREIGN&lt;/span&gt; &lt;span style="color:#c678dd"&gt;KEY&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;address_id&lt;/span&gt;) 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;REFERENCES&lt;/span&gt; &lt;span style="color:#e06c75"&gt;address&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;address_id&lt;/span&gt;) &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;DELETE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;RESTRICT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;UPDATE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;CASCADE&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;CONSTRAINT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fk_customer_store&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FOREIGN&lt;/span&gt; &lt;span style="color:#c678dd"&gt;KEY&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;store_id&lt;/span&gt;) 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;REFERENCES&lt;/span&gt; &lt;span style="color:#e06c75"&gt;store&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;store_id&lt;/span&gt;) &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;DELETE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;RESTRICT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;UPDATE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;CASCADE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&lt;span style="color:#e06c75"&gt;ENGINE&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;=&lt;/span&gt;&lt;span style="color:#e06c75"&gt;InnoDB&lt;/span&gt; &lt;span style="color:#c678dd"&gt;DEFAULT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CHARSET&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;=&lt;/span&gt;&lt;span style="color:#e06c75"&gt;utf8&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;También puedes agregar constraints después con &lt;code&gt;ALTER TABLE&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;ALTER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;TABLE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;ADD&lt;/span&gt; &lt;span style="color:#c678dd"&gt;CONSTRAINT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fk_customer_address&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FOREIGN&lt;/span&gt; &lt;span style="color:#c678dd"&gt;KEY&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;address_id&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;REFERENCES&lt;/span&gt; &lt;span style="color:#e06c75"&gt;address&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;address_id&lt;/span&gt;) &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;DELETE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;RESTRICT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;UPDATE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;CASCADE&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;ALTER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;TABLE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;ADD&lt;/span&gt; &lt;span style="color:#c678dd"&gt;CONSTRAINT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fk_customer_store&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FOREIGN&lt;/span&gt; &lt;span style="color:#c678dd"&gt;KEY&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;store_id&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;REFERENCES&lt;/span&gt; &lt;span style="color:#e06c75"&gt;store&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;store_id&lt;/span&gt;) &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;DELETE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;RESTRICT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;UPDATE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;CASCADE&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La cláusula &lt;code&gt;ON DELETE RESTRICT&lt;/code&gt; protege contra registros huérfanos cuando se intenta eliminar una fila padre.&lt;/p&gt;
&lt;p&gt;Para foreign keys, las acciones comunes ante borrados y actualizaciones son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ON DELETE RESTRICT&lt;/code&gt;: impide borrar la fila padre si existen filas hijas relacionadas.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ON DELETE CASCADE&lt;/code&gt;: borra automáticamente las filas hijas cuando se borra la fila padre.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ON DELETE SET NULL&lt;/code&gt;: asigna &lt;code&gt;NULL&lt;/code&gt; en la foreign key de las filas hijas cuando se borra la fila padre.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ON UPDATE RESTRICT&lt;/code&gt;: impide actualizar la clave padre si hay filas hijas relacionadas.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ON UPDATE CASCADE&lt;/code&gt;: propaga el cambio de clave hacia las filas hijas.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ON UPDATE SET NULL&lt;/code&gt;: asigna &lt;code&gt;NULL&lt;/code&gt; en la foreign key de las filas hijas cuando cambia la clave padre.&lt;/li&gt;
&lt;/ul&gt;




 
 





 


&lt;div class="notice warning"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Warning&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;&lt;code&gt;CASCADE&lt;/code&gt; es potente, pero debe modelarse con cuidado. Una eliminación pequeña puede disparar borrados en varias tablas.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="conclusión-de-la-serie-sql"&gt;Conclusión de la serie SQL&lt;/h2&gt;
&lt;p&gt;Las transacciones, índices y constraints completan la base práctica para trabajar con SQL de forma profesional. Protegen operaciones compuestas, reducen el costo de acceso a datos y llevan reglas críticas al esquema.&lt;/p&gt;
&lt;p&gt;Con este artículo cerramos la serie de SQL. Para repasar desde el inicio, vuelve a: &lt;a href="https://blog.dacadev.com/programacion/sql/01-fundamentos-sql-select-from-where"



 


&gt;Fundamentos SQL: SELECT, FROM y WHERE&lt;/a&gt;. Desde ahí puedes recorrer consultas, filtros, joins, agrupaciones, subconsultas, vistas y estos mecanismos de integridad y rendimiento.&lt;/p&gt;</content:encoded></item><item><title>SQL: Vistas (Views) para Abstraer y Asegurar tus Datos</title><link>https://blog.dacadev.com/programacion/sql/07-vistas-views/</link><pubDate>Tue, 23 Jun 2026 00:00:00 -0500</pubDate><guid>https://blog.dacadev.com/programacion/sql/07-vistas-views/</guid><dc:creator>Dacadev</dc:creator><category>programación</category><description>Aprende a crear vistas en SQL con CREATE VIEW para abstraer consultas, proteger datos sensibles y entender cuándo una vista es actualizable.</description><media:content url="https://blog.dacadev.com/images/programming/sql/views/banner.png" medium="image" type="image/png"/><content:encoded>
&lt;details class="table-of-content "&gt;
 &lt;summary&gt;
 
 Tabla de Contenido
 
 &lt;/summary&gt;
 &lt;nav id="TableOfContents"&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#qué-es-una-vista"&gt;Qué es una vista&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#por-qué-usar-vistas"&gt;Por qué usar vistas&lt;/a&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#seguridad-de-los-datos"&gt;Seguridad de los datos&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#agregar-datos"&gt;Agregar datos&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#esconder-complejidad"&gt;Esconder complejidad&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#datos-distribuidos-o-particionados"&gt;Datos distribuidos o particionados&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#vistas-actualizables"&gt;Vistas actualizables&lt;/a&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#actualizando-vistas-simples"&gt;Actualizando vistas simples&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#conclusión"&gt;Conclusión&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
&lt;/nav&gt;
&lt;/details&gt;

&lt;p&gt;Cuando una base de datos crece, las consultas empiezan a acumular lógica de negocio, joins repetidos, filtros de seguridad y columnas calculadas. En ese punto, las &lt;strong&gt;vistas en SQL&lt;/strong&gt; se vuelven una herramienta clave: con &lt;code&gt;CREATE VIEW&lt;/code&gt; podemos encapsular una consulta y exponerla como si fuera una tabla lógica. En el artículo anterior vimos &lt;a href="https://blog.dacadev.com/programacion/sql/06-subqueries-subconsultas"



 


&gt;subqueries y subconsultas&lt;/a&gt;; ahora vamos a usar ese mismo nivel de composición para abstraer, asegurar y simplificar el acceso a datos.&lt;/p&gt;




 
 





 


&lt;div class="notice note"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" width="22" height="22" stroke-width="1.5" stroke="currentColor"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Note&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;En este artículo analizaremos qué es una vista, cómo crearla con &lt;code&gt;CREATE VIEW&lt;/code&gt;, por qué ayuda con seguridad, agregación, complejidad y datos distribuidos, y qué condiciones debe cumplir una vista para ser actualizable.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="qué-es-una-vista"&gt;Qué es una vista&lt;/h2&gt;
&lt;p&gt;Una &lt;strong&gt;vista&lt;/strong&gt; no es una tabla física. En términos prácticos, es una consulta guardada en la base de datos que puedes consultar con &lt;code&gt;SELECT&lt;/code&gt; como si fuera una tabla. La vista no almacena los registros por sí misma; almacena la definición del query que se ejecutará cuando accedas a ella.&lt;/p&gt;
&lt;p&gt;Esto reduce repetición y mejora la legibilidad. Si una consulta se usa todos los días, o si quieres exponer solo ciertas columnas a un equipo o aplicación, una vista ofrece una interfaz estable sobre las tablas base.&lt;/p&gt;
&lt;p&gt;Consideremos una vista sobre la tabla &lt;code&gt;customer&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;CREATE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;VIEW&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_vw&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;email&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; )
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;AS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;concat&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;substr&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;email&lt;/span&gt;,&lt;span style="color:#d19a66"&gt;1&lt;/span&gt;,&lt;span style="color:#d19a66"&gt;2&lt;/span&gt;), &lt;span style="color:#98c379"&gt;&amp;#39;*****&amp;#39;&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;substr&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;email&lt;/span&gt;, &lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;4&lt;/span&gt;)) &lt;span style="color:#e06c75"&gt;email&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En este ejemplo, la vista &lt;code&gt;customer_vw&lt;/code&gt; expone &lt;code&gt;customer_id&lt;/code&gt;, &lt;code&gt;first_name&lt;/code&gt;, &lt;code&gt;last_name&lt;/code&gt; y &lt;code&gt;email&lt;/code&gt;. Observemos un detalle importante: el email no se entrega completo, sino enmascarado mediante &lt;code&gt;concat()&lt;/code&gt; y &lt;code&gt;substr()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Para usar la vista, la consultamos como cualquier otra relación:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;email&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_vw&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+--------------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;email&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+--------------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MARY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SMITH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MA&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;*****&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;org&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PATRICIA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JOHNSON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PA&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;*****&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;org&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;LINDA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WILLIAMS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;LI&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;*****&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;org&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BARBARA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JONES&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BA&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;*****&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;org&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ELIZABETH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BROWN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;EL&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;*****&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;org&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ENRIQUE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FORSYTHE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;EN&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;*****&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;org&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FREDDIE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DUGGAN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FR&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;*****&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;org&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WADE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DELVALLE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WA&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;*****&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;org&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AUSTIN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CINTRON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AU&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;*****&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;org&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+--------------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;599&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La consulta queda más expresiva: en lugar de repetir el cálculo del email en cada reporte, centralizamos esa lógica en una vista.&lt;/p&gt;
&lt;p&gt;Si necesitas inspeccionar la estructura de una vista, puedes usar &lt;code&gt;DESCRIBE&lt;/code&gt; o su forma corta &lt;code&gt;DESC&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;describe&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_vw&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+----------------------+------+-----+---------+-------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Field&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;Type&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;Null&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;Key&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;Default&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Extra&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+----------------------+------+-----+---------+-------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;smallint&lt;/span&gt;(&lt;span style="color:#d19a66"&gt;5&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;unsigned&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NO&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;varchar&lt;/span&gt;(&lt;span style="color:#d19a66"&gt;45&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NO&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;varchar&lt;/span&gt;(&lt;span style="color:#d19a66"&gt;45&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NO&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;email&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;varchar&lt;/span&gt;(&lt;span style="color:#d19a66"&gt;11&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;YES&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+----------------------+------+-----+---------+-------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;4&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



 
 





 


&lt;div class="notice tip"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0 1 12 21 8.25 8.25 0 0 1 6.038 7.047 8.287 8.287 0 0 0 9 9.601a8.983 8.983 0 0 1 3.361-6.867 8.21 8.21 0 0 0 3 2.48Z" /&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 0 0 .495-7.468 5.99 5.99 0 0 0-1.925 3.547 5.975 5.975 0 0 1-2.133-1.001A3.75 3.75 0 0 0 12 18Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Tip&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Puedes usar en vistas gran parte de lo que ya conoces de SQL: &lt;code&gt;WHERE&lt;/code&gt;, &lt;code&gt;ORDER BY&lt;/code&gt;, &lt;code&gt;GROUP BY&lt;/code&gt;, funciones, expresiones calculadas e incluso &lt;code&gt;JOIN&lt;/code&gt;. La vista encapsula la consulta; no elimina la necesidad de diseñarla correctamente.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="por-qué-usar-vistas"&gt;Por qué usar vistas&lt;/h2&gt;
&lt;p&gt;Las vistas son útiles cuando necesitas definir una capa de acceso estable entre las tablas reales y los consumidores de datos. Esa capa puede servir para seguridad, reporting, simplificación de consultas o unificación de datos.&lt;/p&gt;
&lt;h3 id="seguridad-de-los-datos"&gt;Seguridad de los datos&lt;/h3&gt;
&lt;p&gt;Cuando los usuarios consultan directamente las tablas base, pueden quedar expuestas columnas sensibles que no deberían estar disponibles para todos los perfiles. Una vista permite publicar solo las columnas necesarias y, si hace falta, transformar datos antes de mostrarlos.&lt;/p&gt;
&lt;p&gt;El ejemplo de &lt;code&gt;customer_vw&lt;/code&gt; aplica este patrón: el email se expone enmascarado. En una aplicación interna, podrías conceder permisos sobre la vista y evitar permisos directos sobre &lt;code&gt;customer&lt;/code&gt;. Así reduces superficie de exposición sin duplicar datos.&lt;/p&gt;
&lt;p&gt;Este enfoque también estabiliza contratos. Si la tabla base contiene más columnas en el futuro, los consumidores de la vista no las reciben automáticamente.&lt;/p&gt;
&lt;h3 id="agregar-datos"&gt;Agregar datos&lt;/h3&gt;
&lt;p&gt;Las vistas también funcionan bien para reportes o consultas agregadas. Si un equipo necesita revisar ventas por categoría de película, no tiene que escribir todos los &lt;code&gt;JOIN&lt;/code&gt; cada vez.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;CREATE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;VIEW&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sales_by_film_category&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;AS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;name&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AS&lt;/span&gt; &lt;span style="color:#e06c75"&gt;category&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;SUM&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;p&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;amount&lt;/span&gt;) &lt;span style="color:#c678dd"&gt;AS&lt;/span&gt; &lt;span style="color:#e06c75"&gt;total_sales&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;payment&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AS&lt;/span&gt; &lt;span style="color:#e06c75"&gt;p&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AS&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;p&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;rental_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;rental_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;inventory&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AS&lt;/span&gt; &lt;span style="color:#e06c75"&gt;i&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;inventory_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;i&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;inventory_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AS&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;i&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_category&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AS&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fc&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fc&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;category&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AS&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fc&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;category_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;category_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;GROUP&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BY&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;ORDER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BY&lt;/span&gt; &lt;span style="color:#e06c75"&gt;total_sales&lt;/span&gt; &lt;span style="color:#c678dd"&gt;DESC&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Esta vista encapsula una agregación de pagos por categoría. El consumidor puede ejecutar &lt;code&gt;SELECT * FROM sales_by_film_category;&lt;/code&gt; y enfocarse en el resultado, no en la mecánica de las relaciones.&lt;/p&gt;




 
 





 


&lt;div class="notice info"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Info&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Una vista con agregaciones no materializa necesariamente el resultado. En muchos motores, la consulta se evalúa al leer la vista. Si el reporte es costoso y se consulta con alta frecuencia, analiza índices, planes de ejecución o alternativas como vistas materializadas cuando tu motor las soporte.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3 id="esconder-complejidad"&gt;Esconder complejidad&lt;/h3&gt;
&lt;p&gt;Otra ventaja importante es ocultar consultas complejas detrás de un nombre claro. Analicemos una vista que resume estadísticas de películas usando subconsultas:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;CREATE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;VIEW&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_stats&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;AS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;title&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;description&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;rating&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;category&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_category&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;category_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fc&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;category_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fc&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;category_name&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_actor&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ) &lt;span style="color:#e06c75"&gt;num_actors&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;inventory&lt;/span&gt; &lt;span style="color:#e06c75"&gt;i&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;i&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ) &lt;span style="color:#e06c75"&gt;inventory_cnt&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;inventory&lt;/span&gt; &lt;span style="color:#e06c75"&gt;i&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;i&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;inventory_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;inventory_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;i&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ) &lt;span style="color:#e06c75"&gt;num_rentals&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Esta consulta mezcla columnas directas, subqueries correlacionadas y conteos derivados. Usar &lt;code&gt;film_stats&lt;/code&gt; como interfaz simplifica el consumo y reduce errores de copia al reutilizar la lógica.&lt;/p&gt;
&lt;p&gt;También mejora la comunicación técnica. Un nombre como &lt;code&gt;film_stats&lt;/code&gt; expresa intención de negocio mejor que una consulta extensa pegada en múltiples servicios, dashboards o scripts.&lt;/p&gt;
&lt;h3 id="datos-distribuidos-o-particionados"&gt;Datos distribuidos o particionados&lt;/h3&gt;
&lt;p&gt;Las vistas pueden ayudar a unificar datos que viven en diferentes tablas. Si una tabla está particionada por año, por región o por tipo de entidad, una vista puede presentar una estructura más simple para quien consulta.&lt;/p&gt;
&lt;p&gt;El objetivo no es ocultar decisiones arquitectónicas críticas, sino evitar que cada consumidor tenga que conocer todos los detalles físicos del modelo. Una vista puede funcionar como una API interna de lectura dentro de la base de datos.&lt;/p&gt;
&lt;h2 id="vistas-actualizables"&gt;Vistas actualizables&lt;/h2&gt;
&lt;p&gt;Hasta ahora hemos usado vistas para leer datos. Sin embargo, algunos motores permiten ejecutar &lt;code&gt;UPDATE&lt;/code&gt;, &lt;code&gt;INSERT&lt;/code&gt; o &lt;code&gt;DELETE&lt;/code&gt; a través de una vista, siempre que la base de datos pueda mapear la operación de forma inequívoca hacia las tablas base.&lt;/p&gt;
&lt;p&gt;No todas las vistas son actualizables. Mientras más transformación tenga una vista, más difícil será determinar qué fila y qué columna real debe modificarse.&lt;/p&gt;
&lt;p&gt;Para que una vista sea actualizable, considera estas restricciones típicas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No se usan funciones de agregación como &lt;code&gt;max()&lt;/code&gt;, &lt;code&gt;min()&lt;/code&gt;, &lt;code&gt;avg()&lt;/code&gt;, &lt;code&gt;sum()&lt;/code&gt; o similares.&lt;/li&gt;
&lt;li&gt;La vista no utiliza cláusulas &lt;code&gt;GROUP BY&lt;/code&gt; ni &lt;code&gt;HAVING&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;No existen subconsultas en el &lt;code&gt;SELECT&lt;/code&gt; ni en el &lt;code&gt;FROM&lt;/code&gt;; y las subconsultas en el &lt;code&gt;WHERE&lt;/code&gt;, si existen, no hacen referencia a tablas del &lt;code&gt;FROM&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;La vista no utiliza &lt;code&gt;UNION&lt;/code&gt;, &lt;code&gt;UNION ALL&lt;/code&gt; ni &lt;code&gt;DISTINCT&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;La cláusula &lt;code&gt;FROM&lt;/code&gt; incluye al menos una tabla o una vista actualizable.&lt;/li&gt;
&lt;li&gt;Si hay más de una tabla o vista en el &lt;code&gt;FROM&lt;/code&gt;, se usan únicamente &lt;code&gt;INNER JOIN&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;




 
 





 


&lt;div class="notice warning"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Warning&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Las reglas exactas dependen del motor de base de datos. MySQL, PostgreSQL, SQL Server y Oracle tienen diferencias en sintaxis, permisos y casos soportados. Antes de depender de escrituras sobre vistas en producción, valida el comportamiento en tu motor específico.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3 id="actualizando-vistas-simples"&gt;Actualizando vistas simples&lt;/h3&gt;
&lt;p&gt;Supongamos nuevamente la vista &lt;code&gt;customer_vw&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;CREATE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;VIEW&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_vw&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;email&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; )
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;AS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;concat&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;substr&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;email&lt;/span&gt;,&lt;span style="color:#d19a66"&gt;1&lt;/span&gt;,&lt;span style="color:#d19a66"&gt;2&lt;/span&gt;), &lt;span style="color:#98c379"&gt;&amp;#39;*****&amp;#39;&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;substr&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;email&lt;/span&gt;, &lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;4&lt;/span&gt;)) &lt;span style="color:#e06c75"&gt;email&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Podemos actualizar una columna directa de la tabla base, como &lt;code&gt;last_name&lt;/code&gt;, usando la vista:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;UPDATE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_vw&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SET&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;SMITH-ALLEN&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;Query&lt;/span&gt; &lt;span style="color:#e06c75"&gt;OK&lt;/span&gt;, &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#c678dd"&gt;row&lt;/span&gt; &lt;span style="color:#e06c75"&gt;affected&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;11&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;Rows&lt;/span&gt; &lt;span style="color:#e06c75"&gt;matched&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Changed&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Warnings&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La operación funciona porque &lt;code&gt;last_name&lt;/code&gt; corresponde directamente a una columna actualizable de &lt;code&gt;customer&lt;/code&gt;. La vista actúa como una capa de acceso, pero el motor sabe qué valor modificar.&lt;/p&gt;
&lt;p&gt;En cambio, si intentamos actualizar &lt;code&gt;email&lt;/code&gt;, la operación falla:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;UPDATE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_vw&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SET&lt;/span&gt; &lt;span style="color:#e06c75"&gt;email&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;MARY.SMITH-ALLEN@sakilacustomer.org&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;ERROR&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1348&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;HY000&lt;/span&gt;): &lt;span style="color:#c678dd"&gt;Column&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;email&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;is&lt;/span&gt; &lt;span style="color:#c678dd"&gt;not&lt;/span&gt; &lt;span style="color:#e06c75"&gt;updatable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La razón es que &lt;code&gt;email&lt;/code&gt; en la vista no es la columna original; es una expresión calculada con &lt;code&gt;concat()&lt;/code&gt; y &lt;code&gt;substr()&lt;/code&gt;. El motor no puede inferir cómo convertir el valor nuevo en una actualización válida de la columna base.&lt;/p&gt;
&lt;p&gt;También debes tener cuidado con &lt;code&gt;INSERT&lt;/code&gt;. Insertar a través de una vista falla cuando la vista no expone todas las columnas &lt;code&gt;NOT NULL&lt;/code&gt; de la tabla base, por lo que el &lt;code&gt;INSERT&lt;/code&gt; no puede proporcionar valores para ellas. Si esas columnas no tienen &lt;code&gt;DEFAULT&lt;/code&gt;, el motor no tiene forma segura de completar la fila.&lt;/p&gt;
&lt;h2 id="conclusión"&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;Las vistas en SQL son una herramienta de diseño para crear interfaces de datos más limpias. Con &lt;code&gt;CREATE VIEW&lt;/code&gt; puedes encapsular consultas repetidas, proteger columnas sensibles, construir reportes agregados y esconder complejidad sin duplicar información.&lt;/p&gt;
&lt;p&gt;También es importante reconocer sus límites. Una vista no reemplaza un buen diseño de índices, no siempre mejora rendimiento y no siempre permite escritura. Cuando una vista incluye agregaciones, expresiones calculadas, &lt;code&gt;DISTINCT&lt;/code&gt;, &lt;code&gt;UNION&lt;/code&gt; o subconsultas complejas, normalmente debes tratarla como una interfaz de lectura.&lt;/p&gt;
&lt;p&gt;Como siguiente paso de la serie, analizaremos cómo proteger la consistencia y el rendimiento de operaciones más críticas con &lt;a href="https://blog.dacadev.com/programacion/sql/08-transacciones-indices-constraints"



 


&gt;transacciones, índices y constraints&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>SQL: Subqueries y Tipos de JOIN Avanzados</title><link>https://blog.dacadev.com/programacion/sql/06-subqueries-subconsultas/</link><pubDate>Sat, 20 Jun 2026 00:00:00 -0500</pubDate><guid>https://blog.dacadev.com/programacion/sql/06-subqueries-subconsultas/</guid><dc:creator>Dacadev</dc:creator><category>programación</category><description>Aprende a usar subqueries en SQL: subconsultas correlacionadas, EXISTS y joins avanzados para consultar datos relacionales con precisión.</description><media:content url="https://blog.dacadev.com/images/programming/sql/subqueries/banner.png" medium="image" type="image/png"/><content:encoded>
&lt;details class="table-of-content "&gt;
 &lt;summary&gt;
 
 Tabla de Contenido
 
 &lt;/summary&gt;
 &lt;nav id="TableOfContents"&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#qué-es-una-subquery-en-sql"&gt;Qué es una subquery en SQL&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#tipos-de-subqueries"&gt;Tipos de subqueries&lt;/a&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#subqueries-no-correlacionadas"&gt;Subqueries no correlacionadas&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#subqueries-de-múltiples-filas-y-una-columna"&gt;Subqueries de múltiples filas y una columna&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#subqueries-multicolumna"&gt;Subqueries multicolumna&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#subqueries-correlacionadas"&gt;Subqueries correlacionadas&lt;/a&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#el-operador-exists"&gt;El operador EXISTS&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#joins-avanzados-revisitando-las-uniones"&gt;JOINs avanzados: revisitando las uniones&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#outer-joins"&gt;Outer joins&lt;/a&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#outer-joins-de-tres-tablas"&gt;Outer joins de tres tablas&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#cross-joins"&gt;Cross joins&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#natural-joins"&gt;Natural joins&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#conclusión"&gt;Conclusión&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
&lt;/nav&gt;
&lt;/details&gt;

&lt;p&gt;Cuando tus consultas SQL empiezan a mezclar filtros, agregaciones y relaciones entre tablas, los &lt;code&gt;JOIN&lt;/code&gt; básicos dejan de ser suficientes para expresar ciertas reglas de negocio con claridad. Las &lt;strong&gt;subqueries&lt;/strong&gt; o &lt;strong&gt;subconsultas en SQL&lt;/strong&gt; permiten encapsular una consulta dentro de otra, reutilizar resultados intermedios y construir filtros más precisos sin mover lógica innecesaria a la aplicación. En el artículo anterior vimos &lt;a href="https://blog.dacadev.com/programacion/sql/05-consultas-multiples-tablas-joins"



 


&gt;consultas a múltiples tablas con JOINs&lt;/a&gt;; ahora vamos a extender esa base con subconsultas, &lt;code&gt;EXISTS&lt;/code&gt; y tipos de &lt;code&gt;JOIN&lt;/code&gt; más avanzados.&lt;/p&gt;




 
 





 


&lt;div class="notice note"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" width="22" height="22" stroke-width="1.5" stroke="currentColor"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Note&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;En este artículo aprenderás a usar subqueries escalares, subconsultas de múltiples filas, subqueries correlacionadas, el operador &lt;code&gt;EXISTS&lt;/code&gt;, &lt;code&gt;LEFT OUTER JOIN&lt;/code&gt;, &lt;code&gt;CROSS JOIN&lt;/code&gt; y &lt;code&gt;NATURAL JOIN&lt;/code&gt;.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="qué-es-una-subquery-en-sql"&gt;Qué es una subquery en SQL&lt;/h2&gt;
&lt;p&gt;Una &lt;strong&gt;subquery&lt;/strong&gt; es una consulta contenida dentro de otra sentencia SQL. A la sentencia externa la llamaremos &lt;strong&gt;consulta contenedora&lt;/strong&gt; o consulta principal. La subquery siempre va entre paréntesis y, en muchos motores, se evalúa antes de que la consulta principal termine de resolver su filtro o su conjunto de datos.&lt;/p&gt;
&lt;p&gt;Como cualquier consulta, una subquery puede retornar diferentes formas de resultado:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Una sola fila con una sola columna.&lt;/li&gt;
&lt;li&gt;Múltiples filas con una sola columna.&lt;/li&gt;
&lt;li&gt;Múltiples filas con múltiples columnas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Analicemos un primer ejemplo. Queremos obtener el cliente con el &lt;code&gt;customer_id&lt;/code&gt; más alto:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;MAX&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;) &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+------------+-----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+------------+-----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;599&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AUSTIN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CINTRON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+------------+-----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#c678dd"&gt;row&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;27&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La subquery &lt;code&gt;(SELECT MAX(customer_id) FROM customer)&lt;/code&gt; retorna un único valor. Por eso podemos compararla con &lt;code&gt;=&lt;/code&gt; en el &lt;code&gt;WHERE&lt;/code&gt; de la consulta principal.&lt;/p&gt;




 
 





 


&lt;div class="notice info"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Info&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Cuando una subquery retorna una fila y una sola columna, se comporta como una &lt;strong&gt;subquery escalar&lt;/strong&gt;. Puedes usarla con operadores como &lt;code&gt;=&lt;/code&gt;, &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;, &lt;code&gt;!=&lt;/code&gt;, &lt;code&gt;&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;gt;=&lt;/code&gt;, &lt;code&gt;&amp;lt;&lt;/code&gt; y &lt;code&gt;&amp;lt;=&lt;/code&gt;.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="tipos-de-subqueries"&gt;Tipos de subqueries&lt;/h2&gt;
&lt;p&gt;No todas las subconsultas tienen el mismo comportamiento. La diferencia más importante está en si la subquery depende o no de la consulta principal.&lt;/p&gt;
&lt;h3 id="subqueries-no-correlacionadas"&gt;Subqueries no correlacionadas&lt;/h3&gt;
&lt;p&gt;Las &lt;strong&gt;subqueries no correlacionadas&lt;/strong&gt; no dependen directamente de la consulta contenedora. Puedes ejecutarlas por separado, inspeccionar su resultado y luego entender cómo ese resultado alimenta el &lt;code&gt;WHERE&lt;/code&gt;, &lt;code&gt;HAVING&lt;/code&gt; o incluso el &lt;code&gt;FROM&lt;/code&gt; de la consulta principal.&lt;/p&gt;
&lt;p&gt;El ejemplo anterior es una subquery no correlacionada. Observemos otro caso: obtener todas las ciudades cuyo país no sea India.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;city_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;city&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;city&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;country_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;&amp;lt;&amp;gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;country_id&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;country&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;country&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;India&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+----------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;city_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;city&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+----------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;A&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Corua&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;La&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Corua&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Abha&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Abu&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Dhabi&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Acua&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;599&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Zhoushan&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;600&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Ziguinchor&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+----------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;540&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;02&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Aquí la subquery retorna el &lt;code&gt;country_id&lt;/code&gt; asociado a India. La consulta principal usa ese valor para excluir todas las ciudades que pertenezcan a ese país.&lt;/p&gt;




 
 





 


&lt;div class="notice warning"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Warning&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Si usas &lt;code&gt;=&lt;/code&gt; con una subquery que retorna más de un valor, el motor no puede comparar un valor escalar contra un conjunto de filas. En ese caso necesitas operadores como &lt;code&gt;IN&lt;/code&gt;, &lt;code&gt;ANY&lt;/code&gt;, &lt;code&gt;ALL&lt;/code&gt; o reestructurar la consulta.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3 id="subqueries-de-múltiples-filas-y-una-columna"&gt;Subqueries de múltiples filas y una columna&lt;/h3&gt;
&lt;p&gt;Cuando una subquery retorna varias filas pero una sola columna, &lt;code&gt;IN&lt;/code&gt; suele ser el operador adecuado. Este operador compara el valor del lado izquierdo contra el conjunto de valores retornado por la subquery.&lt;/p&gt;
&lt;p&gt;Consideremos una consulta para obtener ciudades de Canadá o México:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;city_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;city&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;city&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;country_id&lt;/span&gt; &lt;span style="color:#c678dd"&gt;IN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;country_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;country&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;country&lt;/span&gt; &lt;span style="color:#c678dd"&gt;IN&lt;/span&gt; (&lt;span style="color:#98c379"&gt;&amp;#39;Canada&amp;#39;&lt;/span&gt;,&lt;span style="color:#98c379"&gt;&amp;#39;Mexico&amp;#39;&lt;/span&gt;));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+----------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;city_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;city&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+----------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;179&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Gatineau&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;196&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Halifax&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;300&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Lethbridge&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;313&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;London&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;556&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Uruapan&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;595&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Zapopan&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+----------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;37&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La subquery retorna los &lt;code&gt;country_id&lt;/code&gt; de ambos países. Luego &lt;code&gt;IN&lt;/code&gt; filtra las ciudades cuyo &lt;code&gt;country_id&lt;/code&gt; esté dentro de ese conjunto.&lt;/p&gt;
&lt;h3 id="subqueries-multicolumna"&gt;Subqueries multicolumna&lt;/h3&gt;
&lt;p&gt;Las &lt;strong&gt;subqueries multicolumna&lt;/strong&gt; retornan más de una columna y son útiles cuando necesitas comparar combinaciones de valores o enriquecer la lógica de selección. En SQL también es común resolver este tipo de necesidad con varias subqueries coordinadas, especialmente cuando cada filtro opera sobre una dimensión diferente.&lt;/p&gt;
&lt;p&gt;Observemos este caso: queremos encontrar pares &lt;code&gt;actor_id&lt;/code&gt; y &lt;code&gt;film_id&lt;/code&gt; donde el actor tenga apellido &lt;code&gt;MONROE&lt;/code&gt; y la película tenga clasificación &lt;code&gt;PG&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_actor&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt; &lt;span style="color:#c678dd"&gt;IN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;MONROE&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#c678dd"&gt;IN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rating&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;PG&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------+---------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------+---------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;120&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;63&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;120&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;144&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;120&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;414&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;178&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;983&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------+---------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;11&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Esta consulta combina dos filtros independientes: uno sobre actores y otro sobre películas. El resultado final sale de la tabla intermedia &lt;code&gt;film_actor&lt;/code&gt;, que representa la relación muchos-a-muchos.&lt;/p&gt;
&lt;h2 id="subqueries-correlacionadas"&gt;Subqueries correlacionadas&lt;/h2&gt;
&lt;p&gt;Hasta ahora, las subqueries han sido independientes. Una &lt;strong&gt;subquery correlacionada&lt;/strong&gt;, en cambio, depende de la consulta principal porque referencia una o más columnas de la fila que se está evaluando afuera.&lt;/p&gt;
&lt;p&gt;Esto cambia el modelo mental: la subquery no se ejecuta una sola vez para producir un conjunto estático, sino que puede evaluarse por cada fila candidata de la consulta externa. Por eso conviene revisar su costo, especialmente en tablas grandes.&lt;/p&gt;
&lt;p&gt;Analicemos una consulta que obtiene clientes con exactamente 20 rentas:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#d19a66"&gt;20&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;) &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;LAUREN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;HUDSON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JEANETTE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;GREENE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;TARA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;RYAN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WILMA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;RICHARDS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALFREDO&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MCADAMS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;01&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La parte clave es &lt;code&gt;r.customer_id = c.customer_id&lt;/code&gt;. La subquery necesita el &lt;code&gt;customer_id&lt;/code&gt; de la fila actual de &lt;code&gt;customer&lt;/code&gt;, por eso está correlacionada.&lt;/p&gt;
&lt;h3 id="el-operador-exists"&gt;El operador EXISTS&lt;/h3&gt;
&lt;p&gt;El operador &lt;code&gt;EXISTS&lt;/code&gt; valida si la subquery retorna al menos una fila. No importa qué columnas seleccione la subquery; lo relevante es la existencia de registros que cumplan la condición.&lt;/p&gt;
&lt;p&gt;Por convención, muchas consultas usan &lt;code&gt;SELECT 1&lt;/code&gt; dentro de &lt;code&gt;EXISTS&lt;/code&gt; para indicar que el valor retornado no es importante:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;EXISTS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;date&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;2005-05-25&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CHARLOTTE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;HUNTER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DELORES&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;HANSEN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MINNIE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ROMERO&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;NELSON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CHRISTENSON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;8&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;03&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;EXISTS&lt;/code&gt; es especialmente expresivo cuando la pregunta de negocio es binaria: “incluye esta fila si existe al menos una relación que cumple la condición”.&lt;/p&gt;




 
 





 


&lt;div class="notice tip"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0 1 12 21 8.25 8.25 0 0 1 6.038 7.047 8.287 8.287 0 0 0 9 9.601a8.983 8.983 0 0 1 3.361-6.867 8.21 8.21 0 0 0 3 2.48Z" /&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 0 0 .495-7.468 5.99 5.99 0 0 0-1.925 3.547 5.975 5.975 0 0 1-2.133-1.001A3.75 3.75 0 0 0 12 18Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Tip&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Usa &lt;code&gt;EXISTS&lt;/code&gt; cuando quieras comprobar existencia y &lt;code&gt;IN&lt;/code&gt; cuando quieras comparar contra un conjunto concreto de valores. Ambos pueden ser optimizados por el motor, pero expresan intenciones distintas.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="joins-avanzados-revisitando-las-uniones"&gt;JOINs avanzados: revisitando las uniones&lt;/h2&gt;
&lt;p&gt;Hasta este punto de la serie hemos trabajado principalmente con &lt;code&gt;INNER JOIN&lt;/code&gt;. Ese tipo de unión retorna únicamente las filas que cumplen la condición en ambas tablas. Sin embargo, SQL ofrece variantes útiles para preservar filas sin coincidencias, generar combinaciones cartesianas o delegar la condición de unión al motor.&lt;/p&gt;
&lt;h2 id="outer-joins"&gt;Outer joins&lt;/h2&gt;
&lt;p&gt;Los &lt;strong&gt;outer joins&lt;/strong&gt; retornan las filas que cumplen la condición de unión y, además, conservan filas de una tabla aunque no tengan coincidencias del otro lado. En un &lt;code&gt;LEFT OUTER JOIN&lt;/code&gt;, se preservan todas las filas de la tabla de la izquierda.&lt;/p&gt;
&lt;p&gt;Observemos un conteo de copias por película:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;title&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;i&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;inventory_id&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;num_copies&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LEFT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;OUTER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;inventory&lt;/span&gt; &lt;span style="color:#e06c75"&gt;i&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;i&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;GROUP&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BY&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;title&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+-----------------------------+------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;title&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;num_copies&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+-----------------------------+------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACADEMY&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DINOSAUR&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;8&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;GOLDFINGER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ADAPTATION&lt;/span&gt; &lt;span style="color:#e06c75"&gt;HOLES&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AFFAIR&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PREJUDICE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;7&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;14&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALICE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FANTASIA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;999&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ZOOLANDER&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FICTION&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;5&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1000&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ZORRO&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ARK&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;8&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+-----------------------------+------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;1000&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;01&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;ALICE FANTASIA&lt;/code&gt; aparece con &lt;code&gt;0&lt;/code&gt; copias porque no tiene registros asociados en &lt;code&gt;inventory&lt;/code&gt;. Aun así, el &lt;code&gt;LEFT OUTER JOIN&lt;/code&gt; conserva la película porque &lt;code&gt;film&lt;/code&gt; está a la izquierda.&lt;/p&gt;
&lt;p&gt;Veamos la misma situación sin agregación:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;title&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;i&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;inventory_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LEFT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;OUTER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;inventory&lt;/span&gt; &lt;span style="color:#e06c75"&gt;i&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;i&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BETWEEN&lt;/span&gt; &lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#d19a66"&gt;15&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+----------------+--------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;title&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;inventory_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+----------------+--------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALI&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FOREVER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;67&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALI&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FOREVER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;68&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALI&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FOREVER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;69&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALI&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FOREVER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;70&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;14&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALICE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FANTASIA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALIEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CENTER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;71&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALIEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CENTER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;72&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALIEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CENTER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;73&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALIEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CENTER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;74&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALIEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CENTER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;75&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALIEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CENTER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;76&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+----------------+--------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;11&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;El &lt;code&gt;NULL&lt;/code&gt; en &lt;code&gt;inventory_id&lt;/code&gt; indica que no existe fila relacionada en la tabla derecha.&lt;/p&gt;
&lt;h3 id="outer-joins-de-tres-tablas"&gt;Outer joins de tres tablas&lt;/h3&gt;
&lt;p&gt;Puedes encadenar &lt;code&gt;OUTER JOIN&lt;/code&gt; para preservar filas a través de varias relaciones. En este tipo de consulta, el orden importa porque define qué conjunto de filas se conserva en cada paso.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;title&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;i&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;inventory_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LEFT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;OUTER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;inventory&lt;/span&gt; &lt;span style="color:#e06c75"&gt;i&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;i&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LEFT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;OUTER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;i&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;inventory_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;inventory_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BETWEEN&lt;/span&gt; &lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#d19a66"&gt;15&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+----------------+--------------+---------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;title&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;inventory_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+----------------+--------------+---------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALI&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FOREVER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;67&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;07&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;31&lt;/span&gt; &lt;span style="color:#d19a66"&gt;18&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;11&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;17&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALI&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FOREVER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;67&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;08&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;22&lt;/span&gt; &lt;span style="color:#d19a66"&gt;21&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;59&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;29&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALI&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FOREVER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;68&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;07&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;28&lt;/span&gt; &lt;span style="color:#d19a66"&gt;15&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;26&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;20&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;14&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALICE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FANTASIA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALIEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CENTER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;71&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;05&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;28&lt;/span&gt; &lt;span style="color:#d19a66"&gt;02&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;06&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;37&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALIEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CENTER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;76&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;08&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;17&lt;/span&gt; &lt;span style="color:#d19a66"&gt;07&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;26&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;47&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+----------------+--------------+---------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;32&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;01&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



 
 





 


&lt;div class="notice tip"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0 1 12 21 8.25 8.25 0 0 1 6.038 7.047 8.287 8.287 0 0 0 9 9.601a8.983 8.983 0 0 1 3.361-6.867 8.21 8.21 0 0 0 3 2.48Z" /&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 0 0 .495-7.468 5.99 5.99 0 0 0-1.925 3.547 5.975 5.975 0 0 1-2.133-1.001A3.75 3.75 0 0 0 12 18Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Tip&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Aunque existe &lt;code&gt;RIGHT OUTER JOIN&lt;/code&gt;, en muchos equipos se prefiere estandarizar en &lt;code&gt;LEFT OUTER JOIN&lt;/code&gt;. Mantiene la lectura de izquierda a derecha y reduce cambios mentales al revisar consultas complejas.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="cross-joins"&gt;Cross joins&lt;/h2&gt;
&lt;p&gt;Un &lt;code&gt;CROSS JOIN&lt;/code&gt; produce un producto cartesiano: combina cada fila de la primera tabla con cada fila de la segunda. Es útil para generar matrices de combinaciones, calendarios, catálogos base o escenarios de prueba, pero puede crecer muy rápido.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;name&lt;/span&gt; &lt;span style="color:#e06c75"&gt;category_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;l&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;name&lt;/span&gt; &lt;span style="color:#e06c75"&gt;language_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;category&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;CROSS&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#c678dd"&gt;language&lt;/span&gt; &lt;span style="color:#e06c75"&gt;l&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------------+---------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;category_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;language_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------------+---------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Action&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;English&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Action&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Italian&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Action&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Japanese&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Travel&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;English&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Travel&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;German&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------------+---------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;96&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Si &lt;code&gt;category&lt;/code&gt; tiene 16 filas y &lt;code&gt;language&lt;/code&gt; tiene 6, el resultado tendrá 96 filas. Esa multiplicación es exactamente el comportamiento esperado.&lt;/p&gt;
&lt;h2 id="natural-joins"&gt;Natural joins&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;NATURAL JOIN&lt;/code&gt; deja que el motor determine las columnas de unión usando columnas con el mismo nombre en ambas tablas. Es importante conocerlo, pero no suele ser buena práctica en consultas de producción porque oculta la condición real del &lt;code&gt;JOIN&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;El siguiente ejemplo no retorna filas:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;, &lt;span style="color:#e5c07b"&gt;date&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NATURAL&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;Empty&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;04&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;El problema es que &lt;code&gt;customer&lt;/code&gt; y &lt;code&gt;rental&lt;/code&gt; pueden compartir más columnas de las que realmente queremos usar como condición natural. Al proyectar únicamente las columnas necesarias desde &lt;code&gt;customer&lt;/code&gt;, el &lt;code&gt;NATURAL JOIN&lt;/code&gt; puede comportarse como esperamos:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;cust&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;cust&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;, &lt;span style="color:#e5c07b"&gt;date&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; ) &lt;span style="color:#e06c75"&gt;cust&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NATURAL&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+---------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;date&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+---------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MARY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SMITH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;05&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;25&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MARY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SMITH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;05&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;28&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MARY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SMITH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;06&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AUSTIN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CINTRON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;08&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;23&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+---------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;16044&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;03&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



 
 





 


&lt;div class="notice warning"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Warning&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Prefiere &lt;code&gt;JOIN ... ON ...&lt;/code&gt; cuando la consulta debe ser mantenible. La condición explícita documenta la intención y evita cambios inesperados si el esquema gana nuevas columnas con nombres compartidos.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="conclusión"&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;Las subqueries en SQL te permiten expresar reglas de negocio que dependen de resultados intermedios sin salir del motor de base de datos. Las subconsultas no correlacionadas son ideales para filtros basados en conjuntos estáticos; las correlacionadas son útiles cuando cada fila externa necesita una evaluación específica; y &lt;code&gt;EXISTS&lt;/code&gt; comunica con claridad validaciones de existencia.&lt;/p&gt;
&lt;p&gt;En el lado de los &lt;code&gt;JOIN&lt;/code&gt;, &lt;code&gt;LEFT OUTER JOIN&lt;/code&gt; conserva filas sin coincidencias, &lt;code&gt;CROSS JOIN&lt;/code&gt; genera combinaciones cartesianas y &lt;code&gt;NATURAL JOIN&lt;/code&gt; delega la condición al motor, aunque conviene usarlo con cuidado. La clave es elegir la herramienta que haga más explícita la intención de la consulta.&lt;/p&gt;
&lt;p&gt;En el siguiente artículo de la serie vamos a trabajar con &lt;a href="https://blog.dacadev.com/programacion/sql/07-vistas-views"



 


&gt;&lt;strong&gt;Vistas (Views)&lt;/strong&gt;&lt;/a&gt;, una forma práctica de encapsular consultas y exponer modelos de lectura reutilizables dentro de la base de datos.&lt;/p&gt;</content:encoded></item><item><title>SQL: Consultas a Múltiples Tablas con JOINs</title><link>https://blog.dacadev.com/programacion/sql/05-consultas-multiples-tablas-joins/</link><pubDate>Wed, 17 Jun 2026 00:00:00 -0500</pubDate><guid>https://blog.dacadev.com/programacion/sql/05-consultas-multiples-tablas-joins/</guid><dc:creator>Dacadev</dc:creator><category>programación</category><description>Aprende a usar JOIN en SQL para consultar múltiples tablas, aplicar self join y combinar resultados con UNION, INTERSECT y EXCEPT.</description><media:content url="https://blog.dacadev.com/images/programming/sql/querying-multiple-tables/banner.png" medium="image" type="image/png"/><content:encoded>
&lt;details class="table-of-content "&gt;
 &lt;summary&gt;
 
 Tabla de Contenido
 
 &lt;/summary&gt;
 &lt;nav id="TableOfContents"&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#producto-cartesiano"&gt;Producto cartesiano&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#inner-join"&gt;Inner Join&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#unir-3-o-más-tablas"&gt;Unir 3 o más tablas&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#subqueries-como-tablas"&gt;Subqueries como tablas&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#misma-tabla-dos-veces"&gt;Misma tabla dos veces&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#self-join"&gt;Self join&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#teoría-de-conjuntos"&gt;Teoría de conjuntos&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#union"&gt;UNION&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#intersect"&gt;INTERSECT&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#except"&gt;EXCEPT&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#reglas-de-operaciones-de-conjuntos"&gt;Reglas de operaciones de conjuntos&lt;/a&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#ordenar-resultados-con-alias-válidos"&gt;Ordenar resultados con alias válidos&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#el-orden-de-las-operaciones-importa"&gt;El orden de las operaciones importa&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#cierre"&gt;Cierre&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
&lt;/nav&gt;
&lt;/details&gt;

&lt;p&gt;Cuando una aplicación modela procesos reales, una sola tabla rara vez contiene todo el contexto. Clientes requieren direcciones, películas requieren actores y reportes operativos combinan varias entidades. Por eso, dominar &lt;strong&gt;consultas a múltiples tablas&lt;/strong&gt; y entender cada &lt;code&gt;JOIN en SQL&lt;/code&gt; es clave para escribir consultas correctas, expresivas y mantenibles.&lt;/p&gt;
&lt;p&gt;En el artículo anterior trabajamos &lt;a href="https://blog.dacadev.com/programacion/sql/04-agrupamiento-funciones-agregadas"



 


&gt;agrupamiento y funciones agregadas&lt;/a&gt;. Ahora conectaremos ese análisis con relaciones entre tablas.&lt;/p&gt;




 
 





 


&lt;div class="notice note"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" width="22" height="22" stroke-width="1.5" stroke="currentColor"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Note&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Aprenderás a usar &lt;code&gt;INNER JOIN&lt;/code&gt;, unir tres o más tablas, reutilizar tablas con alias, aplicar &lt;code&gt;SELF JOIN&lt;/code&gt; y combinar resultados con &lt;code&gt;UNION&lt;/code&gt;, &lt;code&gt;INTERSECT&lt;/code&gt; y &lt;code&gt;EXCEPT&lt;/code&gt;.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="producto-cartesiano"&gt;Producto cartesiano&lt;/h2&gt;
&lt;p&gt;El &lt;strong&gt;producto cartesiano&lt;/strong&gt; aparece cuando haces un &lt;code&gt;JOIN&lt;/code&gt; entre dos tablas sin definir la condición que relaciona sus filas. SQL combina cada fila de la primera tabla con cada fila de la segunda.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;address&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;address&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+----------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;address&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+----------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MARY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SMITH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;47&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MySakila&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Drive&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PATRICIA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JOHNSON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;47&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MySakila&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Drive&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;LINDA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WILLIAMS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;47&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MySakila&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Drive&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FREDDIE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DUGGAN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1325&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Fukuyama&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Street&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WADE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DELVALLE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1325&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Fukuyama&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Street&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AUSTIN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CINTRON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1325&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Fukuyama&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Street&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+----------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;361197&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;03&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;El resultado tiene &lt;code&gt;361,197&lt;/code&gt; filas porque &lt;code&gt;customer&lt;/code&gt; tiene &lt;code&gt;599&lt;/code&gt; registros y &lt;code&gt;address&lt;/code&gt; tiene &lt;code&gt;603&lt;/code&gt;: &lt;code&gt;599 * 603 = 361197&lt;/code&gt;. Normalmente esto indica que falta una condición &lt;code&gt;ON&lt;/code&gt;.&lt;/p&gt;




 
 





 


&lt;div class="notice warning"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Warning&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Un &lt;code&gt;JOIN&lt;/code&gt; sin condición explícita puede multiplicar el volumen de datos y degradar el rendimiento. Revisa siempre que exista una relación clara entre las tablas.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="inner-join"&gt;Inner Join&lt;/h2&gt;
&lt;p&gt;El &lt;strong&gt;&lt;code&gt;INNER JOIN&lt;/code&gt;&lt;/strong&gt; retorna solo las filas que tienen coincidencia en ambas tablas según la condición definida en &lt;code&gt;ON&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;address&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;address&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;address_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;address_id&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+--------------+----------------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;address&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+--------------+----------------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MARY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SMITH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1913&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Hanoi&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Way&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PATRICIA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JOHNSON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1121&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Loja&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Avenue&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;LINDA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WILLIAMS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;692&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Joliet&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Street&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FREDDIE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DUGGAN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1103&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Quilmes&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Boulevard&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WADE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DELVALLE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1331&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Usak&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Boulevard&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AUSTIN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CINTRON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1325&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Fukuyama&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Street&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+--------------+----------------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;599&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Aunque muchos motores interpretan &lt;code&gt;JOIN&lt;/code&gt; como &lt;code&gt;INNER JOIN&lt;/code&gt;, escribirlo explícitamente mejora la legibilidad cuando aparecen otros tipos de unión.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;address&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;address&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;address_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;address_id&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="unir-3-o-más-tablas"&gt;Unir 3 o más tablas&lt;/h2&gt;
&lt;p&gt;Para unir más de dos tablas, repetimos el patrón: otro &lt;code&gt;INNER JOIN&lt;/code&gt; y otra condición &lt;code&gt;ON&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;ct&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;city&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;address&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;address_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;address_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;city&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ct&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;city_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ct&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;city_id&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+--------------+----------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;city&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+--------------+----------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JULIE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SANCHEZ&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;A&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Corua&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;La&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Corua&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PEGGY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MYERS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Abha&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;TOM&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MILNER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Abu&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Dhabi&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BYRON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BOX&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Zhezqazghan&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;GUY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BROWNLEE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Zhoushan&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;RONNIE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;RICKETTS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Ziguinchor&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+--------------+----------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;599&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;03&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



 
 





 


&lt;div class="notice info"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Info&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;SQL es declarativo: describes qué resultado necesitas y el optimizador decide cómo ejecutarlo. El orden textual de las tablas no necesariamente define el orden físico del plan.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="subqueries-como-tablas"&gt;Subqueries como tablas&lt;/h2&gt;
&lt;p&gt;Una &lt;strong&gt;subquery&lt;/strong&gt; puede actuar como tabla derivada dentro de un &lt;code&gt;JOIN&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;addr&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;address&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;addr&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;city&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;address_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;address&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;ct&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;city&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;address&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;city&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ct&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;city_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ct&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;city_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;district&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;California&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; ) &lt;span style="color:#e06c75"&gt;addr&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;address_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;addr&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;address_id&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+------------------------+----------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;address&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;city&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+------------------------+----------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PATRICIA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JOHNSON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1121&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Loja&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Avenue&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;San&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Bernardino&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BETTY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WHITE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;770&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Bydgoszcz&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Avenue&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Citrus&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Heights&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALICE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;STEWART&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1135&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Izumisano&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Parkway&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Fontana&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JACOB&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;LANCE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1866&lt;/span&gt; &lt;span style="color:#e06c75"&gt;al&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#e06c75"&gt;Qatif&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Avenue&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;El&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Monte&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;RENE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MCALISTER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1895&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Zhezqazghan&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Drive&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Garden&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Grove&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+------------------------+----------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;9&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Aquí &lt;code&gt;addr&lt;/code&gt; contiene direcciones de California junto con su ciudad, y luego se une con &lt;code&gt;customer&lt;/code&gt; mediante &lt;code&gt;address_id&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="misma-tabla-dos-veces"&gt;Misma tabla dos veces&lt;/h2&gt;
&lt;p&gt;Algunas consultas necesitan aplicar condiciones distintas sobre la misma entidad. Para eso usamos alias diferentes, incluso si la tabla física es la misma.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;title&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_actor&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa1&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa1&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a1&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_actor&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa2&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa2&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a2&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;a1&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;CATE&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a1&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;MCQUEEN&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;a2&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;CUBA&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a2&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;BIRCH&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;title&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BLOOD&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ARGONAUTS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;TOWERS&lt;/span&gt; &lt;span style="color:#e06c75"&gt;HURRICANE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Esta consulta busca películas donde participaron ambos actores. Si declaramos la tabla una sola vez y usamos &lt;code&gt;OR&lt;/code&gt;, el significado cambia: buscamos películas donde participó cualquiera de los dos.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;title&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_actor&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; ((&lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;CATE&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;MCQUEEN&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;OR&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;CUBA&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;BIRCH&amp;#39;&lt;/span&gt;));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;title&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ATLANTIS&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CAUSE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BLOOD&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ARGONAUTS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;COMMANDMENTS&lt;/span&gt; &lt;span style="color:#e06c75"&gt;EXPRESS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;VOLCANO&lt;/span&gt; &lt;span style="color:#e06c75"&gt;TEXAS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WATERSHIP&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FRONTIER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;54&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="self-join"&gt;Self join&lt;/h2&gt;
&lt;p&gt;Un &lt;strong&gt;self join&lt;/strong&gt; ocurre cuando una tabla se une consigo misma. Es común en relaciones autorreferenciales: empleados y managers, categorías padre e hijas, o películas y precuelas.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;title&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;f_prnt&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;title&lt;/span&gt; &lt;span style="color:#e06c75"&gt;prequel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f_prnt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f_prnt&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;prequel_film_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;prequel_film_id&lt;/span&gt; &lt;span style="color:#c678dd"&gt;IS&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NOT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-----------------+--------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;title&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;prequel&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-----------------+--------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FIDDLER&lt;/span&gt; &lt;span style="color:#e06c75"&gt;LOST&lt;/span&gt; &lt;span style="color:#e06c75"&gt;II&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FIDDLER&lt;/span&gt; &lt;span style="color:#e06c75"&gt;LOST&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-----------------+--------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#c678dd"&gt;row&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;f&lt;/code&gt; representa la película actual y &lt;code&gt;f_prnt&lt;/code&gt; representa la película relacionada como precuela. Los alias son obligatorios para evitar ambigüedad.&lt;/p&gt;
&lt;h2 id="teoría-de-conjuntos"&gt;Teoría de conjuntos&lt;/h2&gt;
&lt;p&gt;SQL también trabaja con conjuntos completos de filas. Estas operaciones combinan resultados de múltiples consultas, siempre que las columnas sean compatibles.&lt;/p&gt;
&lt;p&gt;La unión combina los elementos de &lt;code&gt;A&lt;/code&gt; y &lt;code&gt;B&lt;/code&gt;.&lt;/p&gt;




 
 
 
 &lt;div class="flex justify-center"&gt;
 &lt;img
 src="https://blog.dacadev.com/images/programming/sql/querying-multiple-tables/set-union_hu_cd19b39dd99e6fc5.webp"
 alt="Imagen guia del contenido de la página"style="width:400px"/&gt;
 &lt;/div&gt;
 
 
 


&lt;p&gt;La intersección conserva únicamente los elementos presentes en ambos conjuntos.&lt;/p&gt;




 
 
 
 &lt;div class="flex justify-center"&gt;
 &lt;img
 src="https://blog.dacadev.com/images/programming/sql/querying-multiple-tables/set-intersect_hu_8f82de50afd65425.webp"
 alt="Imagen guia del contenido de la página"style="width:400px"/&gt;
 &lt;/div&gt;
 
 
 


&lt;p&gt;La diferencia retorna los elementos de &lt;code&gt;A&lt;/code&gt; que no están en &lt;code&gt;B&lt;/code&gt;.&lt;/p&gt;




 
 
 
 &lt;div class="flex justify-center"&gt;
 &lt;img
 src="https://blog.dacadev.com/images/programming/sql/querying-multiple-tables/set-except_hu_116968c26251c42f.webp"
 alt="Imagen guia del contenido de la página"style="width:400px"/&gt;
 &lt;/div&gt;
 
 
 






 
 





 


&lt;div class="notice note"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" width="22" height="22" stroke-width="1.5" stroke="currentColor"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Note&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Para aplicar operaciones de conjuntos, ambas consultas deben retornar el mismo número de columnas y columnas compatibles por posición.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="union"&gt;UNION&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;UNION&lt;/code&gt; combina resultados y elimina duplicados. &lt;code&gt;UNION ALL&lt;/code&gt; conserva todos los registros, por lo que suele ser más eficiente cuando no necesitas deduplicar.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;CUST&amp;#39;&lt;/span&gt; &lt;span style="color:#e06c75"&gt;typ&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;UNION&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ALL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;ACTR&amp;#39;&lt;/span&gt; &lt;span style="color:#e06c75"&gt;typ&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------+------------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;typ&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------+------------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CUST&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MARY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SMITH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CUST&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PATRICIA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JOHNSON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CUST&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;LINDA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WILLIAMS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTR&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MARY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;KEITEL&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTR&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JULIA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FAWCETT&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTR&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;THORA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;TEMPLE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------+------------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;799&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Si duplicamos la misma consulta contra &lt;code&gt;actor&lt;/code&gt;, &lt;code&gt;UNION ALL&lt;/code&gt; devuelve dos copias de cada fila.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;ACTR&amp;#39;&lt;/span&gt; &lt;span style="color:#e06c75"&gt;typ&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;UNION&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ALL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;ACTR&amp;#39;&lt;/span&gt; &lt;span style="color:#e06c75"&gt;typ&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------+-------------+--------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;typ&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------+-------------+--------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTR&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PENELOPE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;GUINESS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTR&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;NICK&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WAHLBERG&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTR&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ED&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CHASE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTR&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MARY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;KEITEL&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTR&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JULIA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FAWCETT&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTR&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;THORA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;TEMPLE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------+-------------+--------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;400&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Un ejemplo más claro muestra duplicados al combinar clientes y actores con patrones similares:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LIKE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;J%&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LIKE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;D%&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;UNION&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ALL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LIKE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;J%&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LIKE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;D%&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JENNIFER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DAVIS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JENNIFER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DAVIS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JUDY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DEAN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JODIE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DEGENERES&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JULIANNE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DENCH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;5&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="intersect"&gt;INTERSECT&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;INTERSECT&lt;/code&gt; retorna únicamente las filas presentes en ambos conjuntos. Dependiendo del motor, puede existir &lt;code&gt;INTERSECT ALL&lt;/code&gt;, que conserva duplicados según sus reglas.&lt;/p&gt;
&lt;p&gt;Es útil para encontrar coincidencias entre fuentes: identificadores compartidos, productos presentes en dos catálogos o usuarios existentes en dos procesos.&lt;/p&gt;
&lt;h2 id="except"&gt;EXCEPT&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;EXCEPT&lt;/code&gt; retorna las filas del primer conjunto que no aparecen en el segundo. También puede existir &lt;code&gt;EXCEPT ALL&lt;/code&gt;, según el motor.&lt;/p&gt;
&lt;p&gt;Esta operación es práctica para auditoría y reconciliación de datos.&lt;/p&gt;




 
 





 


&lt;div class="notice warning"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Warning&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Algunos motores no implementan &lt;code&gt;INTERSECT&lt;/code&gt;, &lt;code&gt;EXCEPT&lt;/code&gt; o sus variantes &lt;code&gt;ALL&lt;/code&gt;. En esos casos puedes modelar equivalentes con &lt;code&gt;JOIN&lt;/code&gt;, &lt;code&gt;NOT EXISTS&lt;/code&gt; o &lt;code&gt;LEFT JOIN&lt;/code&gt;.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="reglas-de-operaciones-de-conjuntos"&gt;Reglas de operaciones de conjuntos&lt;/h2&gt;
&lt;p&gt;Las operaciones de conjuntos son estrictas: mismo número de columnas, tipos compatibles y mismo orden.&lt;/p&gt;
&lt;h3 id="ordenar-resultados-con-alias-válidos"&gt;Ordenar resultados con alias válidos&lt;/h3&gt;
&lt;p&gt;Si ordenas el resultado final, usa los nombres expuestos por el primer &lt;code&gt;SELECT&lt;/code&gt;. En este ejemplo, &lt;code&gt;last_name&lt;/code&gt; y &lt;code&gt;first_name&lt;/code&gt; ya no son etiquetas válidas porque fueron renombradas como &lt;code&gt;lname&lt;/code&gt; y &lt;code&gt;fname&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7f848e"&gt;-- ERROR
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fname&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#e06c75"&gt;lname&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LIKE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;J%&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LIKE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;D%&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;UNION&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ALL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LIKE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;J%&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LIKE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;D%&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ORDER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BY&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;ERROR&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1054&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;42&lt;/span&gt;&lt;span style="color:#e06c75"&gt;S22&lt;/span&gt;): &lt;span style="color:#c678dd"&gt;Unknown&lt;/span&gt; &lt;span style="color:#c678dd"&gt;column&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;last_name&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;order clause&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7f848e"&gt;-- WORKS
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fname&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#e06c75"&gt;lname&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LIKE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;J%&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LIKE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;D%&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;UNION&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ALL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LIKE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;J%&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LIKE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;D%&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ORDER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BY&lt;/span&gt; &lt;span style="color:#e06c75"&gt;lname&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;fname&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------+-----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fname&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;lname&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------+-----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JENNIFER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DAVIS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JENNIFER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DAVIS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JUDY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DEAN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JODIE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DEGENERES&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JULIANNE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DENCH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------+-----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;5&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="el-orden-de-las-operaciones-importa"&gt;El orden de las operaciones importa&lt;/h3&gt;
&lt;p&gt;Las uniones se evalúan según el orden y la precedencia del motor. Cuando mezcles &lt;code&gt;UNION&lt;/code&gt;, &lt;code&gt;INTERSECT&lt;/code&gt; y &lt;code&gt;EXCEPT&lt;/code&gt;, usa paréntesis para expresar intención y evitar resultados ambiguos.&lt;/p&gt;
&lt;p&gt;Reglas prácticas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los alias visibles provienen del primer &lt;code&gt;SELECT&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;UNION&lt;/code&gt; elimina duplicados; &lt;code&gt;UNION ALL&lt;/code&gt; los conserva.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ORDER BY&lt;/code&gt; se aplica al conjunto final, salvo que uses subqueries.&lt;/li&gt;
&lt;li&gt;El orden de operaciones puede cambiar el resultado.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="cierre"&gt;Cierre&lt;/h2&gt;
&lt;p&gt;Los &lt;code&gt;JOINs&lt;/code&gt; y las operaciones de conjuntos resuelven problemas complementarios. &lt;code&gt;INNER JOIN&lt;/code&gt; conecta filas relacionadas; &lt;code&gt;UNION&lt;/code&gt;, &lt;code&gt;INTERSECT&lt;/code&gt; y &lt;code&gt;EXCEPT&lt;/code&gt; combinan resultados compatibles.&lt;/p&gt;
&lt;p&gt;Dominar ambos enfoques mejora la semántica de reportes, filtros e integraciones. En el siguiente artículo avanzaremos hacia &lt;a href="https://blog.dacadev.com/programacion/sql/06-subqueries-subconsultas"



 


&gt;Subqueries&lt;/a&gt;, donde veremos subconsultas para construir lógica SQL modular.&lt;/p&gt;</content:encoded></item><item><title>SQL: Agrupamiento y Funciones Agregadas con GROUP BY</title><link>https://blog.dacadev.com/programacion/sql/04-agrupamiento-funciones-agregadas/</link><pubDate>Sun, 14 Jun 2026 00:00:00 -0500</pubDate><guid>https://blog.dacadev.com/programacion/sql/04-agrupamiento-funciones-agregadas/</guid><dc:creator>Dacadev</dc:creator><category>programación</category><description>Aprende a usar GROUP BY en SQL para resumir datos con funciones agregadas, HAVING, DISTINCT y agrupaciones por columnas o expresiones.</description><media:content url="https://blog.dacadev.com/images/programming/sql/grouping-aggregates/banner.png" medium="image" type="image/png"/><content:encoded>
&lt;details class="table-of-content "&gt;
 &lt;summary&gt;
 
 Tabla de Contenido
 
 &lt;/summary&gt;
 &lt;nav id="TableOfContents"&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#conceptos-de-agrupamiento-en-sql"&gt;Conceptos de agrupamiento en SQL&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#ordenar-resultados-agregados-con-order-by"&gt;Ordenar resultados agregados con &lt;code&gt;ORDER BY&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#filtrar-grupos-con-having"&gt;Filtrar grupos con &lt;code&gt;HAVING&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#funciones-agregadas-comunes"&gt;Funciones agregadas comunes&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#grupos-implícitos-vs-grupos-explícitos"&gt;Grupos implícitos vs grupos explícitos&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#contar-valores-distintos-con-countdistinct-"&gt;Contar valores distintos con &lt;code&gt;COUNT(DISTINCT ...)&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#generar-grupos-según-la-granularidad-requerida"&gt;Generar grupos según la granularidad requerida&lt;/a&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#agrupamiento-por-una-columna"&gt;Agrupamiento por una columna&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#agrupamiento-por-múltiples-columnas"&gt;Agrupamiento por múltiples columnas&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#agrupamiento-mediante-expresiones"&gt;Agrupamiento mediante expresiones&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#buenas-prácticas-al-trabajar-con-group-by"&gt;Buenas prácticas al trabajar con &lt;code&gt;GROUP BY&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#conclusión"&gt;Conclusión&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
&lt;/nav&gt;
&lt;/details&gt;

&lt;p&gt;Cuando una tabla empieza a acumular miles o millones de filas, consultar registros individuales deja de ser suficiente. En análisis, reportes y validaciones operativas necesitamos resumir datos: cuántas rentas hizo cada cliente, cuánto pagó en total, cuál fue el monto máximo o qué categorías concentran más actividad. Para eso usamos &lt;strong&gt;agrupamiento en SQL&lt;/strong&gt; con &lt;code&gt;GROUP BY&lt;/code&gt; y &lt;strong&gt;funciones agregadas&lt;/strong&gt; como &lt;code&gt;COUNT&lt;/code&gt;, &lt;code&gt;SUM&lt;/code&gt;, &lt;code&gt;AVG&lt;/code&gt;, &lt;code&gt;MIN&lt;/code&gt; y &lt;code&gt;MAX&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Este es el artículo 4 de la serie SQL. Venimos de trabajar con &lt;a href="https://blog.dacadev.com/programacion/sql/03-logica-condicional-case"



 


&gt;lógica condicional con CASE&lt;/a&gt;, y ahora vamos a convertir filas transaccionales en resultados agregados listos para análisis.&lt;/p&gt;




 
 





 


&lt;div class="notice note"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" width="22" height="22" stroke-width="1.5" stroke="currentColor"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Note&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;En este artículo aprenderás a usar &lt;code&gt;GROUP BY&lt;/code&gt;, ordenar grupos con &lt;code&gt;ORDER BY&lt;/code&gt;, filtrar agregaciones con &lt;code&gt;HAVING&lt;/code&gt;, contar valores distintos con &lt;code&gt;DISTINCT&lt;/code&gt; y crear agrupaciones por una columna, múltiples columnas o expresiones.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="conceptos-de-agrupamiento-en-sql"&gt;Conceptos de agrupamiento en SQL&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;GROUP BY&lt;/code&gt; toma filas que comparten el mismo valor en una o más expresiones y las compacta en un grupo lógico. Si seleccionamos únicamente &lt;code&gt;customer_id&lt;/code&gt; desde &lt;code&gt;rental&lt;/code&gt;, SQL puede devolver cada cliente una sola vez:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;GROUP&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BY&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;5&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;6&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;594&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;595&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;596&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;597&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;598&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;599&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;599&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;El resultado ya no representa rentas individuales, sino el conjunto de clientes que aparecen en la tabla. El siguiente paso natural es medir cuántas filas contiene cada grupo. Para eso usamos &lt;code&gt;COUNT(*)&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;GROUP&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BY&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;32&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;27&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;26&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;22&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;5&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;38&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;6&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;28&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;594&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;27&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;595&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;30&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;596&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;28&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;597&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;25&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;598&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;22&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;599&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;19&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;599&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;01&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



 
 





 


&lt;div class="notice info"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Info&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;&lt;code&gt;COUNT(*)&lt;/code&gt; le indica a SQL que cuente todas las filas contenidas dentro de cada grupo definido por &lt;code&gt;GROUP BY&lt;/code&gt;. No cuenta clientes únicos; cuenta filas dentro del grupo actual.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="ordenar-resultados-agregados-con-order-by"&gt;Ordenar resultados agregados con &lt;code&gt;ORDER BY&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Una agregación suele ser más útil cuando puedes priorizarla. Por ejemplo, para identificar los clientes con más rentas, ordenamos por la segunda columna del &lt;code&gt;SELECT&lt;/code&gt;, que en este caso es &lt;code&gt;count(*)&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;GROUP&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BY&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ORDER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BY&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#c678dd"&gt;DESC&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;148&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;46&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;526&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;45&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;236&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;42&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;144&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;42&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;75&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;41&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;248&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;110&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;14&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;281&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;14&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;61&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;14&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;318&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;12&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;599&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;01&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



 
 





 


&lt;div class="notice tip"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0 1 12 21 8.25 8.25 0 0 1 6.038 7.047 8.287 8.287 0 0 0 9 9.601a8.983 8.983 0 0 1 3.361-6.867 8.21 8.21 0 0 0 3 2.48Z" /&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 0 0 .495-7.468 5.99 5.99 0 0 0-1.925 3.547 5.975 5.975 0 0 1-2.133-1.001A3.75 3.75 0 0 0 12 18Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Tip&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;&lt;code&gt;ORDER BY&lt;/code&gt; puede usar el nombre de una columna, un alias o la posición de la columna dentro del &lt;code&gt;SELECT&lt;/code&gt;. Aun así, en consultas mantenibles suele ser más claro usar alias explícitos.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="filtrar-grupos-con-having"&gt;Filtrar grupos con &lt;code&gt;HAVING&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;WHERE&lt;/code&gt; filtra filas antes de que ocurra el agrupamiento. &lt;code&gt;HAVING&lt;/code&gt;, en cambio, filtra grupos después de calcular las agregaciones. Esta diferencia es crítica: no puedes usar &lt;code&gt;WHERE count(*) &amp;gt;= 40&lt;/code&gt; porque &lt;code&gt;count(*)&lt;/code&gt; todavía no existe en esa fase lógica de la consulta.&lt;/p&gt;
&lt;p&gt;Consideremos clientes con al menos 40 rentas:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;GROUP&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BY&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;HAVING&lt;/span&gt; &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#d19a66"&gt;40&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;75&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;41&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;144&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;42&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;148&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;46&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;197&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;40&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;236&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;42&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;469&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;40&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;526&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;45&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;7&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;01&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Analicemos el flujo conceptual: &lt;code&gt;FROM&lt;/code&gt; obtiene las filas, &lt;code&gt;WHERE&lt;/code&gt; descarta filas individuales, &lt;code&gt;GROUP BY&lt;/code&gt; crea grupos, las funciones agregadas calculan métricas y &lt;code&gt;HAVING&lt;/code&gt; descarta grupos completos. Por último, &lt;code&gt;ORDER BY&lt;/code&gt; organiza el resultado final.&lt;/p&gt;
&lt;h2 id="funciones-agregadas-comunes"&gt;Funciones agregadas comunes&lt;/h2&gt;
&lt;p&gt;Las bases de datos implementan distintas funciones agregadas, pero estas aparecen prácticamente en cualquier motor SQL:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Función&lt;/th&gt;
 &lt;th&gt;Qué devuelve&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;MAX()&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;El valor máximo dentro de un conjunto&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;MIN()&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;El valor mínimo dentro de un conjunto&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;AVG()&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;El promedio de los valores del conjunto&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SUM()&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;La suma total de los valores del conjunto&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;COUNT()&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;La cantidad de valores o filas del conjunto&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Sin &lt;code&gt;GROUP BY&lt;/code&gt;, estas funciones operan sobre toda la tabla o sobre el conjunto filtrado por &lt;code&gt;WHERE&lt;/code&gt;. Observemos un resumen global de pagos:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;MAX&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;amount&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;max_amt&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;MIN&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;amount&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;min_amt&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AVG&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;amount&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;avg_amt&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SUM&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;amount&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;tot_amt&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;COUNT&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;num_payments&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;payment&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+---------+----------+----------+--------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;max_amt&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;min_amt&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;avg_amt&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;tot_amt&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;num_payments&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+---------+----------+----------+--------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;11&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;200667&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;67416&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;51&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;16049&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+---------+----------+----------+--------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#c678dd"&gt;row&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;09&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Aquí SQL devuelve una sola fila porque existe un grupo implícito: todo el resultado de &lt;code&gt;payment&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="grupos-implícitos-vs-grupos-explícitos"&gt;Grupos implícitos vs grupos explícitos&lt;/h2&gt;
&lt;p&gt;Cuando usamos una función agregada sin &lt;code&gt;GROUP BY&lt;/code&gt;, SQL resume todo el conjunto como un único grupo. Eso es útil para métricas globales, pero no sirve si necesitamos una métrica por cliente, actor, categoría o periodo.&lt;/p&gt;
&lt;p&gt;Para obtener métricas por cliente, definimos el grupo explícitamente:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;MAX&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;amount&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;max_amt&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;MIN&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;amount&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;min_amt&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AVG&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;amount&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;avg_amt&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SUM&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;amount&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;tot_amt&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;COUNT&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;num_payments&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;payment&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;GROUP&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BY&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+---------+---------+----------+---------+--------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;max_amt&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;min_amt&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;avg_amt&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;tot_amt&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;num_payments&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+---------+---------+----------+---------+--------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;9&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;708750&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;118&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;68&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;32&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;10&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;767778&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;128&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;73&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;27&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;10&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;5&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;220769&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;135&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;74&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;26&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;8&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;717273&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;81&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;78&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;22&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;5&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;9&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;805789&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;144&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;62&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;38&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;6&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;7&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;347143&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;93&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;72&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;28&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;594&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;8&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;841852&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;130&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;73&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;27&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;595&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;10&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;923333&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;117&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;70&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;30&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;596&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;6&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;454286&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;96&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;72&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;28&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;597&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;8&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;990000&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;99&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;75&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;25&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;598&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;7&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;808182&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;83&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;78&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;22&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;599&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;9&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;99&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;411053&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;83&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;81&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;19&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+---------+---------+----------+---------+--------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;599&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;04&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La regla práctica es directa: cualquier columna no agregada en el &lt;code&gt;SELECT&lt;/code&gt; debe representar la granularidad del resultado y, por lo tanto, debe estar en el &lt;code&gt;GROUP BY&lt;/code&gt;.&lt;/p&gt;




 
 





 


&lt;div class="notice warning"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Warning&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Algunos motores permiten seleccionar columnas que no están agrupadas ni agregadas, pero el resultado puede ser ambiguo o depender de configuraciones del motor. Para consultas portables y correctas, declara explícitamente la granularidad.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="contar-valores-distintos-con-countdistinct-"&gt;Contar valores distintos con &lt;code&gt;COUNT(DISTINCT ...)&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;COUNT(*)&lt;/code&gt; cuenta filas. &lt;code&gt;COUNT(columna)&lt;/code&gt; cuenta valores no nulos de esa columna. &lt;code&gt;COUNT(DISTINCT columna)&lt;/code&gt; cuenta valores únicos, ignorando duplicados.&lt;/p&gt;
&lt;p&gt;Esto permite diferenciar entre el número de pagos registrados y el número de clientes distintos que hicieron pagos:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;COUNT&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;num_rows&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;COUNT&lt;/span&gt;(&lt;span style="color:#c678dd"&gt;DISTINCT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;num_customers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;payment&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------+---------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;num_rows&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;num_customers&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------+---------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;16049&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;599&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------+---------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#c678dd"&gt;row&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;01&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Observemos que &lt;code&gt;num_rows&lt;/code&gt; refleja eventos de pago, mientras &lt;code&gt;num_customers&lt;/code&gt; refleja entidades únicas. Esa distinción evita errores frecuentes en reportes, especialmente cuando mezclamos métricas transaccionales con métricas de negocio.&lt;/p&gt;
&lt;h2 id="generar-grupos-según-la-granularidad-requerida"&gt;Generar grupos según la granularidad requerida&lt;/h2&gt;
&lt;p&gt;La calidad de una consulta agregada depende de elegir la granularidad correcta. No es lo mismo agrupar por cliente, por cliente y mes, por actor y clasificación, o por una expresión derivada de una fecha.&lt;/p&gt;
&lt;h3 id="agrupamiento-por-una-columna"&gt;Agrupamiento por una columna&lt;/h3&gt;
&lt;p&gt;Agrupar por una sola columna es el caso base. En este ejemplo obtenemos cuántas películas tiene asociadas cada actor:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_actor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;GROUP&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BY&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;19&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;25&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;22&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;22&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;197&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;33&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;198&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;40&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;199&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;200&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;20&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;200&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;11&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



 
 





 


&lt;div class="notice info"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Info&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;En este resultado cada fila representa un actor y el conteo de películas en las que participa. La consulta ya no describe relaciones individuales &lt;code&gt;actor-película&lt;/code&gt;, sino un resumen por actor.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3 id="agrupamiento-por-múltiples-columnas"&gt;Agrupamiento por múltiples columnas&lt;/h3&gt;
&lt;p&gt;En algunos casos necesitamos generar grupos que combinen más de una columna. Por ejemplo, contar cuántas películas tiene cada actor por clasificación (&lt;code&gt;G&lt;/code&gt;, &lt;code&gt;PG&lt;/code&gt;, &lt;code&gt;PG-13&lt;/code&gt;, &lt;code&gt;R&lt;/code&gt;, &lt;code&gt;NC-17&lt;/code&gt;):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;rating&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_actor&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;GROUP&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BY&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;rating&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ORDER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BY&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt;,&lt;span style="color:#d19a66"&gt;2&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------+--------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rating&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------+--------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;G&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PG&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;6&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PG&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;R&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;NC&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;17&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;5&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;G&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;7&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PG&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;6&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PG&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;R&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;NC&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;17&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;8&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;199&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;G&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;199&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PG&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;199&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PG&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;199&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;R&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;199&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;NC&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;17&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;200&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;G&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;5&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;200&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PG&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;200&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PG&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;200&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;R&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;6&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;200&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;NC&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;17&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------+--------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;996&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;01&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Aquí la granularidad ya no es “actor”, sino “actor + clasificación”. Cada combinación única genera su propio grupo. Esta técnica es la base para reportes multidimensionales y pivotes posteriores en herramientas de BI.&lt;/p&gt;
&lt;h3 id="agrupamiento-mediante-expresiones"&gt;Agrupamiento mediante expresiones&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;GROUP BY&lt;/code&gt; no está limitado a columnas físicas. También puede agrupar por expresiones, funciones o transformaciones calculadas. Esto es especialmente útil con fechas.&lt;/p&gt;
&lt;p&gt;El siguiente ejemplo agrupa rentas por año:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;extract&lt;/span&gt;(&lt;span style="color:#c678dd"&gt;YEAR&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;) &lt;span style="color:#c678dd"&gt;year&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;COUNT&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;how_many&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;GROUP&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BY&lt;/span&gt; &lt;span style="color:#c678dd"&gt;extract&lt;/span&gt;(&lt;span style="color:#c678dd"&gt;YEAR&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;year&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;how_many&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;15862&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2006&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;182&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;01&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En lugar de agrupar por cada &lt;code&gt;rental_date&lt;/code&gt; exacto, reducimos la fecha al año con &lt;code&gt;EXTRACT(YEAR FROM rental_date)&lt;/code&gt;. El resultado responde una pregunta distinta: volumen anual, no eventos individuales.&lt;/p&gt;
&lt;h2 id="buenas-prácticas-al-trabajar-con-group-by"&gt;Buenas prácticas al trabajar con &lt;code&gt;GROUP BY&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Para mantener consultas claras y confiables, considera estas reglas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Define primero la &lt;strong&gt;granularidad&lt;/strong&gt;: una fila por cliente, por cliente y mes, por actor y rating, etc.&lt;/li&gt;
&lt;li&gt;Usa alias descriptivos para agregaciones: &lt;code&gt;num_payments&lt;/code&gt;, &lt;code&gt;total_amount&lt;/code&gt;, &lt;code&gt;avg_amount&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Aplica &lt;code&gt;WHERE&lt;/code&gt; para filtrar filas antes de agrupar y &lt;code&gt;HAVING&lt;/code&gt; para filtrar grupos.&lt;/li&gt;
&lt;li&gt;Evita depender de posiciones como &lt;code&gt;ORDER BY 2&lt;/code&gt; en consultas de producción si un alias mejora la legibilidad.&lt;/li&gt;
&lt;li&gt;Verifica si necesitas contar filas (&lt;code&gt;COUNT(*)&lt;/code&gt;), valores no nulos (&lt;code&gt;COUNT(columna)&lt;/code&gt;) o valores únicos (&lt;code&gt;COUNT(DISTINCT columna)&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conclusión"&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;GROUP BY&lt;/code&gt; cambia la forma en que lees una tabla: pasas de inspeccionar filas individuales a construir resúmenes por la granularidad que necesita tu análisis. Combinado con funciones agregadas, &lt;code&gt;HAVING&lt;/code&gt;, &lt;code&gt;DISTINCT&lt;/code&gt; y expresiones, se convierte en una herramienta central para reportes, dashboards y validaciones de datos.&lt;/p&gt;
&lt;p&gt;En el siguiente artículo de la serie vamos a conectar datos distribuidos entre tablas con &lt;a href="https://blog.dacadev.com/programacion/sql/05-consultas-multiples-tablas-joins"



 


&gt;consultas a múltiples tablas usando JOINs&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>SQL: Lógica Condicional con la Expresión CASE</title><link>https://blog.dacadev.com/programacion/sql/03-logica-condicional-case/</link><pubDate>Thu, 11 Jun 2026 00:00:00 -0500</pubDate><guid>https://blog.dacadev.com/programacion/sql/03-logica-condicional-case/</guid><dc:creator>Dacadev</dc:creator><category>programación</category><description>Aprende a usar CASE en SQL para crear lógica condicional, clasificar datos, evitar división por cero y manejar NULL correctamente.</description><media:content url="https://blog.dacadev.com/images/programming/sql/conditional-logic/banner.png" medium="image" type="image/png"/><content:encoded>
&lt;details class="table-of-content "&gt;
 &lt;summary&gt;
 
 Tabla de Contenido
 
 &lt;/summary&gt;
 &lt;nav id="TableOfContents"&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#la-expresión-case"&gt;La expresión CASE&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#searched-case"&gt;Searched CASE&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#simple-case"&gt;Simple CASE&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#comprobar-la-existencia"&gt;Comprobar la existencia&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#errores-de-división-por-cero"&gt;Errores de división por cero&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#actualizaciones-condicionales"&gt;Actualizaciones condicionales&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#manejo-de-valores-null"&gt;Manejo de valores NULL&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#cierre"&gt;Cierre&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
&lt;/nav&gt;
&lt;/details&gt;

&lt;p&gt;Cuando una consulta necesita clasificar registros, calcular valores derivados o protegerse de casos límite, la &lt;strong&gt;lógica condicional en SQL&lt;/strong&gt; evita mover decisiones simples a la capa de aplicación. Después de trabajar con &lt;a href="https://blog.dacadev.com/programacion/sql/02-filtrado-datos-clausula-where"



 


&gt;filtrado de datos con WHERE&lt;/a&gt;, el siguiente paso natural es usar la &lt;strong&gt;expresión CASE&lt;/strong&gt; para transformar resultados directamente dentro del query.&lt;/p&gt;




 
 





 


&lt;div class="notice note"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" width="22" height="22" stroke-width="1.5" stroke="currentColor"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Note&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;En este artículo analizaremos cómo usar &lt;code&gt;CASE&lt;/code&gt; en SQL con condiciones múltiples, validaciones de existencia, protección contra división por cero, actualizaciones condicionales y manejo explícito de valores &lt;code&gt;NULL&lt;/code&gt;.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;La expresión &lt;code&gt;CASE&lt;/code&gt; cumple un rol similar a &lt;code&gt;if / else if / else&lt;/code&gt; o &lt;code&gt;switch / case&lt;/code&gt; en lenguajes de programación. Su valor está en que opera dentro del motor de base de datos: puedes derivar columnas, etiquetar estados y condicionar cálculos sin postprocesar cada fila en tu backend.&lt;/p&gt;
&lt;p&gt;Observemos un primer ejemplo directo. A partir de una columna &lt;code&gt;active&lt;/code&gt;, convertimos &lt;code&gt;1&lt;/code&gt; y &lt;code&gt;0&lt;/code&gt; en etiquetas más legibles:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;CASE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;active&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;ACTIVE&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ELSE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;INACTIVE&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;END&lt;/span&gt; &lt;span style="color:#e06c75"&gt;activity_type&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+--------------+---------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;activity_type&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+--------------+---------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MARY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SMITH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTIVE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PATRICIA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JOHNSON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTIVE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;LINDA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WILLIAMS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTIVE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BARBARA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JONES&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTIVE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ELIZABETH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BROWN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTIVE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JENNIFER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DAVIS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTIVE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;KENT&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ARSENAULT&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTIVE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;TERRANCE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ROUSH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;INACTIVE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;RENE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MCALISTER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTIVE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;EDUARDO&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;HIATT&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTIVE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;TERRENCE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;GUNDERSON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTIVE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ENRIQUE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FORSYTHE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTIVE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FREDDIE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DUGGAN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTIVE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WADE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DELVALLE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTIVE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AUSTIN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CINTRON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACTIVE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+--------------+---------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;599&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="la-expresión-case"&gt;La expresión CASE&lt;/h2&gt;
&lt;p&gt;La expresión &lt;code&gt;CASE&lt;/code&gt; evalúa una o varias condiciones y retorna un valor según la primera coincidencia encontrada. En SQL, &lt;code&gt;CASE&lt;/code&gt; no es solo una herramienta cosmética; también permite modelar reglas de negocio dentro de consultas, reportes y operaciones &lt;code&gt;UPDATE&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Existen dos variantes principales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Searched CASE&lt;/strong&gt;: cada &lt;code&gt;WHEN&lt;/code&gt; contiene una condición completa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simple CASE&lt;/strong&gt;: se evalúa una expresión base contra valores específicos.&lt;/li&gt;
&lt;/ul&gt;




 
 





 


&lt;div class="notice info"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Info&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Si ninguna condición coincide y no defines &lt;code&gt;ELSE&lt;/code&gt;, el resultado de &lt;code&gt;CASE&lt;/code&gt; será &lt;code&gt;NULL&lt;/code&gt;. Conviene declarar &lt;code&gt;ELSE&lt;/code&gt; explícitamente cuando el consumidor del dato espera una categoría estable.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="searched-case"&gt;Searched CASE&lt;/h2&gt;
&lt;p&gt;El &lt;strong&gt;Searched CASE&lt;/strong&gt; es la forma más flexible porque cada rama puede evaluar una condición distinta. Su estructura general es:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;CASE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;C1&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;E1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;C2&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;E2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CN&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;EN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#c678dd"&gt;ELSE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ED&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;END&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En este patrón, &lt;code&gt;C1&lt;/code&gt;, &lt;code&gt;C2&lt;/code&gt; y &lt;code&gt;CN&lt;/code&gt; representan condiciones booleanas. Cuando una condición se cumple, &lt;code&gt;CASE&lt;/code&gt; retorna su expresión asociada (&lt;code&gt;E1&lt;/code&gt;, &lt;code&gt;E2&lt;/code&gt;, &lt;code&gt;EN&lt;/code&gt;) y deja de evaluar las siguientes ramas.&lt;/p&gt;
&lt;p&gt;Analicemos una clasificación de categorías de películas:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;CASE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;category&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;name&lt;/span&gt; &lt;span style="color:#c678dd"&gt;IN&lt;/span&gt; (&lt;span style="color:#98c379"&gt;&amp;#39;Children&amp;#39;&lt;/span&gt;,&lt;span style="color:#98c379"&gt;&amp;#39;Family&amp;#39;&lt;/span&gt;,&lt;span style="color:#98c379"&gt;&amp;#39;Sports&amp;#39;&lt;/span&gt;,&lt;span style="color:#98c379"&gt;&amp;#39;Animation&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;All Ages&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;category&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Horror&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Adult&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;category&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;name&lt;/span&gt; &lt;span style="color:#c678dd"&gt;IN&lt;/span&gt; (&lt;span style="color:#98c379"&gt;&amp;#39;Music&amp;#39;&lt;/span&gt;,&lt;span style="color:#98c379"&gt;&amp;#39;Games&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Teens&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;ELSE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Other&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;END&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Esta variante permite mezclar operadores como &lt;code&gt;IN&lt;/code&gt;, &lt;code&gt;=&lt;/code&gt;, comparaciones numéricas, subconsultas y funciones. También se puede usar para evitar cálculos innecesarios en ciertas filas.&lt;/p&gt;
&lt;p&gt;Consideremos el siguiente caso: si un cliente está inactivo, queremos retornar &lt;code&gt;0&lt;/code&gt;; si está activo, contamos sus rentas:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;CASE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;active&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ELSE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;) &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;END&lt;/span&gt; &lt;span style="color:#e06c75"&gt;num_rentals&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+--------------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;num_rentals&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+--------------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MARY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SMITH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;32&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PATRICIA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JOHNSON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;27&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;LINDA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WILLIAMS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;26&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BARBARA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JONES&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;22&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ELIZABETH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BROWN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;38&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JENNIFER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DAVIS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;28&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;TERRANCE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ROUSH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;RENE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MCALISTER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;26&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;EDUARDO&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;HIATT&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;27&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;TERRENCE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;GUNDERSON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;30&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ENRIQUE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FORSYTHE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;28&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FREDDIE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DUGGAN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;25&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WADE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DELVALLE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;22&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AUSTIN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CINTRON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;19&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+--------------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;599&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;01&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="simple-case"&gt;Simple CASE&lt;/h2&gt;
&lt;p&gt;El &lt;strong&gt;Simple CASE&lt;/strong&gt; es útil cuando todas las ramas comparan la misma expresión contra valores concretos. En lugar de repetir &lt;code&gt;category.name = ...&lt;/code&gt;, colocamos &lt;code&gt;category.name&lt;/code&gt; una sola vez después de &lt;code&gt;CASE&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;CASE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;category&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Children&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;All Ages&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Family&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;All Ages&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Sports&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;All Ages&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Animation&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;All Ages&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Horror&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Adult&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Music&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Teens&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Games&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Teens&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;ELSE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Other&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;END&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Esta forma es más compacta y legible cuando la decisión depende de una única columna o expresión. Su limitación es que no permite condiciones heterogéneas por rama; para eso conviene usar &lt;code&gt;Searched CASE&lt;/code&gt;.&lt;/p&gt;




 
 





 


&lt;div class="notice tip"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0 1 12 21 8.25 8.25 0 0 1 6.038 7.047 8.287 8.287 0 0 0 9 9.601a8.983 8.983 0 0 1 3.361-6.867 8.21 8.21 0 0 0 3 2.48Z" /&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 0 0 .495-7.468 5.99 5.99 0 0 0-1.925 3.547 5.975 5.975 0 0 1-2.133-1.001A3.75 3.75 0 0 0 12 18Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Tip&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Usa &lt;code&gt;Simple CASE&lt;/code&gt; cuando estás mapeando valores discretos de una misma columna. Usa &lt;code&gt;Searched CASE&lt;/code&gt; cuando necesitas rangos, &lt;code&gt;IN&lt;/code&gt;, &lt;code&gt;EXISTS&lt;/code&gt;, comparaciones entre columnas o reglas más compuestas.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="comprobar-la-existencia"&gt;Comprobar la existencia&lt;/h2&gt;
&lt;p&gt;Uno de los usos más prácticos de &lt;code&gt;CASE&lt;/code&gt; es combinarlo con &lt;code&gt;EXISTS&lt;/code&gt;. Esta técnica permite crear columnas tipo bandera (&lt;code&gt;Y&lt;/code&gt; / &lt;code&gt;N&lt;/code&gt;, &lt;code&gt;true&lt;/code&gt; / &lt;code&gt;false&lt;/code&gt;, &lt;code&gt;1&lt;/code&gt; / &lt;code&gt;0&lt;/code&gt;) según la existencia de filas relacionadas.&lt;/p&gt;
&lt;p&gt;Observemos una consulta que marca si un actor participó en películas con ciertas clasificaciones:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;CASE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#c678dd"&gt;EXISTS&lt;/span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_actor&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;rating&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;G&amp;#39;&lt;/span&gt;) &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Y&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ELSE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;N&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;END&lt;/span&gt; &lt;span style="color:#e06c75"&gt;g_actor&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;CASE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#c678dd"&gt;EXISTS&lt;/span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_actor&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;rating&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;PG&amp;#39;&lt;/span&gt;) &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Y&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ELSE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;N&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;END&lt;/span&gt; &lt;span style="color:#e06c75"&gt;pg_actor&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;CASE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#c678dd"&gt;EXISTS&lt;/span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_actor&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;fa&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;rating&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;NC-17&amp;#39;&lt;/span&gt;) &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Y&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ELSE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;N&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;END&lt;/span&gt; &lt;span style="color:#e06c75"&gt;nc17_actor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LIKE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;S%&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;OR&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LIKE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;S%&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-------------+---------+----------+------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;g_actor&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;pg_actor&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;nc17_actor&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-------------+---------+----------+------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JOE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SWANK&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SANDRA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;KILMER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CAMERON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;STREEP&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SANDRA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PECK&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SISSY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SOBIESKI&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;N&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;NICK&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;STALLONE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SEAN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WILLIAMS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;GROUCHO&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SINATRA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SCARLETT&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DAMON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SPENCER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PECK&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SEAN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;GUINESS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SPENCER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DEPP&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SUSAN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DAVIS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SIDNEY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CROWE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SYLVESTER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DERN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SUSAN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DAVIS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DAN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;STREEP&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SALMA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;NOLTE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;N&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SCARLETT&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BENING&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JEFF&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SILVERSTONE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JOHN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SUVARI&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JAYNE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SILVERSTONE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Y&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-------------+---------+----------+------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;22&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;También podemos usar &lt;code&gt;CASE&lt;/code&gt; con una subconsulta escalar. Aquí se clasifica la disponibilidad de una película según la cantidad de copias en inventario:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;title&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;CASE&lt;/span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;) &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;inventory&lt;/span&gt; &lt;span style="color:#e06c75"&gt;i&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;i&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Out Of Stock&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Scarce&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Scarce&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Available&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Available&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ELSE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Common&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;END&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_availability&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt; &lt;span style="color:#e06c75"&gt;f&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; ;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-----------------------------+-------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;title&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_availability&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-----------------------------+-------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACADEMY&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DINOSAUR&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Common&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;GOLDFINGER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Available&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ADAPTATION&lt;/span&gt; &lt;span style="color:#e06c75"&gt;HOLES&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Available&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AFFAIR&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PREJUDICE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Common&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AFRICAN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;EGG&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Available&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AGENT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;TRUMAN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Common&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AIRPLANE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SIERRA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Common&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AIRPORT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;POLLOCK&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Available&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALABAMA&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DEVIL&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Common&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALADDIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CALENDAR&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Common&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALAMO&lt;/span&gt; &lt;span style="color:#e06c75"&gt;VIDEOTAPE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Common&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALASKA&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PHANTOM&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Common&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALI&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FOREVER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Available&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALICE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FANTASIA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;Out&lt;/span&gt; &lt;span style="color:#c678dd"&gt;Of&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Stock&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;YOUNG&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LANGUAGE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Scarce&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;YOUTH&lt;/span&gt; &lt;span style="color:#e06c75"&gt;KICK&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Scarce&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ZHIVAGO&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CORE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Scarce&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ZOOLANDER&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FICTION&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Common&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ZORRO&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ARK&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Common&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-----------------------------+-------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;1000&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;01&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="errores-de-división-por-cero"&gt;Errores de división por cero&lt;/h2&gt;
&lt;p&gt;La división por cero no está definida matemáticamente y los motores de base de datos deben tratarla como un caso especial. En MySQL, por ejemplo, una división directa entre cero puede retornar &lt;code&gt;NULL&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#d19a66"&gt;100&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;/&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;100&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;/&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#c678dd"&gt;row&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En reportes, un &lt;code&gt;NULL&lt;/code&gt; inesperado puede contaminar cálculos posteriores o romper supuestos del consumidor. &lt;code&gt;CASE&lt;/code&gt; permite controlar el denominador antes de ejecutar la división.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;sum&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;p&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;amount&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;tot_payment_amt&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;p&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;amount&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;num_payments&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;sum&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;p&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;amount&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;CASE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;p&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;amount&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ELSE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;p&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;amount&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;END&lt;/span&gt; &lt;span style="color:#e06c75"&gt;avg_payment&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LEFT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;OUTER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;payment&lt;/span&gt; &lt;span style="color:#e06c75"&gt;p&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;p&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;GROUP&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BY&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+------------+-----------------+--------------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;tot_payment_amt&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;num_payments&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;avg_payment&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+------------+-----------------+--------------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MARY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SMITH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;118&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;68&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;32&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;708750&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PATRICIA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JOHNSON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;128&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;73&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;27&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;767778&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;LINDA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WILLIAMS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;135&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;74&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;26&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;5&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;220769&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BARBARA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JONES&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;81&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;78&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;22&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;717273&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ELIZABETH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BROWN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;144&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;62&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;38&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;805789&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;EDUARDO&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;HIATT&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;130&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;73&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;27&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;841852&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;TERRENCE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;GUNDERSON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;117&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;70&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;30&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;923333&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ENRIQUE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FORSYTHE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;96&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;72&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;28&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;454286&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;FREDDIE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DUGGAN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;99&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;75&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;25&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;990000&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WADE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DELVALLE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;83&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;78&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;22&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;808182&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AUSTIN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CINTRON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;83&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;81&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;19&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;411053&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+------------+-----------------+--------------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;599&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;07&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



 
 





 


&lt;div class="notice warning"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Warning&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Esta técnica evita el error o el &lt;code&gt;NULL&lt;/code&gt;, pero no siempre significa que dividir entre &lt;code&gt;1&lt;/code&gt; sea semánticamente correcto. En métricas financieras o analíticas, valida si conviene retornar &lt;code&gt;0&lt;/code&gt;, &lt;code&gt;NULL&lt;/code&gt; controlado o una etiqueta explícita.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="actualizaciones-condicionales"&gt;Actualizaciones condicionales&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;CASE&lt;/code&gt; también puede usarse dentro de &lt;code&gt;UPDATE&lt;/code&gt;. Esto permite modificar registros según reglas calculadas al momento de la escritura.&lt;/p&gt;
&lt;p&gt;El siguiente ejemplo desactiva clientes activos si su última renta ocurrió hace 90 días o más; en caso contrario, mantiene el registro activo:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;UPDATE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;SET&lt;/span&gt; &lt;span style="color:#e06c75"&gt;active&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;CASE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#d19a66"&gt;90&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;&amp;lt;=&lt;/span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;datediff&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;now&lt;/span&gt;(), &lt;span style="color:#c678dd"&gt;max&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;ELSE&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;END&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;active&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Esta aproximación concentra la regla en una sola sentencia SQL. Antes de ejecutar un &lt;code&gt;UPDATE&lt;/code&gt; de este tipo en producción, conviene probar el mismo &lt;code&gt;CASE&lt;/code&gt; en un &lt;code&gt;SELECT&lt;/code&gt;, revisar cuántas filas cambiarán y ejecutar la operación dentro de una transacción si el motor lo permite.&lt;/p&gt;
&lt;h2 id="manejo-de-valores-null"&gt;Manejo de valores NULL&lt;/h2&gt;
&lt;p&gt;Los valores &lt;code&gt;NULL&lt;/code&gt; aparecen con frecuencia cuando usamos &lt;code&gt;LEFT OUTER JOIN&lt;/code&gt;, porque no siempre existe una fila relacionada. &lt;code&gt;CASE&lt;/code&gt; nos permite reemplazarlos por un valor controlado para reportes o interfaces.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;CASE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;address&lt;/span&gt; &lt;span style="color:#c678dd"&gt;IS&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Unknown&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;ELSE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;address&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;END&lt;/span&gt; &lt;span style="color:#e06c75"&gt;address&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;CASE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ct&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;city&lt;/span&gt; &lt;span style="color:#c678dd"&gt;IS&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Unknown&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;ELSE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ct&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;city&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;END&lt;/span&gt; &lt;span style="color:#e06c75"&gt;city&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;CASE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;WHEN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;cn&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;country&lt;/span&gt; &lt;span style="color:#c678dd"&gt;IS&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt; &lt;span style="color:#c678dd"&gt;THEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;Unknown&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;ELSE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;cn&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;country&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;END&lt;/span&gt; &lt;span style="color:#e06c75"&gt;country&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;LEFT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;OUTER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;address&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;address_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;address_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;LEFT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;OUTER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;city&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ct&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;a&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;city_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ct&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;city_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;LEFT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;OUTER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;country&lt;/span&gt; &lt;span style="color:#e06c75"&gt;cn&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ct&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;country_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;cn&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;country_id&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En varios motores también existen funciones como &lt;code&gt;COALESCE&lt;/code&gt;, útiles para este caso específico. Aun así, &lt;code&gt;CASE&lt;/code&gt; sigue siendo preferible cuando la lógica depende de más de una condición o cuando el valor de salida no es simplemente el primer dato no nulo.&lt;/p&gt;
&lt;h2 id="cierre"&gt;Cierre&lt;/h2&gt;
&lt;p&gt;La expresión &lt;code&gt;CASE&lt;/code&gt; convierte SQL en una herramienta más expresiva para preparar datos cerca de donde viven. Con ella puedes clasificar filas, derivar columnas, controlar casos límite, ejecutar actualizaciones condicionales y normalizar valores faltantes.&lt;/p&gt;
&lt;p&gt;Como regla práctica, usa &lt;code&gt;CASE&lt;/code&gt; para reglas de presentación, clasificación y cálculo que pertenecen naturalmente al resultado de la consulta. Si la lógica empieza a depender de múltiples procesos externos o de reglas de dominio altamente cambiantes, evalúa moverla a una capa de aplicación o a una vista bien documentada.&lt;/p&gt;
&lt;p&gt;En el siguiente artículo de la serie vamos a trabajar con &lt;a href="https://blog.dacadev.com/programacion/sql/04-agrupamiento-funciones-agregadas"



 


&gt;agrupamiento y funciones agregadas&lt;/a&gt;, donde &lt;code&gt;GROUP BY&lt;/code&gt;, &lt;code&gt;COUNT&lt;/code&gt;, &lt;code&gt;SUM&lt;/code&gt; y otras funciones nos permitirán resumir datos de manera consistente.&lt;/p&gt;</content:encoded></item><item><title>SQL: Filtrado de Datos con la Cláusula WHERE</title><link>https://blog.dacadev.com/programacion/sql/02-filtrado-datos-clausula-where/</link><pubDate>Mon, 08 Jun 2026 00:00:00 -0500</pubDate><guid>https://blog.dacadev.com/programacion/sql/02-filtrado-datos-clausula-where/</guid><dc:creator>Dacadev</dc:creator><category>programación</category><description>Aprende filtrado de datos con WHERE en SQL usando operadores, BETWEEN, IN, LIKE, expresiones regulares y NULL.</description><media:content url="https://blog.dacadev.com/images/programming/sql/filtering/banner.png" medium="image" type="image/png"/><content:encoded>
&lt;details class="table-of-content "&gt;
 &lt;summary&gt;
 
 Tabla de Contenido
 
 &lt;/summary&gt;
 &lt;nav id="TableOfContents"&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#la-cláusula-where-y-las-condiciones-booleanas"&gt;La cláusula WHERE y las condiciones booleanas&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#condiciones-de-igualdad"&gt;Condiciones de igualdad&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#condiciones-de-desigualdad"&gt;Condiciones de desigualdad&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#modificación-de-datos-con-condiciones-de-igualdad"&gt;Modificación de datos con condiciones de igualdad&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#condiciones-de-rango"&gt;Condiciones de rango&lt;/a&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#usando-between"&gt;Usando BETWEEN&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#condiciones-de-pertenencia-con-in"&gt;Condiciones de pertenencia con IN&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#subconsultas-dentro-de-in"&gt;Subconsultas dentro de IN&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#condiciones-de-coincidencia-con-like"&gt;Condiciones de coincidencia con LIKE&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#expresiones-regulares"&gt;Expresiones regulares&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#filtrado-de-valores-null"&gt;Filtrado de valores NULL&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#cierre"&gt;Cierre&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
&lt;/nav&gt;
&lt;/details&gt;

&lt;p&gt;El &lt;strong&gt;filtrado de datos en SQL&lt;/strong&gt; es una operación diaria cuando trabajas con bases relacionales: rara vez necesitas todas las filas de una tabla. La &lt;strong&gt;cláusula WHERE&lt;/strong&gt; expresa condiciones precisas para reducir resultados, evitar lecturas innecesarias y alinear la consulta con la lógica de negocio. Este es el artículo #2 de la serie SQL; si necesitas repasar &lt;code&gt;SELECT&lt;/code&gt;, &lt;code&gt;FROM&lt;/code&gt; y el modelo general de consulta, revisa &lt;a href="https://blog.dacadev.com/programacion/sql/01-fundamentos-sql-select-from-where"



 


&gt;Fundamentos de SQL&lt;/a&gt;.&lt;/p&gt;




 
 





 


&lt;div class="notice note"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" width="22" height="22" stroke-width="1.5" stroke="currentColor"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Note&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Aprenderás a usar &lt;code&gt;WHERE&lt;/code&gt; con igualdad, desigualdad, rangos, &lt;code&gt;BETWEEN&lt;/code&gt;, &lt;code&gt;IN&lt;/code&gt;, subconsultas, &lt;code&gt;LIKE&lt;/code&gt;, expresiones regulares y &lt;code&gt;NULL&lt;/code&gt;, tanto en lectura como en modificación.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="la-cláusula-where-y-las-condiciones-booleanas"&gt;La cláusula WHERE y las condiciones booleanas&lt;/h2&gt;
&lt;p&gt;La cláusula &lt;code&gt;WHERE&lt;/code&gt; filtra filas evaluando una o más condiciones. Cada condición produce un resultado lógico que el motor de base de datos usa para decidir si una fila entra o no en el resultado final.&lt;/p&gt;
&lt;p&gt;En la práctica, esas condiciones suelen combinar varios tipos de operadores:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Operadores de comparación&lt;/strong&gt;: &lt;code&gt;=&lt;/code&gt;, &lt;code&gt;!=&lt;/code&gt;, &lt;code&gt;&amp;lt;&lt;/code&gt;, &lt;code&gt;&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;, &lt;code&gt;LIKE&lt;/code&gt;, &lt;code&gt;IN&lt;/code&gt;, &lt;code&gt;BETWEEN&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operadores aritméticos&lt;/strong&gt;: &lt;code&gt;+&lt;/code&gt;, &lt;code&gt;-&lt;/code&gt;, &lt;code&gt;*&lt;/code&gt;, &lt;code&gt;/&lt;/code&gt;, cuando necesitas comparar expresiones calculadas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operadores lógicos&lt;/strong&gt;: &lt;code&gt;AND&lt;/code&gt;, &lt;code&gt;OR&lt;/code&gt;, &lt;code&gt;NOT&lt;/code&gt;, para componer filtros más específicos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aunque &lt;code&gt;WHERE&lt;/code&gt; es el punto central para filtrar filas, también existe &lt;code&gt;HAVING&lt;/code&gt;, que se utiliza después de agrupar datos con &lt;code&gt;GROUP BY&lt;/code&gt;. La diferencia es importante: &lt;code&gt;WHERE&lt;/code&gt; filtra filas antes de la agregación; &lt;code&gt;HAVING&lt;/code&gt; filtra grupos después de calcular agregados.&lt;/p&gt;
&lt;h2 id="condiciones-de-igualdad"&gt;Condiciones de igualdad&lt;/h2&gt;
&lt;p&gt;La condición de igualdad compara una columna contra una expresión. Esa expresión puede ser un literal, un número, una fecha o incluso el resultado de una subconsulta.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;title&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;RIVER OUTLAW&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;fed_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;111-11-1111&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;amount&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#d19a66"&gt;375&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;25&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film_id&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;title&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;RIVER OUTLAW&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Observemos un caso concreto usando la base de datos de ejemplo Sakila. La consulta obtiene los correos de clientes que rentaron películas el &lt;code&gt;2005-06-14&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;email&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;date&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;2005-06-14&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;email&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CATHERINE&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;CAMPBELL&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;@&lt;/span&gt;&lt;span style="color:#e06c75"&gt;sakilacustomer&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;org&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JOYCE&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;EDWARDS&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;@&lt;/span&gt;&lt;span style="color:#e06c75"&gt;sakilacustomer&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;org&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;TERRENCE&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;GUNDERSON&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;@&lt;/span&gt;&lt;span style="color:#e06c75"&gt;sakilacustomer&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;org&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;16&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;03&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Aquí &lt;code&gt;date(r.rental_date)&lt;/code&gt; transforma el &lt;code&gt;DATETIME&lt;/code&gt; a fecha antes de comparar. En producción, aplicar funciones sobre columnas puede limitar el uso eficiente de índices.&lt;/p&gt;
&lt;h2 id="condiciones-de-desigualdad"&gt;Condiciones de desigualdad&lt;/h2&gt;
&lt;p&gt;La desigualdad expresa el caso contrario: queremos excluir filas que coinciden con un valor. En SQL puedes escribirla con &lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;, &lt;code&gt;!=&lt;/code&gt; o usando &lt;code&gt;NOT&lt;/code&gt; según el motor y el estilo del equipo.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;email&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;date&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;2005-06-14&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-----------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;email&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-----------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AUSTIN&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;CINTRON&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;@&lt;/span&gt;&lt;span style="color:#e06c75"&gt;sakilacustomer&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;org&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AUSTIN&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;CINTRON&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;@&lt;/span&gt;&lt;span style="color:#e06c75"&gt;sakilacustomer&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;org&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AUSTIN&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;CINTRON&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;@&lt;/span&gt;&lt;span style="color:#e06c75"&gt;sakilacustomer&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;org&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AUSTIN&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;CINTRON&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;@&lt;/span&gt;&lt;span style="color:#e06c75"&gt;sakilacustomer&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;org&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-----------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;16028&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;03&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La diferencia semántica es directa: en lugar de seleccionar rentas del día indicado, excluimos ese día.&lt;/p&gt;
&lt;h2 id="modificación-de-datos-con-condiciones-de-igualdad"&gt;Modificación de datos con condiciones de igualdad&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;WHERE&lt;/code&gt; no solo aparece en &lt;code&gt;SELECT&lt;/code&gt;. También es crítico en &lt;code&gt;UPDATE&lt;/code&gt; y &lt;code&gt;DELETE&lt;/code&gt;, donde define exactamente qué filas serán modificadas o eliminadas.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;DELETE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;year&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2004&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;DELETE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;year&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#c678dd"&gt;year&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2006&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;El primer caso elimina rentas del año 2004; el segundo elimina rentas que no pertenecen ni a 2005 ni a 2006.&lt;/p&gt;




 
 





 


&lt;div class="notice warning"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Warning&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Antes de ejecutar un &lt;code&gt;DELETE&lt;/code&gt; o &lt;code&gt;UPDATE&lt;/code&gt; con &lt;code&gt;WHERE&lt;/code&gt;, valida la condición con un &lt;code&gt;SELECT&lt;/code&gt; equivalente. Un filtro demasiado amplio puede modificar más filas de las esperadas.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="condiciones-de-rango"&gt;Condiciones de rango&lt;/h2&gt;
&lt;p&gt;Para filtrar rangos puedes combinar operadores como &lt;code&gt;&amp;lt;&lt;/code&gt;, &lt;code&gt;&amp;lt;=&lt;/code&gt;, &lt;code&gt;&amp;gt;&lt;/code&gt; y &lt;code&gt;&amp;gt;=&lt;/code&gt; con &lt;code&gt;AND&lt;/code&gt; u &lt;code&gt;OR&lt;/code&gt;. Esto funciona con fechas, números y otros tipos comparables.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;2005-05-25&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+---------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+---------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;130&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;05&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;24&lt;/span&gt; &lt;span style="color:#d19a66"&gt;22&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;53&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;30&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;459&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;05&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;24&lt;/span&gt; &lt;span style="color:#d19a66"&gt;22&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;54&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;33&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;239&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;05&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;24&lt;/span&gt; &lt;span style="color:#d19a66"&gt;23&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;31&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;46&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+---------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;8&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;2005-06-16&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;2005-06-14&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+---------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+---------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;416&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;06&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;14&lt;/span&gt; &lt;span style="color:#d19a66"&gt;22&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;53&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;33&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;516&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;06&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;14&lt;/span&gt; &lt;span style="color:#d19a66"&gt;22&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;55&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;148&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;06&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#d19a66"&gt;23&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;20&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;26&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;237&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;06&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#d19a66"&gt;23&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;36&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;37&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;155&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;06&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#d19a66"&gt;23&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;55&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;27&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;341&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;06&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#d19a66"&gt;23&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;57&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;20&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;149&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;06&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#d19a66"&gt;23&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;58&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;53&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+---------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;364&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="usando-between"&gt;Usando BETWEEN&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;BETWEEN&lt;/code&gt; permite expresar un rango con una sintaxis más compacta. El valor menor va a la izquierda, el mayor a la derecha, y ambos límites son inclusivos.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BETWEEN&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;2005-06-14&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;2005-06-16&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+---------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+---------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;416&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;06&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;14&lt;/span&gt; &lt;span style="color:#d19a66"&gt;22&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;53&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;33&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;516&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;06&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;14&lt;/span&gt; &lt;span style="color:#d19a66"&gt;22&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;55&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;148&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;06&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#d19a66"&gt;23&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;20&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;26&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;237&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;06&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#d19a66"&gt;23&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;36&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;37&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;155&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;06&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#d19a66"&gt;23&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;55&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;27&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;341&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;06&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#d19a66"&gt;23&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;57&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;20&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;149&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2005&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;06&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#d19a66"&gt;23&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;58&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;53&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+---------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;364&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



 
 





 


&lt;div class="notice tip"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0 1 12 21 8.25 8.25 0 0 1 6.038 7.047 8.287 8.287 0 0 0 9 9.601a8.983 8.983 0 0 1 3.361-6.867 8.21 8.21 0 0 0 3 2.48Z" /&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 0 0 .495-7.468 5.99 5.99 0 0 0-1.925 3.547 5.975 5.975 0 0 1-2.133-1.001A3.75 3.75 0 0 0 12 18Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Tip&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;&lt;code&gt;BETWEEN&lt;/code&gt; puede usarse con fechas, horas, números y &lt;code&gt;strings&lt;/code&gt;. Recuerda que los límites son inclusivos, así que valida cuidadosamente rangos de tiempo cuando trabajes con columnas &lt;code&gt;DATETIME&lt;/code&gt;.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="condiciones-de-pertenencia-con-in"&gt;Condiciones de pertenencia con IN&lt;/h2&gt;
&lt;p&gt;Las condiciones de pertenencia permiten verificar si un valor existe dentro de una lista. Primero, analicemos la versión con &lt;code&gt;OR&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;title&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;rating&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rating&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;G&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;OR&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rating&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;PG&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------------------------+--------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;title&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rating&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------------------------+--------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACADEMY&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DINOSAUR&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PG&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;GOLDFINGER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;G&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WEDDING&lt;/span&gt; &lt;span style="color:#e06c75"&gt;APOLLO&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PG&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WEREWOLF&lt;/span&gt; &lt;span style="color:#e06c75"&gt;LOLA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;G&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WEST&lt;/span&gt; &lt;span style="color:#e06c75"&gt;LION&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;G&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;YOUNG&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LANGUAGE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;G&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------------------------+--------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;372&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La misma condición puede escribirse de forma más clara con &lt;code&gt;IN&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;title&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;rating&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rating&lt;/span&gt; &lt;span style="color:#c678dd"&gt;IN&lt;/span&gt; (&lt;span style="color:#98c379"&gt;&amp;#39;G&amp;#39;&lt;/span&gt;,&lt;span style="color:#98c379"&gt;&amp;#39;PG&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;También puedes combinar pertenencia y negación usando &lt;code&gt;NOT IN&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;title&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;rating&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rating&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NOT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;IN&lt;/span&gt; (&lt;span style="color:#98c379"&gt;&amp;#39;PG-13&amp;#39;&lt;/span&gt;,&lt;span style="color:#98c379"&gt;&amp;#39;R&amp;#39;&lt;/span&gt;, &lt;span style="color:#98c379"&gt;&amp;#39;NC-17&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;IN&lt;/code&gt; mejora la legibilidad cuando comparas una columna contra múltiples valores discretos y evita repetir la misma columna.&lt;/p&gt;
&lt;h2 id="subconsultas-dentro-de-in"&gt;Subconsultas dentro de IN&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;IN&lt;/code&gt; no está limitado a listas escritas manualmente. También puedes usar una subconsulta para calcular dinámicamente los valores válidos de comparación.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;title&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;rating&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rating&lt;/span&gt; &lt;span style="color:#c678dd"&gt;IN&lt;/span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rating&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;title&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LIKE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;%PET%&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------------------------+--------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;title&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rating&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------------------------+--------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACADEMY&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DINOSAUR&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PG&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ACE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;GOLDFINGER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;G&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WEDDING&lt;/span&gt; &lt;span style="color:#e06c75"&gt;APOLLO&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PG&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WEREWOLF&lt;/span&gt; &lt;span style="color:#e06c75"&gt;LOLA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;G&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WEST&lt;/span&gt; &lt;span style="color:#e06c75"&gt;LION&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;G&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;YOUNG&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LANGUAGE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;G&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------------------------+--------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;372&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La subconsulta obtiene los &lt;code&gt;rating&lt;/code&gt; de películas cuyo título contiene &lt;code&gt;PET&lt;/code&gt;; la consulta externa recupera las películas con esos ratings.&lt;/p&gt;
&lt;h2 id="condiciones-de-coincidencia-con-like"&gt;Condiciones de coincidencia con LIKE&lt;/h2&gt;
&lt;p&gt;Las condiciones de coincidencia permiten buscar patrones de texto en lugar de valores exactos. Con &lt;code&gt;LIKE&lt;/code&gt;, SQL ofrece dos comodines principales:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Comodín&lt;/th&gt;
 &lt;th&gt;Significado&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;_&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Exactamente un carácter&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;%&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Cualquier cantidad de caracteres, incluyendo cero&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Consideremos este patrón: &lt;code&gt;_A_T%S&lt;/code&gt;. Significa: un carácter cualquiera, luego &lt;code&gt;A&lt;/code&gt;, luego un carácter cualquiera, luego &lt;code&gt;T&lt;/code&gt;, luego cualquier secuencia, y finalmente &lt;code&gt;S&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LIKE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;_A_T%S&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-----------+------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-----------+------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MATTHEWS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ERICA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WALTERS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CASSANDRA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WATTS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SHELLY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-----------+------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;3&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;LIKE&lt;/code&gt; es útil para búsquedas simples. Un patrón que inicia con &lt;code&gt;%&lt;/code&gt;, como &lt;code&gt;'%PET%'&lt;/code&gt;, suele ser más costoso porque limita el uso de índices tradicionales.&lt;/p&gt;
&lt;h2 id="expresiones-regulares"&gt;Expresiones regulares&lt;/h2&gt;
&lt;p&gt;Algunos motores permiten filtrar texto con expresiones regulares. En MySQL, por ejemplo, se usa &lt;code&gt;REGEXP&lt;/code&gt;. Otros motores tienen variantes propias, así que siempre valida la sintaxis de tu base de datos.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#e06c75"&gt;REGEXP&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;^[QY]&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;YOUNG&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CYNTHIA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;QUALLS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;STEPHEN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;QUINTANILLA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ROGER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;YANEZ&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;LUIS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;YEE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MARVIN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;QUIGLEY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;TROY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;6&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;16&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;El patrón &lt;code&gt;^[QY]&lt;/code&gt; indica que el apellido debe iniciar con &lt;code&gt;Q&lt;/code&gt; o &lt;code&gt;Y&lt;/code&gt;. Las expresiones regulares son más expresivas que &lt;code&gt;LIKE&lt;/code&gt;, pero menos portables entre motores.&lt;/p&gt;
&lt;h2 id="filtrado-de-valores-null"&gt;Filtrado de valores NULL&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;NULL&lt;/code&gt; es un caso especial en SQL. No representa &lt;code&gt;false&lt;/code&gt;, cero ni una cadena vacía; representa ausencia de valor o valor desconocido. Por esa razón, no debes comparar &lt;code&gt;NULL&lt;/code&gt; con &lt;code&gt;=&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Para consultar valores nulos se usa &lt;code&gt;IS NULL&lt;/code&gt;, y para excluirlos se usa &lt;code&gt;IS NOT NULL&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;return_date&lt;/span&gt; &lt;span style="color:#c678dd"&gt;IS&lt;/span&gt; &lt;span style="color:#c678dd"&gt;NULL&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-----------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-----------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;11496&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;155&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;11541&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;335&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;15867&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;505&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;15875&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;41&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;15894&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;168&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;15966&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;374&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-----------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;183&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;01&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



 
 





 


&lt;div class="notice info"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Info&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;&lt;code&gt;NULL = NULL&lt;/code&gt; no se evalúa como verdadero en SQL estándar. Cuando una comparación involucra &lt;code&gt;NULL&lt;/code&gt;, el resultado puede ser desconocido; por eso &lt;code&gt;IS NULL&lt;/code&gt; y &lt;code&gt;IS NOT NULL&lt;/code&gt; son operadores específicos para este caso.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="cierre"&gt;Cierre&lt;/h2&gt;
&lt;p&gt;La cláusula &lt;code&gt;WHERE&lt;/code&gt; convierte una tabla completa en un conjunto de filas relevante. Dominar igualdad, desigualdad, rangos, pertenencia, patrones y &lt;code&gt;NULL&lt;/code&gt; te permite escribir consultas más precisas y seguras.&lt;/p&gt;
&lt;p&gt;Como regla práctica, diseña filtros explícitos, valida condiciones destructivas con &lt;code&gt;SELECT&lt;/code&gt;, y considera el impacto de funciones, comodines y expresiones regulares sobre los índices. En el siguiente artículo abordaremos &lt;a href="https://blog.dacadev.com/programacion/sql/03-logica-condicional-case"



 


&gt;Lógica condicional con CASE&lt;/a&gt;, una herramienta clave para transformar valores dentro de tus consultas.&lt;/p&gt;</content:encoded></item><item><title>SQL: Fundamentos de SELECT, FROM y WHERE</title><link>https://blog.dacadev.com/programacion/sql/01-fundamentos-sql-select-from-where/</link><pubDate>Fri, 05 Jun 2026 00:00:00 -0500</pubDate><guid>https://blog.dacadev.com/programacion/sql/01-fundamentos-sql-select-from-where/</guid><dc:creator>Dacadev</dc:creator><category>programación</category><description>Aprende SQL desde SELECT, FROM y WHERE: domina cláusulas esenciales, alias, tablas derivadas, vistas y filtros para consultas claras.</description><media:content url="https://blog.dacadev.com/images/programming/sql/fundamentals/banner.png" medium="image" type="image/png"/><content:encoded>
&lt;details class="table-of-content "&gt;
 &lt;summary&gt;
 
 Tabla de Contenido
 
 &lt;/summary&gt;
 &lt;nav id="TableOfContents"&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#qué-es-una-base-de-datos-y-cómo-se-estructura-una-consulta-sql"&gt;Qué es una base de datos y cómo se estructura una consulta SQL&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#select-definir-las-columnas-del-resultado"&gt;&lt;code&gt;SELECT&lt;/code&gt;: definir las columnas del resultado&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#from-declarar-el-origen-de-los-datos"&gt;&lt;code&gt;FROM&lt;/code&gt;: declarar el origen de los datos&lt;/a&gt;
 &lt;ol&gt;
 &lt;li&gt;&lt;a href="#tablas-permanentes"&gt;Tablas permanentes&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#tablas-derivadas"&gt;Tablas derivadas&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#tablas-temporales"&gt;Tablas temporales&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#vistas"&gt;Vistas&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#alias-mejorar-legibilidad-sin-cambiar-el-modelo"&gt;Alias: mejorar legibilidad sin cambiar el modelo&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#where-filtrar-filas-antes-del-resultado-final"&gt;&lt;code&gt;WHERE&lt;/code&gt;: filtrar filas antes del resultado final&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#group-by-y-having-agrupar-datos-y-filtrar-agregados"&gt;&lt;code&gt;GROUP BY&lt;/code&gt; y &lt;code&gt;HAVING&lt;/code&gt;: agrupar datos y filtrar agregados&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#order-by-ordenar-el-resultado-final"&gt;&lt;code&gt;ORDER BY&lt;/code&gt;: ordenar el resultado final&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#cierre"&gt;Cierre&lt;/a&gt;&lt;/li&gt;
 &lt;/ol&gt;
&lt;/nav&gt;
&lt;/details&gt;

&lt;p&gt;Cuando trabajas con una base de datos relacional, la calidad del sistema depende de consultas legibles y precisas. Las &lt;strong&gt;sentencias básicas de SQL&lt;/strong&gt; como &lt;code&gt;SELECT&lt;/code&gt;, &lt;code&gt;FROM&lt;/code&gt; y &lt;code&gt;WHERE&lt;/code&gt; definen qué datos recuperas, desde dónde los tomas y bajo qué condiciones entran al resultado final. Este es el primer artículo de la serie de SQL.&lt;/p&gt;




 
 





 


&lt;div class="notice note"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" width="22" height="22" stroke-width="1.5" stroke="currentColor"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Note&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;En este artículo aprenderás cómo se organiza una consulta SQL, qué rol cumplen &lt;code&gt;SELECT&lt;/code&gt;, &lt;code&gt;FROM&lt;/code&gt;, &lt;code&gt;WHERE&lt;/code&gt;, &lt;code&gt;GROUP BY&lt;/code&gt;, &lt;code&gt;HAVING&lt;/code&gt; y &lt;code&gt;ORDER BY&lt;/code&gt;, y cómo usar alias, tablas derivadas, tablas temporales y vistas para construir consultas más claras.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="qué-es-una-base-de-datos-y-cómo-se-estructura-una-consulta-sql"&gt;Qué es una base de datos y cómo se estructura una consulta SQL&lt;/h2&gt;




 
 





 


&lt;div class="notice info"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Info&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Una &lt;strong&gt;base de datos&lt;/strong&gt; no es más que un conjunto de información relacionada. En SQL trabajamos sobre esa información mediante sentencias que describen qué datos queremos leer, filtrar, agrupar u ordenar.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;SQL permite expresar consultas declarativas: describes el resultado esperado y el motor decide el plan de ejecución, aplica optimizaciones y devuelve un &lt;strong&gt;result set&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Las cláusulas principales de una consulta suelen aparecer en este orden lógico:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Cláusula&lt;/th&gt;
 &lt;th&gt;Propósito&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;select&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Determina qué columnas incluir en el result set de la consulta&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;from&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Identifica las tablas de las que se extraen los datos y cómo se unen&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;where&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Filtra los registros no deseados&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;group by&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Agrupa filas por valores de columna comunes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;having&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Filtra los grupos no deseados&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;order by&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Ordena las filas del resultado final por una o más columnas&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="select-definir-las-columnas-del-resultado"&gt;&lt;code&gt;SELECT&lt;/code&gt;: definir las columnas del resultado&lt;/h2&gt;




 
 





 


&lt;div class="notice tip"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0 1 12 21 8.25 8.25 0 0 1 6.038 7.047 8.287 8.287 0 0 0 9 9.601a8.983 8.983 0 0 1 3.361-6.867 8.21 8.21 0 0 0 3 2.48Z" /&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 0 0 .495-7.468 5.99 5.99 0 0 0-1.925 3.547 5.975 5.975 0 0 1-2.133-1.001A3.75 3.75 0 0 0 12 18Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Tip&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;La cláusula &lt;code&gt;SELECT&lt;/code&gt; determina cuáles columnas, expresiones o valores calculados se incluyen en el resultado de la consulta.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;code&gt;SELECT&lt;/code&gt; es la parte visible de la consulta. Ahí defines columnas, valores constantes, expresiones calculadas o resultados procesados por funciones integradas.&lt;/p&gt;
&lt;p&gt;Consideremos este ejemplo usando &lt;code&gt;language&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;language_id&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;COMMON&amp;#39;&lt;/span&gt; &lt;span style="color:#e06c75"&gt;language_usage&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#e06c75"&gt;language_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;*&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;1415927&lt;/span&gt; &lt;span style="color:#e06c75"&gt;lang_pi_value&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;upper&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;name&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;language_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#c678dd"&gt;language&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+----------------+---------------+---------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;language_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;language_usage&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;lang_pi_value&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;language_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+----------------+---------------+---------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;1&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;COMMON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;1415927&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ENGLISH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;COMMON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;6&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;2831854&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ITALIAN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;COMMON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;9&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;4247781&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JAPANESE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;COMMON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;12&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;5663708&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MANDARIN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; ... &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; ... &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; ... &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; ... &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------+----------------+---------------+---------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;6&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;04&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Este &lt;code&gt;SELECT&lt;/code&gt; combina una columna real, un literal, una expresión aritmética y una función. Cada expresión forma una columna del resultado.&lt;/p&gt;
&lt;p&gt;Reglas prácticas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usa &lt;code&gt;*&lt;/code&gt; solo cuando realmente necesitas todas las columnas.&lt;/li&gt;
&lt;li&gt;Selecciona columnas específicas para reducir ruido y transferencia de datos.&lt;/li&gt;
&lt;li&gt;Usa &lt;code&gt;AS&lt;/code&gt; para alias explícitos en columnas calculadas o renombradas.&lt;/li&gt;
&lt;li&gt;Aplica operaciones, funciones integradas o expresiones cuando aporte claridad.&lt;/li&gt;
&lt;li&gt;Usa &lt;code&gt;DISTINCT&lt;/code&gt; para eliminar duplicados según las columnas seleccionadas.&lt;/li&gt;
&lt;/ul&gt;




 
 





 


&lt;div class="notice warning"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Warning&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Evita usar &lt;code&gt;SELECT *&lt;/code&gt; por defecto en consultas que respaldan APIs, reportes o procesos críticos. Cuando el esquema cambia, el resultado también cambia, y eso puede romper consumidores que esperan columnas específicas.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="from-declarar-el-origen-de-los-datos"&gt;&lt;code&gt;FROM&lt;/code&gt;: declarar el origen de los datos&lt;/h2&gt;




 
 





 


&lt;div class="notice tip"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0 1 12 21 8.25 8.25 0 0 1 6.038 7.047 8.287 8.287 0 0 0 9 9.601a8.983 8.983 0 0 1 3.361-6.867 8.21 8.21 0 0 0 3 2.48Z" /&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 0 0 .495-7.468 5.99 5.99 0 0 0-1.925 3.547 5.975 5.975 0 0 1-2.133-1.001A3.75 3.75 0 0 0 12 18Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Tip&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;La cláusula &lt;code&gt;FROM&lt;/code&gt; define las tablas usadas por la consulta y también la forma en que esas tablas se relacionan entre sí.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;code&gt;FROM&lt;/code&gt; indica de dónde salen las filas. Puede apuntar a tablas permanentes, derivadas, temporales o vistas.&lt;/p&gt;
&lt;h3 id="tablas-permanentes"&gt;Tablas permanentes&lt;/h3&gt;
&lt;p&gt;Las &lt;strong&gt;tablas permanentes&lt;/strong&gt; son creadas con &lt;code&gt;CREATE TABLE&lt;/code&gt;: datos persistentes, definidos en el esquema y disponibles entre sesiones.&lt;/p&gt;
&lt;p&gt;Ejemplo mínimo:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;language_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#c678dd"&gt;language&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="tablas-derivadas"&gt;Tablas derivadas&lt;/h3&gt;
&lt;p&gt;Una &lt;strong&gt;tabla derivada&lt;/strong&gt; es una subconsulta usada dentro de &lt;code&gt;FROM&lt;/code&gt;. Vive solo durante la ejecución y permite aislar una etapa intermedia.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;concat&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;cust&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;, &lt;span style="color:#98c379"&gt;&amp;#39;, &amp;#39;&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;cust&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;full_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; (&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;email&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;JESSIE&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; ) &lt;span style="color:#e06c75"&gt;cust&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;full_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BANKS&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;JESSIE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MILAM&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;JESSIE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;---------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;2&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La subconsulta filtra clientes llamados &lt;code&gt;JESSIE&lt;/code&gt;. La consulta externa usa ese conjunto como &lt;code&gt;cust&lt;/code&gt; y construye &lt;code&gt;full_name&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="tablas-temporales"&gt;Tablas temporales&lt;/h3&gt;
&lt;p&gt;Las &lt;strong&gt;tablas temporales&lt;/strong&gt; materializan datos intermedios durante una sesión, transacción o proceso puntual.&lt;/p&gt;




 
 





 


&lt;div class="notice info"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Info&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Las tablas temporales se comportan como tablas normales, pero los datos insertados desaparecen en algún momento, usualmente al cerrar la sesión de base de datos o finalizar la transacción, según el motor utilizado.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;CREATE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;TEMPORARY&lt;/span&gt; &lt;span style="color:#c678dd"&gt;TABLE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actors_j&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;smallint&lt;/span&gt;(&lt;span style="color:#d19a66"&gt;5&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;varchar&lt;/span&gt;(&lt;span style="color:#d19a66"&gt;45&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;varchar&lt;/span&gt;(&lt;span style="color:#d19a66"&gt;45&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;Query&lt;/span&gt; &lt;span style="color:#e06c75"&gt;OK&lt;/span&gt;, &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#e06c75"&gt;affected&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INSERT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INTO&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actors_j&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#c678dd"&gt;LIKE&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;J%&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;Query&lt;/span&gt; &lt;span style="color:#e06c75"&gt;OK&lt;/span&gt;, &lt;span style="color:#d19a66"&gt;7&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#e06c75"&gt;affected&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;03&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;Records&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;7&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Duplicates&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#e06c75"&gt;Warnings&lt;/span&gt;: &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;*&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actors_j&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------+------------+-----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;actor_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------+------------+-----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;119&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WARREN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JACKMAN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;131&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JANE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JACKMAN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;8&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MATTHEW&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JOHANSSON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;64&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;RAY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JOHANSSON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; ... &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; ... &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; ... &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;----------+------------+-----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;7&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Este patrón es práctico cuando un proceso reutiliza un subconjunto de datos varias veces. Conviene medir su impacto porque materializar datos tiene costo.&lt;/p&gt;
&lt;h3 id="vistas"&gt;Vistas&lt;/h3&gt;
&lt;p&gt;Una &lt;strong&gt;vista&lt;/strong&gt; es una tabla virtual creada con &lt;code&gt;CREATE VIEW&lt;/code&gt;. Normalmente encapsula una consulta y la expone como fuente reutilizable.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;CREATE&lt;/span&gt; &lt;span style="color:#c678dd"&gt;VIEW&lt;/span&gt; &lt;span style="color:#e06c75"&gt;cust_vw&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;active&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;Query&lt;/span&gt; &lt;span style="color:#e06c75"&gt;OK&lt;/span&gt;, &lt;span style="color:#d19a66"&gt;0&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#e06c75"&gt;affected&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;12&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;cust_vw&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;active&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#d19a66"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SANDRA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MARTIN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JUDITH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;COX&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SHEILA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WELLS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ERICA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;MATTHEWS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;HEIDI&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;LARSON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; ... &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; ... &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;TERRANCE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ROUSH&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;15&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Las vistas encapsulan lógica compartida y pueden exponer solo ciertas columnas a consumidores internos.&lt;/p&gt;
&lt;h2 id="alias-mejorar-legibilidad-sin-cambiar-el-modelo"&gt;Alias: mejorar legibilidad sin cambiar el modelo&lt;/h2&gt;
&lt;p&gt;Los &lt;strong&gt;alias&lt;/strong&gt; permiten referenciar tablas y columnas con nombres más cortos. Esto evita redundancia y mejora la lectura, especialmente cuando hay joins o nombres de tabla largos.&lt;/p&gt;
&lt;p&gt;Observemos este ejemplo:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;time&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;rental_time&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;date&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;2005-06-14&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En este caso, &lt;code&gt;customer&lt;/code&gt; se referencia como &lt;code&gt;c&lt;/code&gt; y &lt;code&gt;rental&lt;/code&gt; como &lt;code&gt;r&lt;/code&gt;. La consulta queda compacta y cada columna mantiene un origen explícito.&lt;/p&gt;
&lt;h2 id="where-filtrar-filas-antes-del-resultado-final"&gt;&lt;code&gt;WHERE&lt;/code&gt;: filtrar filas antes del resultado final&lt;/h2&gt;




 
 





 


&lt;div class="notice tip"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0 1 12 21 8.25 8.25 0 0 1 6.038 7.047 8.287 8.287 0 0 0 9 9.601a8.983 8.983 0 0 1 3.361-6.867 8.21 8.21 0 0 0 3 2.48Z" /&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 0 0 .495-7.468 5.99 5.99 0 0 0-1.925 3.547 5.975 5.975 0 0 1-2.133-1.001A3.75 3.75 0 0 0 12 18Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Tip&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;La cláusula &lt;code&gt;WHERE&lt;/code&gt; es el mecanismo para excluir filas no deseadas del result set.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;code&gt;WHERE&lt;/code&gt; concentra buena parte de la lógica de una consulta. Ahí combinas operadores, comparaciones, funciones y paréntesis para expresar condiciones precisas.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#e06c75"&gt;title&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;rating&lt;/span&gt;, &lt;span style="color:#e06c75"&gt;rental_duration&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;film&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;rating&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;G&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental_duration&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#d19a66"&gt;7&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;OR&lt;/span&gt; (&lt;span style="color:#e06c75"&gt;rating&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;PG-13&amp;#39;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;AND&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental_duration&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#d19a66"&gt;4&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------------------+--------+-----------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;title&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rating&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental_duration&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------------------+--------+-----------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ALABAMA&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DEVIL&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PG&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BACKLASH&lt;/span&gt; &lt;span style="color:#e06c75"&gt;UNDEFEATED&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PG&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BILKO&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ANONYMOUS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PG&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BLANKET&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BEVERLY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;G&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;7&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BORROWERS&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BEDAZZLED&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;G&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;7&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;BRIDE&lt;/span&gt; &lt;span style="color:#e06c75"&gt;INTRIGUE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;G&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;7&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CASPER&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DRAGONFLY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PG&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; ... &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; ... &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; ... &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WAR&lt;/span&gt; &lt;span style="color:#e06c75"&gt;NOTTING&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;G&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;7&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;WORLD&lt;/span&gt; &lt;span style="color:#e06c75"&gt;LEATHERNECKS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PG&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;-&lt;/span&gt;&lt;span style="color:#d19a66"&gt;13&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;3&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;-------------------------+--------+-----------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;68&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;00&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La condición usa dos grupos lógicos. Los paréntesis hacen explícita la intención y reducen ambigüedad cuando se combinan &lt;code&gt;AND&lt;/code&gt; y &lt;code&gt;OR&lt;/code&gt;.&lt;/p&gt;




 
 





 


&lt;div class="notice warning"&gt;
 &lt;div class="notice-head"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="22" height="22"&gt;
 &lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z" /&gt;
 &lt;/svg&gt;
 &lt;p&gt;Warning&lt;/p&gt;
 
 &lt;/div&gt;
 &lt;div class="notice-body"&gt;&lt;p&gt;Cuando mezclas &lt;code&gt;AND&lt;/code&gt; y &lt;code&gt;OR&lt;/code&gt;, usa paréntesis aunque el motor tenga reglas de precedencia. La consulta queda más legible y disminuye el riesgo de devolver más filas de las esperadas.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="group-by-y-having-agrupar-datos-y-filtrar-agregados"&gt;&lt;code&gt;GROUP BY&lt;/code&gt; y &lt;code&gt;HAVING&lt;/code&gt;: agrupar datos y filtrar agregados&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;GROUP BY&lt;/code&gt; agrupa filas por valores comunes de una o más columnas y permite aplicar agregados como &lt;code&gt;count&lt;/code&gt;, &lt;code&gt;sum&lt;/code&gt;, &lt;code&gt;avg&lt;/code&gt;, &lt;code&gt;min&lt;/code&gt; o &lt;code&gt;max&lt;/code&gt;. &lt;code&gt;HAVING&lt;/code&gt; opera después de la agrupación: filtra grupos, no filas individuales.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;GROUP&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BY&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;HAVING&lt;/span&gt; &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;&amp;gt;=&lt;/span&gt; &lt;span style="color:#d19a66"&gt;40&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#c678dd"&gt;count&lt;/span&gt;(&lt;span style="color:#56b6c2"&gt;*&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;TAMMY&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SANDERS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;41&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CLARA&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SHAW&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;42&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;ELEANOR&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;HUNT&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;46&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;SUE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;PETERS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;40&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; ... &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; ... &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; ... &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+----------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;7&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;03&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Aquí agrupamos rentas por cliente y dejamos solo clientes con &lt;code&gt;40&lt;/code&gt; o más rentas. &lt;code&gt;WHERE count(*) &amp;gt;= 40&lt;/code&gt; no aplica porque &lt;code&gt;WHERE&lt;/code&gt; se evalúa antes de calcular agregados.&lt;/p&gt;
&lt;h2 id="order-by-ordenar-el-resultado-final"&gt;&lt;code&gt;ORDER BY&lt;/code&gt;: ordenar el resultado final&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ORDER BY&lt;/code&gt; define el orden de las filas devueltas. Sin esta cláusula, no debes asumir un orden estable.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;mysql&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;SELECT&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt;, &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#e06c75"&gt;time&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;) &lt;span style="color:#e06c75"&gt;rental_time&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;FROM&lt;/span&gt; &lt;span style="color:#e06c75"&gt;customer&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;INNER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;JOIN&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ON&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;customer_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;WHERE&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;date&lt;/span&gt;(&lt;span style="color:#e06c75"&gt;r&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;rental_date&lt;/span&gt;) &lt;span style="color:#56b6c2"&gt;=&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#39;2005-06-14&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#56b6c2"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#c678dd"&gt;ORDER&lt;/span&gt; &lt;span style="color:#c678dd"&gt;BY&lt;/span&gt; &lt;span style="color:#c678dd"&gt;c&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;first_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;last_name&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;rental_time&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DANIEL&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CABRAL&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;23&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;09&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;38&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CATHERINE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;CAMPBELL&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;23&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;17&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;03&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;HERMAN&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DEVORE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;23&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;35&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;09&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;AMBER&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;DIXON&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;23&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;42&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;56&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;JOYCE&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#e06c75"&gt;EDWARDS&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; &lt;span style="color:#d19a66"&gt;23&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;16&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;26&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; ... &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; ... &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt; ... &lt;span style="color:#56b6c2"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;+&lt;/span&gt;&lt;span style="color:#7f848e"&gt;------------+-----------+-------------+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d19a66"&gt;16&lt;/span&gt; &lt;span style="color:#c678dd"&gt;rows&lt;/span&gt; &lt;span style="color:#c678dd"&gt;in&lt;/span&gt; &lt;span style="color:#c678dd"&gt;set&lt;/span&gt; (&lt;span style="color:#d19a66"&gt;0&lt;/span&gt;.&lt;span style="color:#d19a66"&gt;01&lt;/span&gt; &lt;span style="color:#e06c75"&gt;sec&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En este caso, el resultado queda ordenado por &lt;code&gt;last_name&lt;/code&gt;. También puedes ordenar por múltiples columnas y controlar la dirección con &lt;code&gt;ASC&lt;/code&gt; o &lt;code&gt;DESC&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="cierre"&gt;Cierre&lt;/h2&gt;
&lt;p&gt;Las cláusulas básicas de SQL forman una cadena clara: &lt;code&gt;SELECT&lt;/code&gt; define qué mostrar, &lt;code&gt;FROM&lt;/code&gt; de dónde leer, &lt;code&gt;WHERE&lt;/code&gt; filtra filas, &lt;code&gt;GROUP BY&lt;/code&gt; agrupa, &lt;code&gt;HAVING&lt;/code&gt; filtra grupos y &lt;code&gt;ORDER BY&lt;/code&gt; estabiliza el orden final.&lt;/p&gt;
&lt;p&gt;En el siguiente artículo de la serie profundizaremos en &lt;a href="https://blog.dacadev.com/programacion/sql/02-filtrado-datos-clausula-where"



 


&gt;&lt;strong&gt;Filtrado de datos con la cláusula WHERE&lt;/strong&gt;&lt;/a&gt;, donde analizaremos operadores, rangos, patrones, valores nulos y composición de condiciones con más detalle.&lt;/p&gt;</content:encoded></item></channel></rss>