Práctica sql server [fbdr]

15
Fundamentos de Bases de Datos Relacionales Práctica SQL FBDR-2014 Página 1 Tema: SQL SERVER

description

Guia practica de Fundamentos de bases de datos relacionales

Transcript of Práctica sql server [fbdr]

Page 1: Práctica sql server [fbdr]

Fundamentos de Bases de Datos Relacionales

Práctica SQL FBDR-2014 Página 1

Tema: SQL SERVER

Page 2: Práctica sql server [fbdr]

Fundamentos de Bases de Datos Relacionales

Práctica SQL FBDR-2014 Página 2

Script de Creació n

Creación de base de datos

Sintaxis:

CREATE DATABASE <nombre de la base> ON( NAME = <'nombre de la base', FILENAME = 'c:\ discusion.mdf', SIZE = 5 , MAXSIZE = 10, FILEGROWTH= 10% )

Nombre de la base : Es el nombre de la nueva base de datos. Los nombres de base de datos

deben ser únicos en una instancia de SQL Server y cumplir las reglas de los identificadores.

ON: Especifica que los archivos de disco utilizados para almacenar las secciones de datos de la

base de datos (archivos de datos) se definen explícitamente. ON es obligatorio cuando va seguido

de una lista de elementos <filespec> separados por comas que definen los archivos de datos del

grupo de archivos principal.

NAME : Especifica un nombre lógico para el archivo. NAME es obligatorio si se especifica FILENAME.

FILENAME : Especifica el nombre de archivo (físico) del sistema operativo.

SIZE : Especifica el tamaño del archivo.

MAXSIZE : Especifica el tamaño máximo que puede alcanzar el archivo.

FILEGROWTH Especifica el incremento de crecimiento automático del archivo.

Page 3: Práctica sql server [fbdr]

Fundamentos de Bases de Datos Relacionales

Práctica SQL FBDR-2014 Página 3

Conexión de base de datos

Sintaxis:

USE <nombre de la Base>

Creación de Tablas

Sintaxis:

CREATE TABLE <nombre de la tabla>(

Campo1 tipo de dato,

Campo2 tipo de dato,

CampoN tipo de dato

)

Creación de PK (llave primaria)

Sintaxis:

ALTER TABLE <nombre de la tabla>

ADD CONSTRAINT <nombre de la constraint>

PRIMARY KEY (campos que forman la llave primaria)

Page 4: Práctica sql server [fbdr]

Fundamentos de Bases de Datos Relacionales

Práctica SQL FBDR-2014 Página 4

Creación de FK (llave foránea)

Sintaxis:

ALTER TABLE <nombre de la tabla>

ADD CONSTRAINT <nombre de la constraint>

FOREIGN KEY (campos)

REFERENCES <nombre de la tabla> (campos)

Creación de CK (restricciones de chequeo)

Sintaxis:

ALTER TABLE <nombre de la tabla>

ADD CONSTRAINT <nombre de la constraint>

CHECK (condición)

Script de llenadó

Instrucción INSERT

Sintaxis:

INSERT INTO <nombre de la tabla> (campo 1,campo 2,campo 3,… campo n)

VALUES ( valor 1, valor2, valor3, …, valor n);

Page 5: Práctica sql server [fbdr]

Fundamentos de Bases de Datos Relacionales

Práctica SQL FBDR-2014 Página 5

Script de vaciadó

Instrucción DELETE

Sintaxis:

DELETE FROM <nombre de la tabla>

WHERE (condicion);

Módificar un campó de la tabla

Instrucción UPDATE

Sintaxis:

UPDATE <nombre de la tabla>

SET <nombre columna> = [nuevo valor]

WHERE (condicion);

Agregar una cólumna a una tabla

Sintaxis:

ALTER TABLE <nombre de la tabla>

ADD <nombre columna tipo de datos >

Page 6: Práctica sql server [fbdr]

Fundamentos de Bases de Datos Relacionales

Práctica SQL FBDR-2014 Página 6

Eliminar una cólumna de una tabla

Sintaxis:

ALTER TABLE <nombre de la tabla>

DROP <nombre columna >

Eliminar una cónstraint

Sintaxis:

ALTER TABLE <nombre de la tabla>

DROP CONSTRAINT <nombre de la constraint >

Eliminar una tabla

Sintaxis:

DROP TABLE <nombre de la Tabla>

Page 7: Práctica sql server [fbdr]

Fundamentos de Bases de Datos Relacionales

Práctica SQL FBDR-2014 Página 7

CONSULTAS

Sintaxis:

Para seleccionar todos los campos de la tabla

SELECT * FROM < nombre de la tabla>

Para seleccionar algunos campos de una tabla

SELECT <nombre de las columnas> FROM < nombre de la tabla>

Para no obtener datos repetidos

SELECT DISTINCT <nombre de columna> FROM <nombre de la tabla>

Palabres clave SQL Descripción

SELECT Recupera datos de una o más tablas

FROM Las tablas involucradas en la consulta. Se requiere para cada SELECT.

WHERE Los Criterios de selección que determinan cuales filas se van a recuperar, eliminar o actualizar

GROUP BY Criterio para agrupar fila

ORDER BY Criterio para ordenar fila

LA CLÁUSULA WHERE.- SQL utiliza la cláusula WHERE en una consulta SELECT para especificar los criterios de selección para la consulta. La forma básica deuna consulta SELECT con criterios ó condición de selección es: SELECT <nombreDeColumnas> FROM nombreDeTabla WHERE criterios

Page 8: Práctica sql server [fbdr]

Fundamentos de Bases de Datos Relacionales

Práctica SQL FBDR-2014 Página 8

Por ejemplo, para seleccionar las columnas IdAlumno, monto de la tablaPagos, para las cuales el monto sea mayor que 540, utilizamos la siguiente consulta: SELECT IdAlumno, Monto FROM PAGOS WHERE monto>540 Los criterios de la cláusula WHERE pueden contener los siguientes operadores de comparación: =, >, <, >=, <=, !=, <>, IN, NOT IN,BETWEEN, NOT BETWEEN, LIKE. Además, se puede construir condiciones múltiples usando los operadores lógicos AND, OR y NOT . Se puede utilizar paréntesis si se desea forzar algún orden de evaluación. El operador LIKE, se utiliza para hacer comparaciones de cadenas, relacionando patrones con los caracteres comodines porcentaje (%) y guión abajo (_). El relacionar patrones permite a SQL buscar cadenas que concuerden con un patrón dado. Un patrón que contenga un carácter de porcentaje (%) busca cadenas que tengan cero o más caracteres en la posición del carácter porcentaje en el patrón Ejemplo: SELECT NomAlumno FROM Alumno WHERE NomAlumno LIKE 'A% Haremos un ejemplo más, se necesita filtrar a los alumnos cuyonombre, apellido empiece con L y M, respectivamente: SELECT NomAlumno, ApeAlumno FROM Alumno WHERE ((NomAlumno LIKE 'L%') AND (ApeAlumno LIKE 'M%')) LA CLÁUSULA ORDER BY.-

Page 9: Práctica sql server [fbdr]

Fundamentos de Bases de Datos Relacionales

Práctica SQL FBDR-2014 Página 9

El resultado de una consulta puede ordenarse en forma ascendente o descendente, mediante el uso de la cláusula ODER BY opcional. La forma básica de una instrucción SELECT con una cláusula ORDER BY es: SELECT nombreDeColumnas FROM nombre de las tablas ORDER BY columna1 ASC SELECT nombreDeColumnas FROM nombre de las tablas ORDER BY columna1 DESC Ejercicio SELECT nomcurso FROM Curso ORDER BY nomcurso ASC USO DE FUNCIONES DE AGREGADO.- Las funciones que calculan promedios y sumas se llaman funciones de agregado. Cuando se ejecuta una función de agregado, SQL Server resume los valores de toda una tabla o de grupos de columnas de una tabla, y produce un valor porcada conjunto de filas para las columnas especificadas

Algunas funciones útiles :

AVG() - Retorna el valor promedio

COUNT() - Retorna el número de filas

MAX() - Retorna el mayor valor

MIN() - Retorna el menor valor

SUM() - Retorna la suma

Por ejemplo Deseamos conocer el promedio de los exámenes finales de todos los cursos, utilice la siguiente sintaxis: SELECT AVG (exafinal) AS Promedio FROM notas

Page 10: Práctica sql server [fbdr]

Fundamentos de Bases de Datos Relacionales

Práctica SQL FBDR-2014 Página 10

Observemos la palabra AS Promedio, esto se utiliza solo para asignarle un nombre a la Columna Se solicita saber cuántos montos existen en la tabla Pagos, esto se hace con la siguiente sintaxis: SELECTCOUNT (monto) AS [NUMEROS DE MONTO] FROM Pagos LA CLÁUSULA GROUP BY.- Utilice la cláusula GROUP BY en columnas o expresiones para organizar filas en grupos y para resumir dichos grupos. Por ejemplo deseamos conocer, cuales son las nota Máxima del Examen Parcial y la nota Minima del Examen Final por cada curso. Utilizamos la siguiente sintaxis: SELECT Idcurso, MAX(exaparcial) AS [Nota Maxima EXP],MIN(exafinal) AS [Nota Minima EXF] FROM Notas GROUP BY idcurso

CONSULTAS CON MÁS DE UNA TABLA

haremos uso de los Alias (identificadores), el uso de estos alias es como sigue: SELECT Idalumno, Apealumno, b.Idesp, nomesp FROM Alumno AS a, Especialidad AS b

Observamos El nuevo cambio en la tablas hemos colocado Alumno AS a, Especialidad AS b, y en el campo b.Idesp , la lógica es la siguiente, para b.Idesp decimos que Idesp , pertenece a la tabla Especialidad que ya quetiene como alias la letra b SELECT Idalumno, Apealumno, b.Idesp, nomesp FROM Alumno AS a, Especialidad AS b WHERE a.idesp=b.idesp

Como un segundo ejemplo necesitamos listar los siguientes campos:

Page 11: Práctica sql server [fbdr]

Fundamentos de Bases de Datos Relacionales

Práctica SQL FBDR-2014 Página 11

IdAlumno, Apealumno, Nomcurso, credito ,ExaParcial, ExaFinal . Solución.-por petición del ejemplo es necesario el uso de 3 Tablas, lascuales son Alumno, Curso, Notas , como debemos de unir 3 tablas,entonces tenemos 2 relaciones entre estas, la solución se muestra a continuación: SELECT a.IdAlumno, Apealumno, Nomcurso, credito ,ExaParcial, ExaFinal FROM Alumno AS a, Curso AS c, Notas AS n WHERE a.idalumno=n.idalumno AND c.idcurso=n.idcurso

Ejemplo 3: necesitamos conocer cual es el total del costo, de la especialidad de cada alumno, para esto debe mostrar los siguientes campos: a.IdAlumno, Apealumno, Nomesp, costo – además se pide ordenarlos por código del alumno.

SELECT a.IdAlumno, Apealumno, Nomesp, SUM (costo) AS Total FROM Alumno AS a, Especialidad AS e WHERE a.idesp=e.idesp GROUP BY a.Idalumno,Apealumno, nomesp ORDER BY 1

PROCEDIMIENTOS ALMACENADOS

Un procedimiento almacenado de SQL Server es un grupo de una o varias

instrucciones Transact-SQL

Sintaxis:

CREATE PROCEDURE <nombreProcedimiento>

@nombreParametro tipo = valor por defecto

AS

Sentencias

Page 12: Práctica sql server [fbdr]

Fundamentos de Bases de Datos Relacionales

Práctica SQL FBDR-2014 Página 12

Los parámetros se definen luego del nombre del procedimiento, comenzando el

nombre con un signo arroba (@). Los parámetros son locales al procedimiento.

Pueden declararse varios parámetros por procedimiento, se separan por comas.

Cuando el procedimiento es ejecutado, deben colocarse valores para cada uno de

los parámetros (en el orden que fueron definidos), a menos que se haya definido

un valor por defecto, en tal caso, pueden omitirse.

EJEMPLO:

Creamos un procedimiento que recibe el nombre de un autor como parámetro

para mostrar todos los libros del autor solicitado:

CREATE PROCEDURE pa_libros_autor

@autor varchar(30)

AS

SELECT titulo, editorial,precio

FROM libros

WHERE autor= @autor;

El procedimiento se ejecuta colocando "execute" (o "exec") seguido del nombre

del procedimiento y un valor para el parámetro:

EXEC pa_libros_autor 'Borges';

FUNCIONES

Una función escalar retorna un único valor. Como todas las funciones, se crean

con la instrucción "create function".

Page 13: Práctica sql server [fbdr]

Fundamentos de Bases de Datos Relacionales

Práctica SQL FBDR-2014 Página 13

La sintaxis básica es:

create function NOMBRE

(@PARAMETRO TIPO=VALORPORDEFECTO)

returns TIPO

begin

INSTRUCCIONES

return VALOR

end;

Luego del nombre se colocan (opcionalmente) los parámetros de entrada con su

tipo. La cláusula "returns" indica el tipo de dato retornado. El cuerpo de la función,

se define en un bloque "begin...end" que contiene las instrucciones que retornan el

valor.

EJEMPLO

Creamos una simple función denominada "f_promedio" que recibe 2 valores y

retorna el promedio:

create function f_promedio

(@valor1 decimal(4,2),

@valor2 decimal(4,2)

)

returns decimal (6,2)

as

begin

declare @resultado decimal(6,2)

set @resultado=(@valor1+@valor2)/2

return @resultado

end;

Page 14: Práctica sql server [fbdr]

Fundamentos de Bases de Datos Relacionales

Práctica SQL FBDR-2014 Página 14

En el ejemplo anterior se declara una variable local a la función (desaparece al

salir de la función) que calcula el resultado que se retornará.

Al hacer referencia a una función escalar, se debe especificar el propietario y el

nombre de la función:

select dbo.f_promedio(5.5,8.5);

Cuando llamamos a funciones que tienen definidos parámetros de entrada

DEBEMOS suministrar SIEMPRE un valor para él.

TRIGGER

Un "trigger" (disparador o desencadenador) es un tipo de procedimiento

almacenado que se ejecuta cuando se intenta modificar los datos de una tabla (o

vista).Se definen para una tabla (o vista) específica.Se crean para conservar la

integridad referencial y la coherencia entre los datos entre distintas tablas.

Si se intenta modificar (agregar, actualizar o eliminar) datos de una tabla en la que

se definió un disparador para alguna de estas acciones (inserción, actualización y

eliminación), el disparador se ejecuta (se dispara) en forma automática.

Sintaxis básica:

create triggre NOMBREDISPARADOR

on NOMBRETABLA

for EVENTO- insert, update o delete

as

SENTENCIAS

Page 15: Práctica sql server [fbdr]

Fundamentos de Bases de Datos Relacionales

Práctica SQL FBDR-2014 Página 15