JOIN-GROUP BY
Comando Inner Join
El comando JOIN en mysql, sirve para combinar 2 o mas tablas según las designaciones de variables que queremos o necesitemos.
Unión entre varias tablas, devuelve la información que encuentra esa unión (relación)
Sintaxis:
select * from tabla1 inner join tabla2 on tabla1.id=tabla2.id inner join tabla3 on tabla2.id=tabla3.id2
CONSULTAS RELACIONALES (Entre varias tablas)
Visualizar el codigo del libro, el nombre del libro, el codigo del autor y el nombre del autor con sus respectivos libros escritos
Analisis
1. Que deseo consultar y de que tablas:
libro.idlibro
libro.descripcion
autor.codautor
autor.nombre
2. Que tablas se ven afectadas o involucradas:
Libro
Autor
Liautedi
3. Condiciones:
Ninguna
4. Como s erelacionan las tablas:
libro.idlibro=liautedi.idlibro
liautedi.codautor=autor.codautor
5. Que comandos debe de utilizar:
Select, inner join
Sintaxis:
select libro.idlibro,libro.descripcion,autor.codautor,autor.nombre from libro inner join liautedi on libro.idlibro=liautedi.idlibro inner join autor on liautedi.codautor=autor.codautor;
select distinct libro.idlibro,libro.descripcion,autor.codautor,autor.nombre from libro inner join liautedi on libro.idlibro=liautedi.idlibro inner join autor on liautedi.codautor=autor.codautor;
Comando left join
Se utiliza para saber que registros no tienen correspondencia en otra tabla. Verifica de una tabla izquierda a una tabla derecha, si no encuentra coincidencias se genera una fila con todos los campos ceteados a NULL
Visualizar que libros no se les a asignado un autor utilizando el left
Sintaxis:
select libro.idlibro,libro.descripcion,liautedi.idlibro from libro left join liautedi on libro.idlibro=liautedi.idlibro where liautedi.idlibro is null;
Comando right join
Opera del mismo modo que el left join, solo que la busqueda de coincidencias las realiza del modo contrario, es decir busca valores de coincidencias desde la tabla de la derecha hasta la tabla que esta a la izquierda y sucede lo mismo que en el left, sino encuentra coincidencias se genera una fila extra con todos los campos ceteados en null.
Visualizar el listado de los libros que tienen al menos un autor asignado
Sintaxis:
select libro.idlibro,libro.descripcion,liautedi.idlibro from libro right join liautedi on libro.idlibro=liautedi.idlibro;
select libro.idlibro,libro.descripcion,autor.codautor,autor.nombre from libro right join liautedi on libro.idlibro=liautedi.idlibro right join autor on liautedi.codautor=autor.codautor;
AGRUPAR INFORMACION
Comando Group by
Sintaxis:
select * from nombretabla group by nombrecampo;
Nota:
Se utiliza las funciones (max,min,sum,avg,count)
Visualizar las cantidades de visitantes por ciudad
Analisis:
1. Que deseo consultar:
La ciudad
2. Campo en el que se aplica la funcion:
montocompra
3. Campo por el cual voy a agrupar:
Ciudad
4. Comando:
select, group by, count
Sintaxis:
select nombrecampo(s), funcion(campofuncion) as nombredeseado from nombretabla group by nombrecampo;
select ciudad,count(ciudad) as 'cantidad visitantes' from visitantes group by ciudad;
Visualizar el total comprado por ciudad:
Analisis:
1. Que deseo consultar:
La ciudad
2. Campo en el que se aplica la función:
montocompra
3. Campo por el cual voy a agrupar:
Ciudad
4. Comando:
select, group by, sum
Sintaxis:
select ciudad,sum(montocompra) as 'total compra por ciudad' from visitantes group by ciudad;
Visualizar el monto de compra por sexo
Analisis:
1. Que deseo consultar:
El sexo
2. Campo en el que se aplica la funcion:
montocompra
3. Campo por el cual voy a agrupar:
sexo
4. Comando:
select, group by, sum
Sintaxis:
select sexo,sum(montocompra) as 'total compra por sexo' from visitantes group by sexo;
Visualizar las ciudades a las que van mas de dos visitantes
Analisis:
1. Que deseo consultar:
Ciudad
2. Campo en el que se aplica la funcion:
Ciudad
3. Campo por el cual voy a agrupar:
Ciudad
4. Comando: Condicion canridad >2
select, group by, count, having.
Sintaxis:
select ciudad,count(ciudad) as 'cantidad de visitantes' from visitantes group by ciudad having count(ciudad)>2;
Nota:
Cuando utilizamos group by y se manejan condiciones estas no funcionan con where sino con having
Calcular el promedio de montocompra agrupados por ciudad y sexo
Analisis:
1. Que deseo consultar:
Ciudad, Sexo
2. Campo en el que se aplica la funcion:
montocompra
3. Campo por el cual voy a agrupar:
Ciudad, Sexo
4. Comando: Condicion: ninguna
select, group by, avg
Sintaxis:
select ciudad,sexo,avg(montocompra) as 'promedio de compra' from visitantes group by ciudad,sexo;
Visualizar el monto compra por ciudad mayor a 5 millones
Analisis:
1. Que deseo consultar:
Ciudad
2. Campo en el que se aplica la funcion:
montocompra
3. Campo por el cual voy a agrupar:
Ciudad
4. Comando: Condicion: compra suma > 5000000
select, group by, sum,having.
Sintaxis:
select ciudad,sum(montocompra) as 'Mayores_a_5000000' from visitantes group by ciudad having sum(montocompra)>5000000;
VISTAS
Se utilizan para crear tablas temporales
Comando View
Sintaxis:
Ejemplo: crear una vista con los nombres que terminan en A
create view nombre de la vista;
create view visitantesa as select * from visitantes where nombre like '%a';
Nota:
Se crea una tabla tal cual es la original, pero con la información consultada.
Inserta un nuevo visitante
insert into visitantes(nombre,ciudad,sexo,montocompra)values('Ana Maria Guerrero Guasca','cartagen','femenino',5000000);
Eliminar una vista
Sintaxis:
Drop view nombredelavista;
Drop view visitantesa;
Otros Comandos Mysql
Comando auto_increment:
Permite crear campos que se incrementan automáticamente.
Crear una tabla utilizando este comando
Ejemplo:
create table edicion(codigo int auto_increment primary key,descripcion char(30) not null);
Insertamos registros y verificamos que el campo si este auto incrementando.
insert into edicion(descripcion) value ('primera edicion'),('segunda edicion'),('tercera edicion');
Eliminar un registro y mostrar la información y volvemos a insertar otro registro.
delete from edicion where codigo=1;
truncate table edicion:
Borra físicamente los registros de la tabla y recupera el consecutivo
Como crear campos que no admitan valores negativos
El comando unsigned
Sirve para crear campos que no permitan valores negativos, teniendo en cuenta la informacion o datos que se van a almacenar.
Para modificar el valor negativo