MySQL unidad 4

Page 1

FUNDACIÓN UNIVERSITARIA DEL ÁREA ANDINA CENTRO DE EDUCACIÓN A DISTANCIA PROGRAMA TÉCNICO PROFESIONAL EN SISTEMAS ASIGNATURA: IMPLEMENTACIÓN DE AMBIENTES WEB BASES DE DATOS CON MySQL UNIDAD 4: COMBINACIONES DE TABLAS ELEMENTOS AVANZADOS DE SQL. Son muchas las opciones avanzadas que ofrece SQL, en esta sección nos centramos un poco en los diferentes operadores para realizar comparaciones entre valores de datos. Los operadores empleados a MySQLson los siguientes: Operador de comparación Igual (=)

Ejemplo explicativo x=y

No igual (!= , <>)

x!= y , x <> y

Mayor (>) Menor (<) Mayor o igual que (>=)

x >y x <y x >= y

Menor o igual que (<=)

x <= y

Igualdad incluyendo NULL(<=>)

x <=> y

Es nulo (IS NULL) No es nulo (IS NOT NULL)

x IS NULL x IS NOT NULL y

Entre (BETWEEN)

a BETWEENx and y

No entre (NOT BETWEEN) Como (LIKE)

aNOT BETWEENx and y x LIKE y

No es como (NOT LIKE)

x NOT LIKE y

En (IN)

xIN( a, b, c,…)

No en (NOT IN)

X NOT IN

REGEXP, RLIKE

x REGEXP y x RLIKE y x NOT REGEXP y x NOT RLIKE y

NOT REGEXP, NOT RLIKE

Significado o valor de la expresión Verdadero si los valores de x, y son iguales, no aplicable a valores nulos Verdadero si los valores de x, y no son iguales, no aplicable a valores nulos Verdadero si el valor x es mayor que y Verdadero si el valor x es menor que y Verdadero si el valor x es mayor o igual que y Verdadero si el valor x es menor o igual que y Verdadero si los valores de x, y son iguales, aplicable a valores nulos Verdadero si x contiene un valor nulo Verdadero si x no contiene un valor nulo Verdadero si el valor a está entre x e y (incluyendo ambos) Verdadero si el valor a no está entre x e y (incluyendo ambos) Verdadero si x es equivalente a y en una correspondencia de patron Verdadero si x no es equivalente a y en una correspondencia de patron Verdadero si x es uno de los elementos del conjunto ( a, b, c,…) Verdadero si x no es uno de los elementos del conjunto ( a, b, c,…) Verdadero si x es equivalente a y con una expresión regular Verdadero si x no es equivalente a y con una expresión regular


Es de anotar que el valor verdadero corresponde a 1 (uno) mientras que el falso a 0 (cero).Si en una sentencia de comparación incluye valores de tipos diferentes, MySQL realiza una conversión de tipos. Combinaciones avanzadas. A continuación presentamos ejemplos de combinaciones avanzadas para su análisis.

Dado que la relación entre las tablas vendedor y ventas es a través de la identificación del vendedor (campos “id_vendedor” o “vndor”), son estos los campos que forman la condición de combinación. Para combinar tres tablas se requiere una variación, por ejemplo, para ver nombres y apellidos de vendedor y cliente y el valor de la venta asociada, se puede realizar mediante la siguiente consulta.

El campo “id_vendedor”de la tabla “vendedor”, corresponde al campo “vndor” de la tabla “ventas” y el campo “id_cliente” de la tabla “cliente”, corresponde con el campo “cliente” de la tabla“ventas”.Al no haber otras condiciones, la ejecución de la consulta


da como resultado todas las ventas para las que haya filas correspondientes en las tablas“vendedor” y “clientes”. Los siguientes ejemplos de consultas que dan idénticos resultados.


Combinaciones por la izquierda: La siguiente consulta ilustra el registro de una venta en la que por alguna circunstancia no se dispone de la totalidad de los datos del cliente, en este caso se puede registrar con NULL los valores desconocidos y agregarlos posteriormente.

Al realizar la consulta que anteriormente nos daba información de vendedores y clientes para cada venta, se obtiene el siguiente resultado.

Aquí no se muestra la nueva venta debido a que elcliente es NULLen la tabla “ventas”, no dándose cumplimiento de la condición de selección. (recordemos el operador de igualdad utilizado en la consulta no considera valores nulos). Si intentásemos utilizar el operador <=>

tampoco tendríamos ayuda porque la tabla cliente no incluye valores nulos. En este caso se puede realizar una combinación externa, la cual muestra un resultado para cada registro coincidente de una tabla sin importar hay registros asociados en otra tabla. Vemos entonces que aunque en la tabla ventas el campo cliente es NULL y no haya relación con la tabla clientes, se obtendrá un registro como resultado de la consulta mediante combinaciones externas por la izquierda. Su uso se muestra en los ejemplos siguientes.


Combinación por la izquierda sobre las tablas “clientes” y “ventas”. En una combinación por la izquierda se debe considerar el orden de las tablas, aquella tabla desde la que se obtienen todas las filas coincidentes es la tabla de la izquierda. La combinación por la izquierda se puede extender a tres tablas. El siguiente ejemplo muestra el resultado de una consulta sobre nombres de clientes, vendedores y valores de ventas.


Combinaciones por la derecha. La diferencia de estas combinaciones con las combinaciones por la izquierda radica en que se invierte el orden de la combinación. Continuando con el ejemplo que venimos tratando, si queremos visualizar los nombres de cliente correspondiente a cada venta, sin importar si se tiene información completa de los clientes, escribimos la consulta colocando a la derecha la tabla ventas.

Combinaciones naturales mediante USING: El campo “id_cliente”, de la tabla “clientes”, y el campo “cliente” de la tabla “ventas”, están relacionados, aunque tienen diferentes nombres. Podemos dar los mismos nombres y usar mecanismos de SQL para facilitar las instrucciones JOIN. En el siguiente ejemplo cambiamos el nombre del campo cliente de la tabla ventas para que ahora sea “id_cliente”.

Con lo anterior las tablas ventas y clientes tienen un campo con nombres idénticos relacionados. Podemos realizar una combinación natural, que busca campos con nombres igualessobre los que hacer una unión como lo muestra el siguiente ejemplo:


O equivalentemente:

Las tablas “clientes” y “ventas”coinciden en un campo, en el caso de haber más campos con igual nombre en las tablas diferentes, tales campos serían parte de la condiciónque define la combinación. También se puede tener combinaciones naturales por la izquierda o por laderecha. Los siguientes ejemplos muestran consultas que arrojan iguales resultados.



Mediante el uso de USING se tiene mayor control sobre combinaciones naturales. Si dos tablas tienen varios campos coincidentes, la palabra USING permite seleccionar aquellos que se usarán en la condición definidora de la combinación. Si tememos las tablas Tabla1 y Tabla2coincidente en los campos campo1, campo2, campo3, campo4,se obtiene los mismos resultados mediante lo siguiente. SELECT * FROM Tabla1 LEFT JOIN Tabla2 USING (campo1, campo2, campo3, campo4) SELECT * FROM Tabla1NATURAL LEFT JOIN Tabla2

USING permite seleccionar los campos que para la combinación. Por ejemplo, mediante la siguiente instrucción se selecciona sólo los campos campo1 y campo2: SELECT * FROM Tabla1LEFT JOIN Tabla2USING (campo1, campo2)

Recuperación de datos encontrados en unatabla pero no en la otra: Frecuentemente se requiere sólo los registros hallados en una tabla pero no en la otra. Con el fin de ilustrar esta situación, inicialmente agregamos un vendedor nuevo.

Ahora realizamos una combinación interna para visualizar la información de los vendedores que hayan llevado a cabo alguna venta, tal como se muestra a continuación.


Usando DISTINCT se evita mostrar resultados duplicados en el caso de vendedores que hayan hecho más de una venta. Si a cambio de lo anterior, lo que se quiere es ver información de vendedores que no han realizado ventas se puede realizar mediante la siguiente consulta.

Combinación de resultados con UNION La clausula UNION combina resultados de diferentes sentencias SELECT,cada una de las cuales con el mismo número de campos. Como muestra de su uso creamos a continuación unatabla con una lista de clientes antiguos.

A continuación, presentamos la consulta creada y el resultado que muestra la lista de todos los clientes, antiguos y nuevos.


También podemos realizar una ordenación de los datos del resultado, en ello debemos tener presente si la clausula ORDER BYse aplica a la unión en su totalidad o solo a unaselección.

En el ejemplo de la anterior imagen, la ordenación de la información se hace sobre el conjunto de todos los registros obtenidos. El siguiente ejemplo muestra el uso de paréntesis para realizar el ordenamiento sólo sobre la segunda selección.


Por defecto, UNION no entrega resultados duplicados, pero puede modificarse mediante el uso de la palabra ALL para que muestre todos los resultados. En el siguiente ejemplo se ilustra la utilizaci贸n de esta variante.


Es importante anotar el cuidado requerido en el uso de UNION. Es posible unir campos que no se relacionen. La herramienta MySQLmostrar谩 los datos solicitados sin importar si tal solicitud tiene sentido l贸gico.


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.