Está en la página 1de 36

BASE DE DATOS

AVANZADAS Y BIG DATA

UPN.EDU.PE
Semana 01

Estructuras de Bloques y Control T/SQL


Presentación de la sesión

Logro de sesión
Al término de la sesión los estudiantes comprenden los principios del código de ética del CIP,
además podrán implementar estructuras de bloque y control con Transact SQL para resolver
lógica de programación en una base de datos.

Temario
• Presentación del sílabo del curso. Difusión del protocolo de seguridad del laboratorio
• Código de ética del ingeniero y su relación con el ejercicio profesional.
• Introducción a Transact-SQL (T-SQL)
• Estructuras de Bloques
• Estructuras de Control: IF, CASE, LOOP, FOR, WHILE
Código de ética del ingeniero y su relación
con el ejercicio profesional
LA ÉTICA EN NUESTRA PROFESIÓN

https://cdlima.org.pe/wp-content/uploads/2019/05/C%c3%93DIGO-DE-%c3%89TICA-REVISI%c3%93N-2018.pdf
CÓDIGO DE ÉTICA DEL CIP

El Código de Ética del Colegio de Ingenieros del Perú - Consejo Departamental de Lima
(CIP - CDLima) es un documento que establece los principios éticos y las normas de
conducta que deben seguir los ingenieros colegiados en el ejercicio de su profesión. El
objetivo principal del código de ética es promover una conducta ética y profesional
responsable, que garantice la calidad de los servicios que ofrecen los ingenieros y
fomente la confianza y el respeto hacia la profesión.
CÓDIGO DE ÉTICA DEL CIP

Establece principios éticos fundamentales, tales como la integridad, la honestidad, la confidencialidad, la


responsabilidad social y ambiental, el respeto a los derechos humanos, la igualdad de oportunidades y la
no discriminación. También define normas de conducta específicas que los ingenieros colegiados deben
seguir en su desempeño profesional, como la obligación de actuar con independencia, objetividad y
competencia, de no aceptar sobornos o gratificaciones indebidas, de respetar la propiedad intelectual y de
cumplir con las leyes y reglamentos aplicables.
CÓDIGO DE ÉTICA DEL CIP
• Identifique una situación en la que se pueda evidenciar la falta de ética en el ejercicio de nuestra
profesión.
¿Qué es una estructura de bloques?
¿Qué es una estructura de control?
Introducción a Transact-SQL (T-SQL)
SQL

SQL (Structured Query Language), Lenguaje


Estructurado de Consulta es el lenguaje utilizado
para definir, controlar y acceder a los datos
almacenados en una base de datos relacional.

Como ejemplos de sistemas gestores de bases de


datos que utilizan SQL podemos citar DB2, SQL
Server, Oracle, MySql, Sybase, PostgreSQL o Access.

El SQL es un lenguaje universal que se emplea en


cualquier sistema gestor de bases de datos
relacional. Tiene un estándar definido, a partir del
cual cada sistema gestor ha desarrollado su versión
propia.
TRANSACT / SQL (T-SQL)

Es un lenguaje muy potente que nos permite definir casi


cualquier tarea que queramos efectuar sobre la base de
datos. TRANSACT-SQL va más allá de un lenguaje SQL
cualquiera ya que incluye características propias de
cualquier lenguaje de programación, características que
nos permiten definir la lógica necesaria para el
tratamiento de la información

• Tipos de datos.
• Definición de variables.
• Estructuras de control de flujo.
• Gestión de excepciones.
• Funciones predefinidas.
TRANSACT / SQL
TIPOS DE DATOS

Numéricos exactos Numéricos Cadenas de Cadenas binarias


aproximados caracteres
bigint binary
numeric float char varbinary
bit real varchar image
smallint text
Fecha y hora Otros
decimal
date Cadenas de
smallmoney caracteres Unicode
datetimeoffset
int
datetime2 nchar
tinyint
smalldatetime nvarchar
money
datetime ntext

time
MANEJO DE VARIABLES

✓ Una variable es una entidad a la que se asigna un valor. Este valor puede cambiar durante el proceso donde se
utiliza la variable. SQL Server tiene dos tipos de variables: locales y globales.

✓ Las variables locales están definidas por el usuario, mientras que las variables globales las suministra el
sistema y están predefinidas.

Variable Global Variable Local


VARIABLES GLOBALES

--La version del SQL Server


Print '1. Version:' + @@version
--Lenguaje del aplicativo
Print '2. Lenguaje:'+@@language
--Nombre del servidor
Print '3. Servidor:'+@@servername
--Nro. de conexiones permitidas
Print '4. Conexiones:'+ str(@@max_connections)
Go

*La función str() permite convertir un valor numérico en cadena, esto es necesario para concatenar los valores numérico con una cadena
VARIABLES LOCALES
✓ Las variables locales se declaran, nombran y escriben mediante la palabra clave declare, y reciben un valor inicial
mediante una instrucción Select o Set.
✓ Los nombres de las variables locales deben empezar con el símbolo “@”. A cada variable local se le debe asignar
un tipo de dato definido por el usuario o un tipo de dato suministrado por el sistema distinto de text, image o
sysname.

Use Negocios
go --Ejemplo 2
--Ejemplo 1 Declare @v_max_precio decimal
Declare @v_preciouni decimal Select @v_max_precio=MAX(precioUnidad) from
Set @v_preciouni = 5 Compras.productos
Select * From Compras.Productos P --imprimir los valores de las variables
Where P.precioUnidad < @v_preciouni print 'El mayor Precio es:'+str(@v_max_precio)
Go go
ESTRUCTURAS DE CONTROL
ESTRUCTURA DE CONTROL IF

✓ IF se utiliza para definir una condición que determina si se ejecutará la instrucción siguiente. La
instrucción SQL se ejecuta si la condición se cumple, es decir, si devuelve TRUE (verdadero).

✓ La palabra ELSE introduce una instrucción SQL alternativa que se ejecuta cuando la condición IF
devuelva FALSE.
IF

Use Negocios
Go

BEGIN
DECLARE @v_idemp int, @v_cantidad int
SET @v_idemp = 6
--Recuperar la cantidad de pedidos del empleado de codigo
6
SELECT @v_cantidad = COUNT(*)
FROM Ventas.pedidoscabe WHERE IdEmpleado = @v_idemp
--Evalua el valor de cantidad
IF @v_cantidad = 0
PRINT 'El empleado no ha realizado algún pedido'
ELSE IF @v_cantidad = 1
PRINT 'Ha registrado 1 pedido, continúe trabajando'
ELSE
PRINT 'Ha registrado muchos pedidos'
END
GO
ESTRUCTURA DE CONTROL CASE WHEN

✓ La estructura CASE evalúa una lista de condiciones y devuelve una de las varias expresiones de
resultado posibles.

✓ La expresión CASE tiene dos formatos:


✓ La expresión CASE sencilla compara una expresión con un conjunto de expresiones sencillas
para determinar el resultado.
✓ La expresión CASE buscada evalúa un conjunto de expresiones booleanas para determinar el
resultado.

✓ Ambos formatos admiten un argumento ELSE opcional.


CASE WHEN

Use Negocios
Go
SELECT IdPedido,
FechaPedido,
Destinatario ,
Case EnvioPedido
When 0 Then 'Envio Pendiente '
When 1 Then 'Ya Enviado'
End As [Estado del Envio]
FROM Ventas.pedidoscabe
go

*CASE WHEN también podemos usarlo en una consulta


CASE WHEN

Begin
Set Dateformat DMY
Declare @v_fna DATE = '18/04/80'
Declare @v_edad Smallint
Declare @v_etapaGeneracional varchar(50)
Set @v_edad = DateDiff(yy,@v_fna,getdate())
Set @v_etapaGeneracional = Case
When @v_edad < 1 Then 'Bebe'
When @v_edad <= 5 Then 'Infante'
When @v_edad <=12 Then 'Niño'
When @v_edad <=14 Then 'Puber'
When @v_edad <=14 Then 'Adolescente'
When @v_edad <=30 Then 'Joven'
When @v_edad <65 Then 'Adulto'
Else 'Adulto Mayor '
End

Print 'La etapa generacional es: '+@v_etapaGeneracional


End
go

*La función DATEIFF() devuelve el tiempo transcurrido entre dos fechas, en años YY, meses MM, días DD
ESTRUCTURA DE CONTROL WHILE

✓ Ejecuta en forma repetitiva un conjunto o bloque de instrucciones SQL siempre que la condición
especificada sea verdadera.

✓ Se puede controlar la ejecución de instrucciones en el bucle WHILE con las palabras clave BREAK
y CONTINUE.
WHILE

BEGIN
DECLARE @v_numero tinyint = 0
WHILE @v_numero <= 10
BEGIN
PRINT @v_numero
--SET @v_numero = @v_numero + 1
SET @v_numero += 1

END
END
GO
WHILE

Begin
Set DateFormat DMY
Declare @v_fechaInicial Date='01/01/1990'
Declare @v_fechaFinal Date='31/12/2000'
Declare @v_Flag bit = 1
While @v_Flag = 1
Begin
Print @v_fechaInicial
Set
@v_fechaInicial=DateAdd(dd,1,@v_fechaInicial)
If @v_fechaInicial > @v_fechaFinal
Break
Else
Continue
End
End
go

*La función DATEADD() agrega elementos a una fecha, años YY, meses MM, días DD
Resolución de casos
ESTRUCTURAS DE CONTROL

Imprimir los múltiplos de 4 que se encuentran desde el 1 hasta el 100

DECLARE
@v_inicio smallint = 1,
@v_fin smallint = 40
WHILE @v_inicio < @v_fin
begin
IF @v_inicio%4 = 0
BEGIN
PRINT @v_inicio
END
set @v_inicio += 1
end
ESTRUCTURAS DE CONTROL

Enmascarar un nombre con asteriscos, el nombre enmascarado debe tener la misma longitud que el
nombre original

DECLARE
@v_nombre varchar(100),
@v_asteriscos varchar(100) = '',
@V_caracteres int
BEGIN
SET @v_nombre = 'ROBERTO'
SET @V_caracteres = LEN(@v_nombre)
WHILE @V_caracteres > 0
BEGIN
SET @v_asteriscos = @v_asteriscos + '*'
SET @V_caracteres -= 1
END
--mostramos el enmascarado
PRINT @v_nombre +' --> ' + @v_asteriscos
END
ESTRUCTURAS DE CONTROL

Invertir una frase

DECLARE
@v_frase VARCHAR(100),
@v_limite smallint,
@v_contador smallint,
@v_frase_al_reves VARCHAR(100) = ''
BEGIN
SET @v_frase = 'ESTA ES UNA PRUEBA DE FRASE'
SET @v_limite = LEN(@v_frase)
WHILE @v_limite > 0
BEGIN
SET @v_frase_al_reves = @v_frase_al_reves +
SUBSTRING(@v_frase, @v_limite, 1 )
SET @v_limite = @v_limite - 1
END
PRINT @v_frase_al_reves
END
GO
ESTRUCTURAS DE CONTROL

Invertir una frase, si encuentra una letra X debe finalizar el bucle

DECLARE
@v_frase VARCHAR(100),
@v_limite smallint,
@v_contador smallint,
@v_frase_al_reves VARCHAR(100) = ''
BEGIN
SET @v_frase = 'ESTA ES UNA PRUEBA DE FRXASE'
SET @v_limite = LEN(@v_frase)
WHILE @v_limite > 0
BEGIN
IF SUBSTRING(@v_frase, @v_limite, 1 ) = 'X'
BREAK

SET @v_frase_al_reves = @v_frase_al_reves +


SUBSTRING(@v_frase, @v_limite, 1 )
SET @v_limite = @v_limite - 1
END
PRINT @v_frase_al_reves
END
GO
¿Preguntas o comentarios?
CONCLUSIONES
Las estructuras de bloques y control en SQL Server son
herramientas poderosas para diseñar y programar
procedimientos almacenados y scripts de SQL de manera
eficiente y segura. Permiten controlar el flujo de ejecución
de un programa y aplicar lógica condicional y manejo de
errores a las operaciones que se realizan en la base de
datos.
REFERENCIAS BIBLIOGRÁFICAS

Introducción a Transact-SQL

https://learn.microsoft.com/es-es/training/modules/get-started-transact-sql-
programming/

Tipos de datos
https://learn.microsoft.com/es-es/sql/t-sql/data-types/data-types-transact-sql?view=sql-
server-ver16

Variables locales
https://learn.microsoft.com/es-es/sql/t-sql/language-elements/select-local-variable-
transact-sql?view=sql-server-ver16

Lenguaje de control de flujo


https://learn.microsoft.com/es-es/sql/t-sql/language-elements/control-of-flow?view=sql-
server-ver16
GRACIAS

También podría gustarte