Está en la página 1de 20

UNIDAD DE APRENDIZAJE 1

SQL AVANZADO
PARTE 1
M. Sc. Ing. Joel Reynaldo Alánez Durán
Vistas

• Una vista no es más que una tabla virtual que consiste de


diferentes columnas de una o más tablas.
• A diferencia de una tabla, una vista se almacena en la base de
datos como un objeto de consulta; por lo tanto, una vista es un
objeto que obtiene sus datos de una o más tablas.
• Las vistas que se encuentran basadas en esta definición son
conocidas como tablas subyacentes.
• Una vez definida la vista, es posible hacer referencia a esta como a
cualquier otra tabla en la BdD.
• Se utilizan para servir al propósito de ser un mecanismo de
seguridad.
Vistas

• Esto significa que una vista asegura que los usuarios puedan
recuperar y modificar sólo los datos que puedan ver con los
permisos que se les hayan otorgado, lo cual asegura que los
usuarios no puedan ver o acceder al resto de los datos en las
tablas subyacentes.
• Una vista también sirve como mecanismo para simplificar la
ejecución de consultas.
• Las consultas complejas se pueden almacenar en el formulario
como una vista y los datos de la vista se pueden extraer a través de
sentencias de consulta sencillas.
Vistas

• Existen 2 formas de crear vistas


CREATE VIEW vwCliente
• Utilizando el diseñador AS
gráfico SQL Server SELECT IDCliente,
Management Studio. (No nombreCliente, fono
aplica en MySQL) FROM Cliente

• Escribiendo una sentencia


Transact-SQL.
Procedimientos Almacenados

• Un procedimiento almacenado es una sentencia SQL escrita


con anterioridad que se “guardó” o almacenó en la BdD.
• Por convención, cuando se crea un procedimiento
almacenado, se le designará “usp” al principio de su nombre
(procedimiento almacenado creado por el usuario).
• Una de las cosas que ayudan a ahorrar tiempo cuando se
ejecute la misma consulta de forma repetida es la creación de
un procedimiento almacenado, que se puede ejecutar en el
ambiente de comandos de la base de datos.
SQL Server: Procedimientos Almacenados
Sintaxis de Creación: Declaración de Variables
CREATE PROCEDURE nomProc (Parámetros) DECLARE @nomVar tipoDato
AS Ejecución
BEGIN
EXEC/EXECUTE nombreProc parámetros
-- Lista de variables
IF - ELSE
-- Contenido del Proc
END IF (Condición_boolena)
Declaración de Parámetros. BEGIN
@nomParametro tipoDato END
Parámetros de salida ELSE
OUT/OUTPUT BEGIN
Lote de sentencias END
GO
MySQL: Procedimientos Almacenados
Sintaxis de Creación: Lote de sentencias
CREATE PROCEDURE nomProc DELIMETER $$
(lista Parametros) ....
BEGIN $$
-- Lista de variables Declaración de Variables del Sistema
-- Contenido del Proc
DECLARE nomVar tipoDato;
END
Variables del Usuario/Sesión
Declaración de Parámetros.
@variable
nomParametro tipoDato
IF - ELSE
Parámetros de salida
IF (Condición_boolena) THEN
OUT/INOUT
Ejecución ELSE
CALL nombreProc(parámetros) END IF;
Funciones

• Al igual que las funciones en los lenguajes de


programación, las funciones definidas por el usuario son
rutinas que aceptan parámetros, realizan una acción, como
un cálculo complejo, y devuelven el resultado de esa acción
como un valor. El valor devuelto puede ser un valor escalar
único o un conjunto de resultados.
Funciones

Tipos de Funciones
• Funciones Escalares
• Funciones con valores de tabla
• Insertado
• Múltiples Instrucciones
SQL Server: Funciones Escalares

Sintaxis: Ejemplo:
CREATE FUNCTION nombreFuncion CREATE FUNCTION ufcPromedio
(parámetros) (@n1 decimal(18,2), @n2
RETURNS tipoRetorno decimal(18,2) )
BEGIN RETURNS decimal(18,2)
//INSTRUCCIONES BEGIN
//usar SET para asignar valores DECLARE @resultado decimal(18,2)
RETURN valor SET @resultado=(@n1+@n2)/2
END RETURN @resultado
END
MySQL: Funciones Escalares

Sintaxis: Ejemplo:
DELIMITER $$ DELIMITER //
CREATE FUNCTION nombreFuncion CREATE FUNCTION ufcPromedio
(parámetros) (_n1 decimal(18,2), _n2 decimal(18,2) )
RETURNS tipoRetorno RETURNS decimal(18,2)
BEGIN BEGIN
//INSTRUCCIONES DECLARE _resultado decimal(18,2)
//usar SET para asignar valores SET _resultado=(_n1+_n2)/2
RETURN valor RETURN _resultado
END END
$$ //
SQL Server: IF - CASE
CASE
IF - ELSE
CASE expresion_entrada
IF (Condición_boolena)
WHEN valor_expresion THEN
BEGIN
expresion_resultado
END
[ ELSE else_expresion_resultado ]
ELSE
END
BEGIN
CASE con expresión Booleana
END
CASE
WHEN Boolean_expresion THEN
expresion_resultado]
[ ELSE else_expresion_resultado ]
END
MySQL: IF - CASE
IF - ELSE CASE
IF (Condición_boolena) THEN CASE expresion_entrada
ELSE WHEN valor_expresion THEN
END IF; expresion_resultado
[ ELSE else_expresion_resultado ]
END CASE;
CASE con expresión Booleana
CASE
WHEN Boolean_expresion THEN
expresion_resultado]
[ ELSE else_expresion_resultado ]
END CASE;
SQL Server: WHILE LOOP
Sintaxis
WHILE (Condición_boolena)
BEGIN

-- Instrucciones

END
MySQL: Bucles
WHILE REPEAT
WHILE (Condición_boolena) DO REPEAT
BEGIN
-- Instrucciones
-- Instrucciones UNTIL (Condición_boolena)
END REPEAT;
END WHILE;

También podría gustarte