Post on 29-Jun-2015
description
Fundamentos de Bases de Datos Relacionales
Práctica SQL FBDR-2014 Página 1
Tema: SQL SERVER
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.
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)
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);
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 >
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>
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
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.-
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
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:
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
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".
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;
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
Fundamentos de Bases de Datos Relacionales
Práctica SQL FBDR-2014 Página 15