Contactos

Interse los ejemplos de SQL. Operador para intersectar conjuntos de datos. Un ejemplo con una expresión

SQL proporciona dos formas de combinar tablas:
  • especificando las tablas conectadas (incluidas las subconsultas) en la frase de la instrucción SELECT. Primero, se realiza la conexión de las tablas, y solo las condiciones especificadas por la frase del grupo por agregación, el ordenamiento de los datos, etc., se utilizan en el conjunto resultante.
  • definición de la integración de los conjuntos resultantes obtenidos durante el procesamiento de la declaración SELECT. En este caso, los dos operadores seleccionados están conectados por la frase Unión, Intersecarse., Excepto o correspondiente.

Unión sindical

Frase Unión Combina los resultados de dos solicitudes en las siguientes reglas:

El estándar no impone ninguna restricción en las filas de transmisión en el conjunto resultante. Por lo tanto, algunos DBMS muestran primero el resultado de la primera solicitud, y luego el resultado de la segunda consulta. El DBMS Oracle clasifica automáticamente los registros en la primera columna especificada, incluso si el índice no se crea para ello.

Para especificar explícitamente el orden de clasificación deseado, se debe utilizar el pedido por frase. En este caso, puede usar tanto el nombre de la columna como su número (Fig. 4.3).


Higo. 4.3.

Frase Unión Todos realizan la unión de dos subconsultas de la misma manera que la frase de la Unión con las siguientes excepciones:

  • las líneas coincididas no se eliminan del conjunto resultante resultante;
  • las consultas combinadas se muestran en el conjunto resultante secuencialmente sin ordenar.

Al combinar más de dos solicitudes para cambiar el orden de la operación de combinación, puede usar los soportes (Fig. 4.4).


Higo. 4.4.

Intersect-Association

Frase Intersecarse. Le permite seleccionar solo las líneas que están presentes en cada conjunto resultante de United. En la Fig. 4.5 Se proporciona un ejemplo de las solicitudes de combinación de los conjuntos de intersección.


Higo. 4.5.

Excepto union

Frase Excepto Le permite seleccionar solo las líneas que están presentes en el primer conjunto de resultantes combinadas, pero están ausentes en el segundo conjunto de resultados.

Frases Intersecarse. y Excepto Debe ser apoyado solo con el nivel de cumplimiento total del estándar SQL-92. Entonces, algunos DBMS en lugar de la frase

Solo hay una regla importante de usar la instrucción, excepto que necesita recordar.

El pedido, la cantidad y los tipos de columnas de datos deben ser del mismo tipo en todas las solicitudes.

De acuerdo con la norma ANSI, los operadores con unión y excepto los conjuntos tienen la misma prioridad, pero la declaración de intersección se realiza antes que otros operadores para los conjuntos. Recomendamos explícitamente para administrar la prioridad de los operadores que usan paréntesis. Esto es generalmente muy buena práctica.

Según la norma ANSI, solo se puede utilizar un pedido por oferta. Insértelo a la más fácil de la última instrucción de selección. Para evitar la ambigüedad en la especificación de columnas y tablas, asegúrese de asignar el mismo alias a todos los correspondientes a cada otra columna de las tablas. Por ejemplo:

Seleccione AU_LNAME como "apellido", AU_FNAME como "FIRSTNAME" de los autores, excepto seleccione EMP_LNAME como "Apellido", EMP_FNAME como "FirstName" de la orden de los empleados por el último nombre, Nombre;

Además, dado que en cada lista de columnas, las columnas se pueden indicar con tipos de datos respectivamente compatibles, pueden aparecer varias opciones para trabajar con columnas de diferentes longitudes en diferentes plataformas de Surbd. Por ejemplo, si la columna AU_LNAME de la primera solicitud en el ejemplo anterior es mucho más largo que la columna EMP_LNAME de la segunda solicitud, las diferentes plataformas pueden aplicar diferentes reglas para determinar la longitud del resultado final. Pero, en general, las plataformas elegirán el resultado de un tamaño más largo (y menos limitado).

Cada circa puede aplicar sus propias reglas para usar el nombre de la columna si los nombres en las listas de las columnas difieren. En el caso general, se utilizan los nombres de las primeras columnas de solicitud.

Los tipos de datos no deben ser idénticos, pero deben ser compatibles. Por ejemplo, los tipos de char y varchar son compatibles. De forma predeterminada, el conjunto resultante en cada columna se utilizará el tamaño correspondiente al tipo más grande en cada posición específica. Por ejemplo, una solicitud que extrae los datos de las columnas que contienen valores de tipo VARCHAR (IO) y VARCHAR (15) usarán el tipo y tamaño de VarChar (15).

Ninguna de las plataformas apoya la oferta correspondiente), excepto

(Seleccione STATEMENR.2 | VALORES (expresionl, Expression2 [, ...])) Excepto

Le permite especificar una o más columnas definidas manualmente, que se incluyen en el conjunto de resultados finales. (Esto se llama el diseñador de filas). En el valor de los valores, debe haber exactamente tantas columnas, ya que se especifican en las consultas de los operadores. Aunque no se admite la instrucción distinta, el equivalente funcional es excepto. La oferta correspondiente no es compatible. Además, la larga variedad, larga variedad, la bloba, la clavícula, el DBCLOB, DATALINK, DATALINK y los tipos estructurales no se utilizan en la oferta, pero se pueden usar en excepto todos.

Si el conjunto de datos resultante es una columna que tiene el mismo nombre en todas las instrucciones Seleccionar, este nombre se usa como un nombre final para la columna devuelta por la instrucción. Si esta columna se llama de manera diferente en diferentes instrucciones de selección, debe cambiar el nombre de la columna en todas las solicitudes utilizando el mismo seudónimo en todos ellos.

Si se utilizan varios operadores en una consulta para trabajar con conjuntos de datos, se realiza el primero que se incluye entre paréntesis. Después de eso, el orden de ejecución se dejará a la derecha. Sin embargo, todas las declaraciones de intersección se realizan antes de la unión y excepto los operadores. Por ejemplo:

Seleccione Empno del empleado donde se trabaja "E%", excepto seleccionar Empno de EMP_ACT donde ProjNO IN (TF1000 ", TF2000", -AD3110 ")) Los valores de la Unión (" AA0001 "), (" AB0002 "), (" AC0003 ")

En el ejemplo anterior de la tabla de empleados, identificadores (ID) de todos los empleados que operan en el departamento, cuyo nombre comienza con "E", luego el ID de los que participa en los proyectos IF1000, IF200 y AD3110 están excluidos de EMP_ACT Tabla de cuenta. Y Finalmente, se agregan tres ID adicionales - AA0001, AB0002 y AC0003 utilizando el operador de los conjuntos de la Unión.

Mysql

En MySQL, excepto la declaración no es compatible. Alternativamente, puede utilizar no en las operaciones o no existe.

El operador de intersección extrae líneas idénticas de los conjuntos resultantes de una o más solicitudes. En algunos aspectos, la declaración de intersección está muy recordada por unirse interno.

El intersecto se refiere a la clase de clase para trabajar con conjuntos de datos (conjunto de operador). Otros tales operadores incluyen excepto y sindicato. Todos los operadores para conjuntos de datos se utilizan para manipular simultáneamente los conjuntos resultantes de dos o más solicitudes, desde aquí y su nombre.

SINTAXA SQL2003

Las restricciones técnicas sobre el número de solicitudes en la declaración de intersect no existen. La sintaxis general es la siguiente.

Intersecarse.

] Intersect.

Indicio

Se incluyen líneas duplicadas de todos los conjuntos de resultados.

Distinto.

Las cadenas duplicadas se eliminan de todos los conjuntos resultantes antes de comparar el operador de intersect. Las columnas con valores vacíos (nulos) se consideran duplicados. Si no se indica ni la palabra clave ni la distinta, entonces el valor predeterminado es distinto.

Correspondiente

Se indica que solo se devolverán las columnas que tienen un nombre en ambas solicitudes, incluso si el símbolo (*) se usa en ambas solicitudes.

Se indica que solo se devolverán estas columnas, incluso si las solicitudes detectan otras columnas con los nombres correspondientes. Esta propuesta debe usarse con la palabra clave correspondiente.

Reglas generales

Solo hay una regla importante que desea recordar cuando se trabaja con el operador de intersect.

El orden y el número de columnas en todas las solicitudes deben ser igualmente. Los tipos de datos de las columnas correspondientes también deben ser compatibles.

Por ejemplo, los tipos de char y varchar son compatibles. De forma predeterminada, el conjunto resultante en cada columna se utilizará el tamaño correspondiente al tipo más grande en cada posición específica.

Ninguna de las plataformas apoya la oferta correspondiente.

De acuerdo con el estándar ANSI, la declaración de intersección tiene una prioridad más alta en comparación con otros operadores para trabajar con conjuntos, aunque en diferentes plataformas, la prioridad de tales operadores se procesa de manera diferente. Puede gestionar explícitamente la prioridad de los operadores que utilizan paréntesis. De lo contrario, los DBMS pueden realizarlos en orden de izquierda a derecha o desde la primera hasta la última.

Según la norma ANSI, solo se puede utilizar un pedido por oferta. Insértelo a la más fácil de la última instrucción de selección. Para evitar la ambigüedad en la especificación de columnas y tablas, asegúrese de asignar el mismo alias a todos los correspondientes a cada otra columna de las tablas. Por ejemplo:

En las plataformas que no admiten la declaración de intersección, puede reemplazarlo con una subcadera completa.

Seleccione A.AU_LNAME como "apellido", a.au_fname como "FirstName" de los autores como un INTERSECT SELECT E.EMP_LNAME como "apellido", e.emp_fname como "Nombre" de los empleados como Orden electrónico por el último nombre, Nombre;

Dado que los tipos de datos de columna en diferentes solicitudes en el operador de intersect pueden ser compatibles, pueden aparecer varias opciones para trabajar con columnas de diferentes longitudes en diferentes plataformas de Surbd. Por ejemplo, si la columna AUJNAME de la primera solicitud en el ejemplo anterior es mucho más largo que la columna EmpujName desde la segunda consulta, entonces diferentes plataformas pueden aplicar diferentes reglas para determinar el resultado final. Pero, en general, las plataformas elegirán el resultado de un tamaño más largo (y menos limitado).

Cada circa puede aplicar sus propias reglas para usar el nombre de la columna si los nombres en las listas de las columnas difieren. Los nombres de las primeras columnas de solicitud se usan generalmente.

DB2.

La plataforma DB2 admite las palabras clave intersectas e intersecta estándar ALSI más un valor adicional de los valores.

(Instruction._select_7 | valores (expresando7 [, ...])) intersect

] (instruction_scj_2 | valores (expresando 2 [, ...])) intersect

Aunque no se admite la declaración distinta, el equivalente funcional está intersect. La oferta correspondiente no es compatible.

Además, en la oferta de intersección no se usan en la oferta de intersección, no se usan en la oferta de intersección, pero puede usar todos los tipos de datos, dbclob, datakink y estructural.

Si el conjunto de datos resultante es una columna que tiene el mismo nombre en todas las instrucciones Seleccionar, este nombre se usa como un nombre final para la columna devuelta por la instrucción. Si se utilizan diferentes nombres en las consultas para la columna, la plataforma DB2 generará un nuevo nombre para la columna resultante. Después de eso, se vuelve inadecuado para su uso en orden y para las ofertas de actualización.

Si se utilizan varios operadores en una consulta para trabajar con conjuntos de datos, se realiza el primero que se incluye entre paréntesis. Después de eso, el orden de ejecución se dejará a la derecha. Sin embargo, todas las declaraciones intersectan se realizan a la Unión y excepto las declaraciones, por ejemplo:

Seleccione Empno de Empleado, donde se trata de un "% E%" se intersecta (seleccione Empno de EMP_ACT donde ProjNO en ("IF1000", "IF2000", "AD3110") Valores de la Unión ("AA0001"), ("AB0002"), ("AB0002") "Ac0003")))

En el ejemplo anterior, los identificadores (ID) de todos los empleados que operan en el departamento, cuyo nombre comienza con "E" se recupera de la tabla del empleado. Sin embargo, los identificadores se recuperan solo si también existen en la tabla de cuentas de empleados con el nombre Emp_act y participan en los proyectos IF1000, IF200 y AD3110.

En este tutorial, aprenderás a usar. excepto operador en SQL Server (Transact-SQL) con sintaxis y ejemplos.

Descripción

Excepto el operador de SQL Server (Transact-SQL) se utiliza para devolver todas las filas en la primera instrucción SELECT, que no se devuelve en la segunda declaración de selección. Cada declaración de selección definirá un conjunto de datos. El Operador, excepto, extraerá todos los registros del primer conjunto de datos y luego eliminará todos los registros del segundo conjunto de datos desde los resultados.

Excepto solicitud

Explicación: Excepto la solicitud devolverá la grabación en un área sombreada gris. Estos son los registros que existen en Select 1, y no en Select 2.
Cada instrucción SELECT en una consulta, excepto la consulta, debe tener el mismo número de campos en los conjuntos de resultados con tipos de datos similares.

Sintaxis

Excepto la sintaxis del operador en SQL Server (Transact-SQL):

Parámetros o argumentos

expresiones: columnas o cálculos que desea comparar entre dos operadores seleccionados. No deben ser los mismos campos en cada una de las declaraciones selectas, pero las columnas correspondientes deben estar con tipos de datos similares.
tablas - Tablas de las que desea recibir registros. Debe haber al menos una tabla enumerada en la oración.
Donde las condiciones - opcionales. Condiciones que deben completarse para las entradas seleccionadas.

Nota

  • En ambos operadores seleccionados, debe haber el mismo número de expresiones.
  • Las columnas correspondientes en cada una de las sentencias de selección deben tener tipos de datos similares.
  • Excepto que el operador devuelve todos los registros de la primera inscripción de selección que no está incluida en la segunda declaración de selección.
  • Excepto el operador en SQL Server es equivalente al operador menos en Oracle.

Un ejemplo con una expresión

Consideremos un ejemplo de un operador excepto en SQL Server (Transact-SQL), que devuelve un campo con el mismo tipo de datos.
Por ejemplo:

TRANSACT-SQL.

Seleccione Product_ID de los productos, excepto seleccione Product_ID del inventario;

Seleccione Product_ID.

De productos.

Seleccione Product_ID.

Del inventario;

Este ejemplo de un operador, excepto, devuelve todos los valores de Product_ID que están en la tabla de productos, y no en la tabla de inventario. Esto significa que si el valor Product_ID existe en la tabla de productos y también existe en la tabla de inventario, el valor Product_ID no se mostrará en los resultados de la consulta excepto.

Ejemplo con múltiples expresiones.

Luego, consideremos un ejemplo de una consulta excepto en SQL Server (Transact-SQL), lo que devuelve más de una columna.
Por ejemplo:

TRANSACT-SQL.

En este ejemplo, la solicitud, excepto la solicitud, devuelve los registros en la tabla de contactos con el nombre Contact_ID, Last_Name y First_Name, que no coincide con el valor del empleado, last_name y First_Name en la tabla de los empleadores.



¿Te gustó el artículo? Compártelo