Documentos de Académico
Documentos de Profesional
Documentos de Cultura
5-Creando Otros Objetos de Bases de Datos - Microsoft SQL Server 2017
5-Creando Otros Objetos de Bases de Datos - Microsoft SQL Server 2017
2020
Agregaciones y Agrupamientos
Utilizando la sintaxis de T-SQL, puede agregar los datos con una función escalares y
agrupo los datos utilizando la palabra clave GROUP BY para realizar estas
operaciones.
La agregación más común que se realiza es la suma, que suma todos los valores de
un conjunto de datos dado. La suma de los datos es compatible con la función SUM
de T-SQL:
SELECT
FROM
GROUP BY <column1>, <column2>,…
HAVING <condición>
Uso de Objetos Temporales en SQL Server
Al trabajar con T-SQL, puede encontrar a menudo la necesidad de almacenar
temporalmente un conjunto de datos para su uso posterior.
SQL Server tiene tres objetos temporales primarios
Expresiones de tabla comunes
Las variables de tablas
Las tablas temporales
Expresiones de Tabla Común
Una expresión de tabla común (CTE) es un conjunto de resultados temporales que se
define durante la ejecución de una sentencia SELECT, INSERT, UPDATE, DELETE o CREATE
VIEW.
El uso típico de las CTE son para reemplazar las vistas, los datos de grupo, realizar
recursividad, y crear múltiples referencias a una sola tabla.
Inmediatamente después de la definición de CTE, debe emitir una consulta que hace
referencia a la CTE.
T-SQL Programming Interface
expression_name es con lo que se hace referencia a la CTE en la consulta, y se requiere
Se suelen utilizar para almacenar pequeñas cantidades de datos (al menos de 500 filas) y sólo están
disponibles en el ámbito local, función o procedimiento almacenado en el que se han declarado.
BEGIN TRY
{ sql_statement |statement_block}
END TRY
BEGIN CATCH
[{ sql_statement |statement_block}]
END CATCH
BEGIN…END
BREAK
CONTINUE
GOTO
IF…ELSE
RETURN
WAITFOR
WHILE
BEGIN … END
El acoplamiento palabra clave BEGIN…. END simplemente envuelve un grupo o serie de
instrucciones T-SQL. Bloques BEGIN ... END se pueden anidar.
BEGIN
{
sql_Statement | statement_block
}
END USE [AdventureWorks2016CTP3];
BEGIN
DECLARE @StartingHireDate datetime = '12/31/2001'
SELECT e.BusinessEntityID, p.FirstName, p.LastName,
e.HireDate
FROM HumanResources.Employee e INNER JOIN
Person.Person p
ON e.BusinessEntityID = p.BusinessEntityID
WHERE HireDate <= @StartingHireDate
END
IF … ELSE
El bloque IF ... ELSE simplemente le dice al lenguaje de programación realizar una instrucción T-SQL o un conjunto de
sentencias si se cumple la condición especificada, o otra instrucción T-SQL o un conjunto de instrucciones si no se
cumple.
El IF puede existir sin el ELSE, pero el ELSE no puede existir sin el IF.
2020
Qué son las Vistas ?
Una vista es un objeto virtual o una tabla cuyo conjunto de resultados se deriva de una consulta.
Es muy similar a una tabla real, ya que contiene columnas y filas de datos.
Un punto interesante acerca de una vista indizada es que el optimizador de consultas puede
hacer referencia a fin de mejorar el rendimiento, aunque no se hace referencia en la consulta
Antes de crear una vista indizada, necesita asegurarse de que todas las tablas de referencia
reúnen una serie de requisitos.
• En primer lugar, todas las tablas a las que hace referencia deben estar contenidas dentro de
la misma base de datos.
• Si alguno de columnas calculadas en las tablas base no son deterministas, éstas deben ser
eliminadas. Determinista se define como siempre devolver el mismo valor o conjunto de
resultados.
VISTAS
USE [AdventureWorks2016CTP3];
GO
2020
Funciones Definidas por el Usuario
Las funciones definidas por el usuario son similares a las funciones en otros lenguajes
de programación.
Microsoft SQL Server le permite crear dos tipos de funciones: escalares y con valores
de tabla
Estas funciones permiten un tipo modular de la programación, donde el código y la
lógica se pueden incluir dentro de la función.
Otras aplicaciones, las rutinas y los objetos de base de datos pueden utilizar la
función.
Este enfoque también permite colocar las normas y la gobernanza en torno a cómo se
desarrolla y se despliega el código.
Las funciones son código T-SQL que puede aceptar parámetros, ejecutar la lógica y
cálculos complejos, y devolver datos.
Las funciones escalares devuelven un solo valor, y las funciones con valores de tabla
devuelven un conjunto de resultados.
Las funciones pueden ser utilizadas como CHECK CONSTRAINST en tablas, por vista,
para definir una columna en una sentencia SELECT, y de muchas otras maneras
Parametrización de Funciones
Un parámetro, en el ámbito de la programación de la función T-SQL, es un valor de entrada que se puede
pasar de la función de llamada en el código.
Un parámetro puede ser ajustado a una constante, una columna de una tabla, una expresión, y otros valores.
Las funciones pueden contener tres tipos de parámetros:
• Entrada: Es el valor pasado en el cuerpo de la función.
• Opcional: Como su nombre lo indica, este parámetro no es necesario para ejecutar la función.
• Predeterminado: Este parámetro indica cuando un valor se asigna al parámetro durante la creación. En
otras palabras, es un valor que se especifica cuando se crea la función.
-- Parametro de entrada
CREATE FUNCTION dbo.Input
@parameter1 int
-- Parametro Opcional
CREATE FUNCTION dbo.Optional
@parameter1 int = NULL
-- Parametro Predeterminado
CREATE FUNCTION dbo.Default
@parameter1 int = 1
Ejemplo de Función
CREATE FUNCTION dbo.GetEmployeeAge
(
-- Add the parameters for the function here
@BirthDate datetime
)
RETURNS int
AS
BEGIN
-- Declare the return variable here
DECLARE @Age int
-- Add the T-SQL statements to compute the return value here
SELECT @Age = DATEDIFF(DAY, @BirthDate, GETDATE())
-- Return the result of the function
RETURN @Age
END
GO
la función de instrucción múltiple ofrece la posibilidad de incluir lógica dentro del cuerpo de la función.
Una función con valores de tabla se puede utilizar en la misma forma que una tabla o vista se utiliza en una
sentencia SELECT.
Puede hacer join a esta función como si fuera una tabla, o puede insertar los resultados en una variable de
tabla o en una tabla temporal.
Una limitación específica a las funciones escalares es que no pueden devolver texto, ntext, image, cursor, o datos
timestamp.
Las funciones definidas por el usuario no se pueden utilizar para modificar el estado de base de datos.
Utilización de funciones en una declaración SELECT podría afectar negativamente al rendimiento de la consulta. Esto es
debido a que la función se llama una vez para cada fila devuelta
Procedimientos Almacenados
2020
Definición de Store Procedure
Los procedimientos almacenados son un conjunto de sentencias SQL (una o más) normalmente agrupados para realizar
una rutina específica
Los procedimientos almacenados se pueden crear en cualquier base de datos definida por el usuario y la base de datos
del sistema, excepto la base de datos de recursos.
Son comparables a las funciones instrucciones múltiples, pero que cuentan con características y flexibilidad que no son
posibles dentro de las funciones.
Dado que las operaciones de bases de datos se pueden realizar dentro de los procedimientos almacenados, que
proporcionan un alto nivel de seguridad
En esencia, los procedimientos almacenados crean un nivel de abstracción para los permisos, en lugar de los derechos
que se conceda al usuario sobre SELECT, INSERT, UPDATE o DELETE, el usuario se puede conceder derechos de ejecución a
un procedimiento almacenado.
Ejemplo de Store Procedure
USE [AdventureWorks2016CTP3]
EXEC dbo.PurchaseOrderInformation
Tipos de Procedimientos Almacenados
Definida por el usuario: Un procedimiento definido por el usuario se puede crear en una base de datos definida por el
usuario o en todas las bases de datos del sistema excepto en la base de datos Resource
Sistema: Los procedimientos del sistema se incluyen con SQL Server. Están almacenados físicamente en la base de datos
interna y oculta Resource y se muestran de forma lógica en el esquema sys de cada base de datos definida por el sistema
y por el usuario
Temporal: Los procedimientos temporales son iguales que los procedimientos permanentes salvo porque se almacenan
en tempdb.
Extendido definida por el usuario: Los procedimientos extendidos le permiten crear sus propias rutinas externas en un
lenguaje de programación como puede ser C.
La creación de un procedimiento almacenado con parámetros permite que los programas en las llamadas
pasen valores en el procedimiento.
Los parámetros de los procedimientos almacenados difieren de las funciones en la que puede especificar la
dirección, si se trata de un parámetro de entrada o de salida.
Los procedimientos almacenados pueden tener parámetros opcionales y predeterminados similares a los de
las funciones.
2020
Definición de Disparadores
Disparadores de manipulación de datos son conjuntos de instrucciones T-SQL que realizan una acción
específica.
Si se ejecuta INSERT en una tabla, el desencadenador INSTEAD OF se ejecutará en el lugar de los comandos
INSERT real. En otras palabras, el insert no se ejecuta y el código dentro de la desencadenador DML se ejecuta
en su lugar, como parte de la operación del trigger
Ejemplo de Trigger