11
Página | 1 Resumen Bases de datos Alumnos Pk_Alumnos nombreAlu 28608032 Natalia catalan 29937424 Patricio urbieta 33200200 coto 48160471 paola urbieta 51100100 helena urbieta Left join y Right join Asocian dos tablas select x.notas, a.nombreAlu from Examenes as x right join Alumnos as a on x.fk_Alumnos=a.pk_dniAlu Notas NombreAlumno s 10 Natalia catalan 7 Patricio urbieta NULL coto NULL paola urbieta 8 helena urbieta Muestra todos los alumnos y si tiene coincidencias con la otra tabla. select a.nombreAlu, x.notas from Alumnos as a left join Examenes as x on a.pk_dniAlu=x.fk_Alumnos Examenes Fk_mat Fk_alumnos notas 2 28608032 10 2 29937424 7 5 51100100 8 Materias Pk_idMAteri a Nombr materia 1 matematica 2 lengua 3 programacion 4 empresarial 5 contabilidad

Resumen de Bases de Datos SQL Server

Embed Size (px)

Citation preview

Page 1: Resumen de  Bases de Datos SQL Server

Página | 1

Resumen Bases de datos

AlumnosPk_Alumnos nombreAlu

28608032 Natalia catalan29937424 Patricio urbieta33200200 coto48160471 paola urbieta51100100 helena urbieta

Left join y Right join

Asocian dos tablas

select x.notas, a.nombreAlufrom Examenes as x right join Alumnos as aon x.fk_Alumnos=a.pk_dniAlu

Notas NombreAlumnos 10 Natalia catalan7 Patricio urbieta

NULL cotoNULL paola urbieta

8 helena urbieta

Muestra todos los alumnos y si tiene coincidencias con la otra tabla.

select a.nombreAlu, x.notasfrom Alumnos as a left join Examenes as xon a.pk_dniAlu=x.fk_Alumnos

Notas NombreAlumnosPatricio urbieta 7

coto NULLpaola urbieta NULL

helena urbieta 8Natalia catalan 10

Este caso es lo mismo ya que esta invertido el orden de declaracion de las tablas

select x.notas, a.nombreAlu

ExamenesFk_mat Fk_alumnos notas

2 28608032 102 29937424 75 51100100 8

MateriasPk_idMAteria Nombr materia

1 matematica2 lengua3 programacion4 empresarial5 contabilidad

Page 2: Resumen de  Bases de Datos SQL Server

Página | 2

from Examenes as x left join Alumnos as aon x.fk_Alumnos=a.pk_dniAlu

Este caso hace al reves muestra todos los examenes y sus conicidencias con alumnos

Notas Nombre Alumnos10 Natalia catalan7 Patricio urbieta8 helena urbieta

Full join

select x.notas, a.nombreAlufrom Examenes as x full join Alumnos as aon x.fk_Alumnos=a.pk_dniAlu

Notas Nombres

10 Natalia catalan7 Patricio urbieta8 helena urbieta

NULL cotoNULL paola urbieta

El resultado es el conjunto total de registros de ambas tablas, coincidiendo aquellos registros cuando sea posible. Si no hay conicidencias, se asignan nulos.

Inner join

Muestra solo los resultados de ambas tablas que tengan coincidencias.

select x.notas, a.nombreAlufrom Examenes as x inner join Alumnos as aon x.fk_Alumnos=a.pk_dniAlu

Notas Nombres10 Natalia catalan7 Patricio urbieta8 helena urbieta

Page 3: Resumen de  Bases de Datos SQL Server

Página | 3

Cross join

select * from Examenes cross join Alumnos

Cross join, realiza el producto cartesiano de las tablas, muestra todas las combinaciones posibles.

Funciones de agregado

Son funciones escalares devuelven un solo resultado.

Query Tipo Devuelveselect AVG(notas)from Examenes Promedio 8

select SUM(notas)from Examenes Suma 25

select COUNT(*)from Examenes Cuenta 3

Al devolver un solo resultado cuando se consulta junto a otro campo se debe agrupar, por ejemplo…

select EmployeeID, SUM (freight)as Total, COUNT(*) as Cant_Ordenes from ordersgroup by EmployeeIDorder by EmployeeID

ID Empleado Total Cantidad ordenes

1 8836,64 1232 8696,41 963 10884,74 1274 11346,14 1565 3918,71 426 3780,47 677 6665,44 728 7487,88 1049 3326,26 43

La tabla esta ordenada por numero de empleado con order by EmployeeID

Page 4: Resumen de  Bases de Datos SQL Server

Página | 4

Otro ejemplo poniendo una condicion en el where

select EmployeeID, suma = SUM (freight), COUNT(*) as Cant_Ordenes from orderswhere freight > 500group by EmployeeID

ID Empleado Total Cantidad ordenes

1 544,08 12 2654,69 43 3110,08 44 719,78 15 890,78 17 830,75 19 754,26 1

En este ejemplo solo se suman los pedidos que sean mayores de 500

--------------------------------------------------------------------------------------------------------------

Otro ejemplo mas…

select EmployeeID, SUM (freight) as Total, COUNT(*) as Cant_Ordenes from ordersgroup by EmployeeIDhaving sum(Freight) > 9000order by EmployeeID

ID Empleado Total Cantidad ordenes

3 10884,74 1274 11346,14 156

Con having sum(Freight) > 9000 filtro los resultados de las funciones superiores a 9000, having debe usarse despues de agrupar.

Agrupamiento y subtotales

Page 5: Resumen de  Bases de Datos SQL Server

Página | 5

Agrupa por articulos

Agrupa por proveedor

RollUp , cube y compute

Compute: devuelve los datos agrupados y ordenados y totalizados por una campo que se le especifica.

Ejemplo:

select p.NOMBRE, art.NOMBRE, e.Cantidadfrom ENVIOS as e inner join Proveedores as pon e.IdProv = p.idProvinner join Articulos as arton e.idArticulo=art.idArticuloorder by art.NOMBREcompute sum(e.Cantidad) by art.nombre

Esta consulta muestra los datos ordenados por la columna articulos y tira el total de articulos enviados.

Nombre prov Articulo cantidadJUAN CINTA 800INMA CINTA 300EVA CINTA 100

Sum = 1200

select p.NOMBRE, art.NOMBRE, e.Cantidadfrom ENVIOS as e inner join Proveedores as pon e.IdProv = p.idProvinner join Articulos as arton e.idArticulo=art.idArticuloorder by p.NOMBREcompute sum(e.Cantidad) by p.nombre

Nombre prov Articulo cantidadCARLOS CLASIFICADORA 200CARLOS CONSOLA 700

Sum = 900

Siempre se debe ordenar

antes de usar compute.

Cube: devuelve todos los subtotales de todos los campos, antes se debe agrupar por los campos consultados.

Totaliza

Totaliza

Ordeno y totalizo por otro campo

Ordeno y totalizo por articulo

order by p.NOMBREcompute sum(e.Cantidad) by p.nombre

Page 6: Resumen de  Bases de Datos SQL Server

Página | 6

select IdProv, idArticulo,SUM(Cantidad) from envios where idProv=1group by IdProv,idArticulowith cube

Nombre prov Articulo cantidad1 1 200

NULL 1 2001 4 700

NULL 4 700NULL NULL 900

1 NULL 900

RollUp: devuelve los datos agrupados y ordenados y totalizados por una campo que se le especifica, no da subtotales.

select IdProv, idArticulo,SUM(Cantidad) from envios where IdProv=4group by IdProv,idArticulowith rollup

Nombre prov Articulo cantidad4 3 3004 7 3004 NULL 600

NULL NULL 600

Operaciones DDL: create, alter, drop

Total de prov y arti

Total de articulo

Total general

Total proveedor

Muestra detalle prov y art

Total proveedor

Total general

Page 7: Resumen de  Bases de Datos SQL Server

Página | 7

Crear tabla

create table Tablaprueba(numero int primary key identity(1,1),nombre varchar(40) not null…)

Borrar tabla

drop table Tablaprueba

Agregar columna

alter table Tablapruebaadd direccion varchar(50)

Borrar columna

alter table Tablapruebadrop column direccion

Formas de insertar datos en una tabla

Insertar de a una fila

insert into Tablaprueba values('patricio')

Insertar de a una fila especificando que campos

insert into Tablaprueba (nombre)values('paola')

Insertar todos los campos de una tabla en otra

insert Tablapruebaselect nombreMatfrom Materias

especifico que campo de la tabla Materias voy a insertar en la TablaPrueba

insert Tablapruebaselect nombreMatfrom Materiaswhere pk_idMat=2

este es el mismo caso pero con un filtro, inserto todos los nombres de materias de la tabla Materias que tengan un id = 2

Editar campos de una tabla

Page 8: Resumen de  Bases de Datos SQL Server

Página | 8

update tablapruebaset nombre = 'no existe mas'

edito sin una condicion y abajo con una condicion

update tablapruebaset nombre = 'no existe mas'where nombre= 'lengua'

Borrar campos de una tabla

delete Tablaprueba where nombre='natalia catalan'

o

delete Tablaprueba

Borrar campos de una tabla con “truncate”

Si la tabla tiene un campo identity no lo resetea, borra las filas pero, no vuelve el valor de identity a 0, para eso se debe usar truncate. Aparte truncate no deja registro de lo borrado y delete si

truncate table tablaprueba

vuelve el valor de identity a 0

Otras herramientas para consultar

Uso de % y like: se usa para buscar coincidencias el signo % busca

cualquier cosa y se concatena con una variable o literal se puede usar adelente de la variable , atrás o en ambos lados, tambien en el medio concatenando.

update Tablapruebaset nombre = 'nada'where nombre like '%em%'

ejemplo de concatenado, encontraria la palabra “programacion” o “paginacion”

select *from Tablapruebawhere nombre like 'p' + '%' + 'n'

otro ejemplo de concatenado, encontraria la palabra “contabilidad” o “conrad” o “c que me importa que hay en el medio d”

select *from Tablapruebawhere nombre like 'c%d'

Subconsultas

Page 9: Resumen de  Bases de Datos SQL Server

Página | 9

Una subconsulta es nada mas que una consulta dentro de otra y suele remplazar a las combinaciones. De todas maneras siempre es preferible usar combinaciones ya que el motor las puede resolver de manera mas eficaz.

Cómo utilizar subconsultas

Cuando decida utilizar subconsultas, tenga en cuenta los siguientes hechos e instrucciones: Las subconsultas se deben incluir entre paréntesis. Se pueden utilizar subconsultas en lugar de una expresión siempre y

cuando se devuelva un solo valor o una lista de valores. Se pueden utilizar subconsultas que devuelvan un conjunto de registros de varias columnas en lugar de una tabla o para realizar la misma función que una combinación.

No se pueden utilizar subconsultas que recuperen columnas con tipos

de datos text e image.

Puede tener subconsultas dentro de subconsultas, con una anidación de hasta 32 niveles. El límite varía según la cantidad de memoria disponible y la complejidad de las otras expresiones de la consulta. Las consultas individuales pueden no admitir una anidación de hasta 32 niveles.

Uso de subconsulta como tabla derivada.

Una tabla derivada se crea al utilizar una subconsulta en lugar de una tabla en una cláusula FROM a la que hace referencia un alias o nombre especificado por el usuario.

EJEMPLO:

SELECT T.orderid, T.customerid FROM

( SELECT orderid, customerid FROM orders ) AS T

La subconsulta vendria a remplazar a una tabla.

Cuando se utilice como tabla derivada, tenga en cuenta que una subconsulta:

Es un conjunto de registros dentro de una consulta que funciona como una tabla.

Ocupa el lugar de la tabla en la cláusula FROM.

Se optimiza con el resto de la consulta.

Subconsulta como tabla derivada