Una de las funciones más potentes de SQL es la operación JOIN, la cual proporciona un medio elegante y sencillo de combinar con cada una de las filas de una tabla y con cada fila de otra tabla. Sin embargo, hay ocasiones en la que es posible que queramos encontrar valores de una tabla que NO están presentes en otra tabla. Como veremos en el artículo del blog de hoy, las “joins” también pueden ser utilizadas para este propósito, incluyendo un predicado sobre el cual se unen las tablas. Conocidas como antijoins, estas pueden ser útiles para responder una variedad de preguntas relacionadas con los negocios, como:
- ¿Qué clientes no hicieron un pedido?
- ¿A qué empleados no se les ha asignado un departamento?
- ¿Qué vendedores no cerraron un contrato de venta esta semana?
Este blog ofrecerá una introducción a los tipos existentes de “antijoins” y cómo escribirlos utilizando algunos ejemplos basados en la base de datos PostgreSQL dvdrental database. Escribiremos y ejecutaremos las consultas en Navicat Premium Lite 17.
La mayoría de los desarrolladores y administradores de bases de datos están familiarizados con los tipos estándar de JOIN: interna, externa, izquierda y derecha. Si bien estos se pueden escribir utilizando ANSI SQL, existen otros tipos de “joins” que se basan en operadores de álgebra relacional que no tienen una representación de sintaxis en SQL. Hoy veremos uno de estos tipos: “Semi Join”. La semana que viene abordaremos la unión “Anti Join”. Para comprender mejor cómo funcionan estos tipos de uniones, ejecutaremos algunas consultas SELECT en Navicat Premium Lite 17 contra la base de datos PostgreSQL dvdrental database. Esta es una base de datos gratuita que se basa en la base de datos de muestra MySQL Sakila.
Si ha estado escribiendo consultas SQL durante algún tiempo, probablemente esté bastante familiarizado con la cláusula WHERE. Si bien no tiene ningún efecto sobre los campos agregados, existe una forma de filtrar registros según los valores agregados, y es mediante la cláusula HAVING. En este blog se le explicará cómo funciona y le brindará algunos ejemplos sobre su uso en consultas SELECT.
El operador EXISTS de SQL nos ofrece una manera sencilla de recuperar datos en función de la existencia (o no existencia) de otros datos. Más específicamente, es un operador lógico que evalúa los resultados de una subconsulta y devuelve un valor booleano que indica si se devolvieron filas o no. Si bien el operador IN se puede utilizar para el mismo propósito, existen algunas diferencias que se deben tener en cuenta. El blog de hoy cubrirá cómo usar el operador EXISTS mediante algunos ejemplos y también brindará algunas pautas sobre cuándo usar EXISTS en lugar de IN.
A mediados de los noventa, Sun Microsystems presentó un lenguaje que se podía "escribir una vez y ejecutar en todas partes". Ese lenguaje era, por supuesto, Java. Y, aunque llegó a ser uno de los lenguajes de programación más populares hasta el día de hoy, su eslogan resultó ser un poco optimista. El curso del lenguaje Java tiene algunas similitudes importantes con el de SQL. También se puede trasladar de una base de datos a otra, o incluso a través de sistemas operativos, con poca o ninguna modificación. Al menos, ese es el sueño. En el mundo real, el código de nivel de producción tiende a requerir algunos ajustes para funcionar en un nuevo entorno. Este blog describirá algunas de las razones por las que la sintaxis SQL puede diferir entre los distintos proveedores de bases de datos.