36
Sql Server Práctica

SQL Server - Practica

  • Upload
    carmelo

  • View
    230

  • Download
    0

Embed Size (px)

Citation preview

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 1/36

Sql Server

Práctica

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 2/36

Crear Base de datos

entras a Microsoft SQL Server2005 y creamos

una base de datos de nombre: SistEduc

Esta BD tendrá las siguientes tablas

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 3/36

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 4/36

Solución Crear BD

CREATE DATABASE SistEduc ON PRIMARY

(

NAME= SistEduc _data,

FILENAME='C:\BDD\grupo6601.mdf',

SIZE=50MB,

MAXSIZE=70MB,

FILEGROWTH=1MB)

LOG ON

(

NAME= SistEduc _log,

FILENAME='C:\BDD\grupo6601.ldf',

SIZE=15MB,

MAXSIZE=20MB,FILEGROWTH=1MB

)

GO

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 5/36

Solución Crear Tabla Escuela

create table Escuela (idescuela smallint IDENTITY primary key,

NomEscuela varchar (25),

Telefono int,

NomResponsable Varchar (25),

Totalmatric int,

idCarrera smallint,

idMatricula int,

idZona int,

constraint fk_carreraesc foreign key (idCarrera)

references Carrera (idCarrera),

constraint fk_matriculaesc foreign key (idMatricula)references Matricula (idMatricula),

constraint fk_zonaesc foreign key (idZona)

references Zona (idZona))

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 6/36

Solución Crear resto de tablas

use SistEduc

create table Matricula(idMatricula int primary key not null,

grado varchar(10),

TotalMatricula int)

Create table Zona(idZona int primary key not null,

Nombre_zona varchar(10),Cod_postal int,

Clave_zona varchar(10))

Create Table Carrera(idCarrera smallint primary key not null,

nombreCarrera varchar(10),

claveCarrera varchar(10))

select * from Carreraselect * from Zona

select * from Matricula

select * from Escuela

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 7/36

Insertar registros

Insertamos registros en cada una de las tablas.

Al establecerse la restricción del constraint

deben coincidir los registros del id en lastablas.

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 8/36

Setencias INNER JOIN

sentencia que permite combinar registros de

dos tablas relacionadas, siempre que existan

valores coincidentes en un campo común,

esto es, que ambas tengan un campo con el

mismo nombre y dominio.

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 9/36

Su sintaxis es:

FROM <tabla1> INNER JOIN <tabla2> ON<tabla1.campo1 > [operador de condición

(=, >,<, etc)] <tabla2.campo2>

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 10/36

También se puede vincular varias cláusulas ON en unainstrucción JOIN, mediante la sintaxis siguiente:

SELECT <campos>

FROM <tabla1> INNER JOIN <tabla2>

ON <tabla1.campo1 [operador de condición]<tabla2.campo1> AND

ON <tabla1.campo2 [operador de condición]

<tabla2.campo2> ORON <tabla1.campo3> [operador de

condición]<tabla2.campo3>

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 11/36

Practica

Escribimos la siguiente consulta en nuestra BD

SELECT * FROM Escuela INNER JOIN Zona ONEscuela.idZona = Zona.idZona.

Compila y ejecuta

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 12/36

Consultas de Datos en Tablas

Relacionadas

LEFT OUTER JOIN

esta consulta muestra en la columna derechael campo de la tabla que se desea consultar y

en la izquierda las combinaciones con la tabla

2 donde los valores sean nulos, en el caso que

se utiilice el where y ademas la sentencia is

null.

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 13/36

Su formato es:

Select nombretabla 1.nombre campo (columnaizquierda),

nombretabla2.nombrecampo (columna derecha)FROM tabla 1 LEFT OUTER

JOIN tabla 2 ON tabla 1.campo clave principal =tabla2. campo clave principal

WHERE nombre tabla 2.nombrecampo IS NULL.

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 14/36

El mismo resultado obtendremos utilizado el

RIGHT OUTER JOIN

En este caso las columnas quedan invertidas,es decir la de la izquierda del ejemplo anterior

queda a la derecha.

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 15/36

Es importante mencionar que debe existir una

relación directa entre las dos tablas en la cual

la clave primaria de la primera tabla debe

estar contenida como clave ajena en la

segunda tabla y además tener valores iguales

para la combinación

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 16/36

Ejemplo

Ejecutamos la siguiente consulta

SELECT Escuela.idCarrera, Escuela.NomEscuela,Carrera.idCarrera,Carrera.nombreCarrera

FROM Escuela LEFT OUTER JOIN Carrera

ON Escuela.idCarrera = Carrera.idCarrera

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 17/36

Ejemplo

Ahora ejecutas esta consulta

SELECT Escuela.idCarrera, Escuela.NomEscuela,Carrera.idCarrera,

Carrera.nombreCarrera

FROM Escuela RIGHT OUTER JOIN CarreraON Escuela.idCarrera = Carrera.idCarrera

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 18/36

Funciones de agregado

Agrupar por totales

Las funciones de agregado son aquellas que generanvalores de resumen en los conjuntos de resultados delas consultas.

Una función de agregado procesa todos los valores

seleccionados en una única columna para generar unúnico resultado.

Las funciones de agregado se pueden aplicar a todaslas filas de una tabla, a un subconjunto de la tablaespecificado por una cláusula WHERE o a uno o variosgrupos de filas de la tabla.

Cuando se aplica una función de agregado, se generaun valor individual por cada conjunto de filas.

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 19/36

Las funciones de agregado son:

SUM, AVG

 ± los cuales solo se pueden usar con columnas numéricas

MIN y MAX ± no se puede utilizar con tipo de datos bit

Estas funciones permiten obtener valores medios,máximos y mínimos, de comparativo

de una columna. Mientras que SUM permite sumar los valores de la

columna.

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 20/36

Ejemplos

select sum(totalmatric) from Escuela

select MAX(totalmatric) from Escuela

Select MIN(totalmatric) FROM Escuela

Select AVG(totalmatric) From Escuela

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 21/36

Copia de seguridad

en la base de datos

boton derecho tareas copia de seguridad

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 22/36

Copiar BD

boton derecho BD tareas copiar bd

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 23/36

Importar

boton derecho tareas importar

importa una tabla de otra BD

en T-SQL se haría con Bulk insert

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 24/36

Transacciones

Las transacciones es un concepto muy utilizadoprincipalmente por que se piensa en transaccionesfinancieras.

Principalmente se utilizan para realizar modificaciones en

los registros que se encuentran en una tabla, en el cualpuede ser de manera generalizada para todos los registroso para uno específicamente.

Estas transacciones se realizan de manera atómica, es deciruna vez que inician deben concluirse o de lo contrario los

mecanismos de seguridad de la base de datos puedenanularla o abortarla dependiendo de la técnica que seutilice, principalmente cuando suceden fallos del sistemaya sea de tipo físico o lógico.

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 25/36

Tipos de transacciones

La transacción explicita

 ± es definida por el programador utilizando BEGIN

TRANSACTION para especificar el dato que se va a

modificar la cual es completada con la sentencia

COMMIT TRANSACTION y realiza excepciones de

errores esto es hace verificaciones de errores

mediante el ROLLBACK TRANSACTION.

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 26/36

Transacciones Implícitas

 ± aquellas que se realizan cuando dos tablas estánrelacionadas y la modificación de la primera

genera una modificación implícita de la segundapara asegurar la integridad de dominios en ambastablas.

 ± Se utiliza la sentencia SET

IMPLICIT_TRANSACTIONS ON, principalmentecuando no se realiza atómicamente la transacciónde la primera.

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 27/36

AutoCommit Transacction.

 ± se realiza se puede decir de manera automática,

en los casos en que la modificación se datos se

realiza fuera de las explicitas e implícitas.

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 28/36

Ejemplo

BEGIN transaction

UPDATE Escuela SET totalmatric =(totalmatric * 0.05) + totalmatric /*

modificación del campo totalmatric al cual se le incrementa 5% su

valor.*/

WHERE Nomescuela = 'Sor Juana' /* a la escuela que tenga por nombre

Sor Juana*/

IF @@ERROR != 0 /*excepcion de error*/

BEGINROLLBACK transaction

RETURN

END

COMMIT transaction

Fin

de la transacciòn

begin tran

commit tran

rollback tran

consulta

del resultado

select * from Escuela

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 29/36

ejecutamos y vemos

ahora escribimos otra consulta

insert into Escuela values('Sor Juana', 89,

'Rocio',500, 3,156,20)

tb ejecutamos

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 30/36

transacciones en tablas relacionadas

BEGIN transaction

SELECT Escuela.idCarrera, Escuela.NomEscuela,

Carrera.idCarrera,Carrera.nombreCarrera

FROM Escuela LEFT OUTER JOIN Carrera

ON Escuela.idCarrera = Carrera.idCarrera

where Escuela.NomEscuela= 'TESE' /* a la escuela que tenga por nombre

Sor Juana*/IF @@ERROR != 0 /*excepcion de error*/

BEGIN

ROLLBACK transaction

RETURN

END

COMMIT transaction

Fin

de la transacciòn

begin tran

commit tran

rollback tran

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 31/36

ejecutamos y vemos los efectos

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 32/36

Sentencias group by y having

Esta sentencia especifica una condición debúsqueda de un grupo o agregado ynormalmente se utiliza con la cláusula GROUP

BY. Cuando no se utiliza con esta sentencia,

HAVING se comporta como la cláusulaWHERE.

Su sintaxis es:

HAVING <condición_busqueda>.

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 33/36

Con esta sentencia no puede utilizarse los tiposde datos text, image y ntext.

Group By especifica las agrupaciones que van a

realizar en las filas de salida. Cuando se especifica GROUP BY , cada columna

que no este en una expresión de agregado de lalista de selección, esto es, todas las columnas de

la tabla, se deben incluir en la lista de GROUP BY o esta debe coincidir exactamente con laexpresión de la lista de selección.

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 34/36

Su sintaxis es:

SELECT * FROM <nombre de la tabla> GROUP

BY <campos de la tabla> HAVING <campo de búsqueda [condición]=registro>

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 35/36

Ejemplo

SELECT * FROM Escuela GROUP BY idescuela,

NomEscuela, Telefono,

NomResponsable, Totalmatric, idCarrera,idMatricula,

idZona HAVING Totalmatric >500

8/9/2019 SQL Server - Practica

http://slidepdf.com/reader/full/sql-server-practica 36/36

Ejemplo2

SELECT * FROM Escuela GROUP BY idescuela,

NomEscuela, Telefono,

NomResponsable, Totalmatric, idCarrera,idMatricula,

idZona HAVING Totalmatric > =5600