UNA CONSULTA BÁSICA ENTRE TABLAS
MySQL permite realizar consultas simultáneas en registros situados en varias tablas.
SINTAXIS:
SELECT __....campos...___ FROM tabla1,tabla2,...
WHERE tabla1.claveprincipal=tabla2.claveforanea,....;
SELECT __....campos...___ FROM tabla1,tabla2,...
WHERE tabla1.claveprincipal=tabla2.claveforanea,....;
CONSULTA EN TABLAS COMBINADAS
El JOIN nos permitirá obtener un listado de los campos que tienen coincidencias en ambas tablas.
- SINTAXIS: Para 2 tablas:
SELECT __...campos...___ FROM tabla1
[INNER] JOIN tabla2
ON tabla1.claveprincipal=tabla2.claveforanea
WHERE condiciones_para_cualquier_campo_de_cualquier_tabla;
SELECT __...campos...___ FROM tabla1
[INNER] JOIN tabla2
ON tabla1.claveprincipal=tabla2.claveforanea
INNER JOIN tabla3
[INNER] JOIN tabla2
ON tabla1.claveprincipal=tabla2.claveforanea
WHERE condiciones_para_cualquier_campo_de_cualquier_tabla;
- SINTAXIS: Para 3 tablas:
SELECT __...campos...___ FROM tabla1
[INNER] JOIN tabla2
ON tabla1.claveprincipal=tabla2.claveforanea
INNER JOIN tabla3
ON tabla2.claveprincipal=tabla3.claveforanea
WHERE condiciones_para_cualquier_campo_de_cualquier_tabla;
WHERE condiciones_para_cualquier_campo_de_cualquier_tabla;
Ejemplo de Tablas Combinadas: Mostrar
la relación de clientes que han obtenido un préstamo en alguna sucursal de
Miraflores.
select nombre_cliente from clientes join prestamos on clientes.codcliente = prestamos.codcliente where nombre_sucursal = “Miraflores”;
- LEFT JOIN
- RIGTH JOIN
Uso de cláusulas de Comando select en MySQL
Donde
se especifican las condiciones de búsqueda y join para las filas que conforman el conjunto
resultado.
[select
...] [from ...] where condiciones_de_búsqueda
Las
condiciones de búsqueda pueden incluir:
n Operadores de Comparación (=,
<>, < y >).
n Porciones de cadenas de
caracteres (substr)
n Rangos (between y not between).
n Listas (in, not in).
n Patrones de caracteres (like y
not like).
n Valores desconocidos (is null y
is not null).
n Combinaciones con conjunciones (and,
or).
Comodines en la cláusula where
COMODÍN
|
SIGNIFICADO
|
* %
|
Cualquier
cadena de cero o más caracteres.
|
?, #, _
|
Cualquier
carácter/ número único.
|
[-]
|
Cualquier
carácter único dentro de un rango.
|
[!]
|
Cualquier
carácter único que no está dentro de un rango.
|
Comodines en la
cláusula where
….where nombre_campo like ... no like "______"
Ø
like “Ma%” busca
todos los nombres que comiencen con “Ma”
(Ej.:
María, Mariana, Manuel, Martín)
Ø like “%ía” busca todos los nombres que terminen
con “ía”.
(Ej.:
Sofía, María, Estefanía).
Ø like “%ar%” busca todos los nombres que tengan las
letras “ar”.
(Ej.:Carlos,
Arturo, Eleazar).
Ø like “_va” busca todos los nombres de tres letras
que terminan en “va”.
(Ej.: Eva, Iva, Ava).
Ø like “[CM]arlo[ns]” busca todos los nombres: Carlon, Marlon, Carlos y Marlos.
Ø like “[B-D]elia” busca
todos los nombres que terminan en “elia” y que comiencen con las letras de la B
a la D.
(Ej.: Delia, Celia).
Ø like “_ _ _” busca todas las cadenas de exactamente 3
caracteres.
Ø like “_ _ _ %” busca las cadenas de al menos 3 caracteres.
EJEMPLOS DE LA
SENTENCIA select
·
select emp_id, fecha_nac,
direccion from empleado where nombre = “juan” and apellido = “perez”
· select campo/s
from [table] limit [numero];
Muestra los registros desde el 1
hasta [numero].
Ej. select * from clientes limit
10; (Muestra los 10 primeros
registros.)
·
select campo/s
from [table] limit [numero inicio],[numero];
Muestra los registros desde el número
de inicio hasta numero inicio + numero.
Ej. select * from clientes limit
11,10; (Muestra desde registro 11 hasta el 10.)
Cláusula GROUP BY
Especifica las columnas por las que las filas van a estar agrupadas o
particionadas. Los resultados de la consulta contiene un valor o conjunto de
valores para cada conjunto de valores indicado por las funciones_de_agregación
nombradas en la lista del select
SINTAXIS:
select columnas_de_agrupación,…,
función_de_agregación,… from … [where …] group by columnas_de_agrupación,…
Funciones de
Agregación más usadas
SUM([ALL|DISTINCT]
expresión)
|
Calcula
el total de una expresión numérica para todas las filas o sólo las distintas.
|
AVG([ALL|DISTINCT]
expresión)
|
Calcula
el promedio de una expresión numérica para las filas involucradas.
|
MIN([ALL|DISTINCT]
expresión)
|
Calcula
el mínimo valor de una expresión numérica para las filas involucradas
|
MAX([ALL|DISTINCT]
expresión)
|
Calcula
el máximo valor de una expresión numérica para las filas involucradas.
|
COUNT([ALL|DISTINCT]
expresión)
|
Número
de veces que se repite el valor de la expresión.
|
COUNT(*)
|
Número
de filas seleccionadas
|
Ejemplo de
Cláusula group by
·
Mostrar la suma de sueldo básico de los empleados activos, por
Departamento.
select nombre_depto, sum(sueldobasico) from empleado em, departamento de where em.iddepartamento
= de.iddepartamento and estadoempleado= 'act’ group by nombre_depto
·
“Obtener el número de titulares de cuenta de cada sucursal”
select nombre_sucursal, nombre-cliente from titular-cuenta tc, cuenta cue where
tc.numero-cuenta = cue. numero-cuenta group by nombre-sucursal
Cláusula HAVING
Especifica una restricción que aplica a
las funciones de agregación de los grupos. Esto afecta a las filas que son
devueltas como resultado y no al cálculo de las funciones de
agregación.
La cláusula where
si condiciona el número de filas que intervienen en el
cálculo de las funciones de agregación.
SINTAXIS:
select {{columnas_de_agrupación,…},
{función_de_agregación,…}} from … [where …] group by {columnas_de_agrupación,…}
having condiciones_de_búsqueda
Ejemplo de
Cláusula having
·
Mostrar el sueldo promedio de los Departamentos con promedio superior
a 1000”
select nombre_depto, avg(sueldobasico)
from empleado em, departamento de where
em.iddepartamento = de.iddepartamento
and estadoempleado= 'act' group by nombre_depto having avg(sueldobasico) >
1000
·
Saldo promedio de cada cliente de Surco que tiene como mínimo 3
cuentas”
select tc. nombre-cliente, avg (saldo) from titular-cuenta tc, cuenta cue, cliente cli where
tc.numero-cuenta = cue.numero-cuenta and
tc.nombre-cliente = cli.nombre-cliente and ciudad-cliente = “surco” group by
tc.nombre-cliente having count (distinct tc.numero-cuenta) >= 3
Cláusula ORDER BY
Ordena el resultado de las consultas por los
valores de las columnas mencionadas.
Solamente se puede ordenar por las
columnas especificadas en el SELECT.
·
ASC: Es el valor por defecto e
indica que los resultados se van a presentar ascendentemente.
·
DESC: Debe especificarse al lado de
la columna cuyo orden se desea ver en forma descendente.
Consideración: ordenar un gran número de
tuplas puede ser costoso. Es conveniente ordenar sólo cuando sea estrictamente
necesario.
SINTAXIS:
select {columna 1, columna 2,…} from
tablas/s… [where …] [group by...] order by columna 1 [asc|desc],....
Ejemplos de
Cláusula order by
·
select nombre, avg(sueldobasico) from
empleado em, departamento de where em.departamento = de.departamento
group by nombre order by avg(sueldobasico) desc
No hay comentarios:
Publicar un comentario