SlideShare una empresa de Scribd logo
SQL Server 2019
Docente: César H. Patricio Peralta
Lenguaje SQL 2
La instrucción UPDATE
UPDATE nombre_tabla
SET columna1 = valor1
WHERE columna2 = valor2;
Lenguaje SQL 3
La instrucción UPDATE
• La modificación de tuplas se realiza con la sentencia UPDATE,
• Es posible elegir el conjunto de tuplas que se van a actualizar usando la clausula WHERE.
• Ejemplos: CUENTAS (COD, DNI, NSUCURS, SALDO)
• Suma del 5% de interés a los saldos de todas las cuentas.
• UPDATE CUENTAS SET SALDO = SALDO * 1.05;
• Suma del 1% de bonificación a aquellas cuentas cuyo saldo sea superior a 100.000 €.
• UPDATE CUENTAS SET SALDO = SALDO * 1.01
WHERE SALDO > 100000;
• Modificación de DNI y saldo simultáneamente para el código 898.
• UPDATE CUENTAS SET DNI='555', SALDO=10000
WHERE COD LIKE '898';
Lenguaje SQL 4
Modificar datos
UPDATE TESTEMP
SET SALARY = SALARY + 1000
WHERE WORKDEPT = 'C01'
Antes:
Después:
EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS
1000.00
800.00
800.00
800.00
- - - - -
52750.00
41250.00
38250.00
40175.00
25000.00
1965-01-01
1973-10-10
1975-04-05
1949-08-17
1998-06-25
A00
B01
C01
E01
C01
HAAS
THOMPSON
KWAN
GEYER
SMITH
000010
000020
000030
000050
000111
EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS
1000.00
800.00
800.00
800.00
- - - - -
52750.00
41250.00
39250.00
40175.00
26000.00
1965-01-01
1973-10-10
1975-04-05
1949-08-17
1998-06-25
A00
B01
C01
E01
C01
HAAS
THOMPSON
KWAN
GEYER
SMITH
000010
000020
000030
000050
000111
5
Búsqueda parcial- LIKE
• Obtener el apellido de todos los empleados cuyo apellido empiece
por G
SELECT LASTNAME
FROM EMPLOYEE
WHERE LASTNAME LIKE 'G%';
6
Búsqueda parcial – LIKE
Ejemplos con %
SELECT LASTNAME
FROM EMPLOYEE
WHERE LASTNAME LIKE '%SON';
THOMPSON
HENDERSON
ADAMSON
JEFFERSON
JOHNSON
THOMPSON
ADAMSON
MARINO
SELECT LASTNAME
FROM EMPLOYEE
WHERE LASTNAME LIKE '%M%N%';
7
Búsqueda parcial – LIKE
Ejemplos con _
• ¿Qué empleados tienen una C como segunda letra de su apellido?
SELECT LASTNAME
FROM EMPLOYEE
WHERE LASTNAME LIKE '_C%';
8
Búsqueda parcial – NOT LIKE
• Necesito todos los departamentos excepto aquellos cuyo número NO
empiece por 'D' SELECT DEPTNO, DEPTNAME
FROM DEPARTMENT
WHERE DEPTNO NOT LIKE 'D%';
DEPTNAME
DEPTNO
SPIFFY COMPUTER SERVICE DIV.
PLANNING
INFORMATION CENTER
SUPPORT SERVICES
OPERATIONS
SOFTWARE SUPPORT
A00
B01
C01
E01
E11
E21
9
Descripción IBM DB2 SQL Server Oracle MySQL
Convierte todos los caracteres a
minúsculas
LOWER LOWER LOWER LOWER
Convierte todos los caracteres a
mayúsculas
UPPER UPPER UPPER UPPER
Concatena dos cadenas CONCAT + CONCAT CONCAT
Funciones de cadena
10
Convertir Caracteres a Mayúsculas
• Para convertir Columnas
SELECT LOWER(Nombre)
FROM Clientes;
11
Convertir Caracteres a Minúsculas
• Para convertir Columnas
SELECT UPPER(Nombre)
FROM Clientes;
12
Concatenar
• Para Concatenar Columnas
SELECT NOMBRE+''+APELLIDO
FROM CLIENTES;
Lenguaje SQL 13
Funciones de columna
AVG MIN MAX COUNT DEPT
SUM
27303.59375000 15340.00 52750.00 32 8
873715.00
SELECT SUM(SALARY) AS SUM,
AVG(SALARY) AS AVG,
MIN(SALARY ) AS MIN,
MAX(SALARY) AS MAX,
COUNT(*) AS COUNT,
COUNT(DISTINCT WORKDEPT) AS DEPT
FROM EMPLOYEE
Lenguaje SQL 14
GROUP BY
SUM
WORKDEPT
A00
B01
C01
Necesito conocer los salarios de todos los
empleados de los departamentos A00, B01,
y C01. Además, para estos departamentos
quiero conocer su masa salarial.
SELECT WORKDEPT, SALARY
FROM EMPLOYEE
WHERE WORKDEPT IN ('A00', 'B01', 'C01')
ORDER BY WORKDEPT
SELECT WORKDEPT, SUM(SALARY) AS SUM
FROM EMPLOYEE
WHERE WORKDEPT IN ('A00', 'B01', 'C01')
GROUP BY WORKDEPT
ORDER BY WORKDEPT
128500.00
41250.00
90470.00
WORKDEPT
SALARY
A00
A00
A00
B01
C01
C01
C01
52750.00
46500.00
29250.00
41250.00
38250.00
23800.00
28420.00
15
BETWEEN
• Examina si el valor de la expresión está comprendido entre los dos
valores definidos por exp1 y exp2.
Tiene la siguiente sintaxis:
SELECT numemp, nombre
FROM empleados
WHERE ventas BETWEEN 100000 AND 500000;
SELECT numemp, nombre
FROM empleados
WHERE (ventas >= 100000) AND (ventas <= 500000);
ORDER BY
17
Borrar filas (DELETE)
• La sentencia DELETE elimina filas de una tabla.
DELETE * FROM pedidos;
Procedimientos Almacenados
(Stored Procedures)
BASE
DATOS
Resultados
Requerimientos
Internet
Procedimientos
Almacenados
Procedimiento Almacenado (Stored Procedure):
• Colección de sentencias SQL, con un nombre,
almacenadas en el servidor dentro de la BD.
Finalidad:
• Encapsular tareas repetitivas
Características:
• Soportan declaración de variables, ejecución condicional y
otras características de programación.
• Aceptan parámetros de entrada y devuelven valores.
• Devuelven un valor de estado que indica éxito o falla.
• Pueden llamar a otros procedimientos almacenados.
Procedimientos
Almacenados
Tipos:
• Del sistema
• Locales
• Temporales
• Remotos
• Extendidos
Procedimientos
Almacenados
Procedimientos almacenados del sistema:
Devuelven información de las tablas del
sistema y ejecutan tareas de
mantenimiento.
En SQL Server se almacenan en la BD
master y sus nombres comienzan con sp_:
sp_help
Procedimientos
Almacenados
Procedimientos almacenados locales:
• Creados en las BD de usuario individuales.
Procedimientos almacenados temporales:
• En SQL Server sus nombres empiezan con # o ## (si son
locales o globales).
• Los procedimientos almacenados temporales se crean
siempre en la BD tempdb
Procedimientos
Almacenados
Procedimientos almacenados remotos:
• Soportan la funcionalidad de consultas y operaciones
distribuidas.
Procedimientos almacenados extendidos:
• Se ejecutan fuera del ambiente del servidor.
• En SQL Server, sus nombres comienzan con xp_.
• Los procedimientos almacenados extendidos son funciones
dentro de una DLL que incrementan la funcionalidad de SQL
Server.
Procedimientos
Almacenados
Ventajas:
• Encapsulan la lógica de negocio y crean una lógica de la
aplicación reusable.
• Ocultan a los usuarios la complejidad subyacente y detalles
internos de la BD.
• Proveen mecanismos de seguridad.
• Mejoran el rendimiento.
• Reducen el tráfico en la red.
• Reducen la vulnerabilidad debido a los ataques de infiltración
de código intruso.
Procedimientos
Almacenados
Consideraciones:
• Se emplea la sentencia CREATE PROCEDURE.
• Pueden referenciar tablas, vistas, otros procedimientos y
tablas temporales.
• En SQL Server la sentencia CREATE PROCEDURE es un batch
por si mismo.
SQL Server:
CREATE PROC sp_listado
AS
SELECT * FROM TEXTO
GO
Creación de Procedimientos
Almacenados
Ejecución en SQL Server
• se emplea la sentencia EXECUTE seguida del nombre del
procedimiento y sus parámetros.
EXECUTE sp_listado
• En SQL Server se puede usar la forma abreviada de
EXECUTE: EXEC.
Creación de Procedimientos
Almacenados
• Los procedimientos pueden anidarse (un procedimiento
llama a otro):
• El nivel de anidamiento es limitado.
• Si un P1 llama a P2, P2 puede acceder a todos los
objetos definidos localmente en P1.
• En SQL Server puede haber hasta 32 niveles de
anidamiento, y la variable @@nestlevel guarda el nivel
de anidamiento actual.
Creación de Procedimientos
Almacenados
En SQL Server:
• Para ver información sobre los procedimientos:
sp_help , sp_helptext y sp_depends
• Para obtener una lista de procedimientos:
sp_stored_procedures
Creación de Procedimientos
Almacenados
Recomendaciones
• Cualificar los nombres de los objetos dentro del cuerpo del
procedimiento.
• En SQL Server, tratar de evitar romper la cadena de permisos.
• Realizar un procedimiento por cada tarea (cohesión).
• Crear, probar y corregir los procedimientos en el servidor,
luego hacer la prueba en los clientes.
• En SQL Server, para modificar un procedimiento se puede
usar la sentencia ALTER PROC[EDURE]
Ejemplo SQL Server:
ALTER PROC esquema1
AS
SELECT CONVERT(char(8),due_date,1) due_date,
codigo, nrocopia, SUBSTRING(title, 1, 30) titulo,
FROM Texto
ORDER BY due_date
GO
Modificación y Borrado
Borrado de un procedimiento (SQL Server):
DROP PROC[EDURE] esquema1
En el caso de SQL Server, también se puede borrar un
procedimiento desde SSMS
Modificación y Borrado
Parámetros de entrada:
• Permiten pasar información a los procedimientos.
• Se los debe declarar en la sentencia CREATE PROCEDURE.
Parámetros de Entrada
Consideraciones:
• Verificar al principio del procedimiento los valores de
entrada para detectar posibles valores inválidos.
• Proveer valores por defecto apropiados (SQL Server).
• El máximo número de parámetros depende del SGBDR.
• En el caso de SQL Server 2008, un procedimiento soporta
hasta 2100 parámetros de entrada.
Parámetros de Entrada
Consideraciones:
• El máximo número de variables locales es limitado
solamente por la memoria disponible (depende del
SGBDR).
• Los parámetros tienen un ámbito local al procedimiento.
Parámetros de Entrada
SQL Server:
CREATE PROC inserta_cliente
@codi varchar(10), @apell varchar(20), @ nomb varchar(20)
AS
Begin
Insert into Cliente(codigo, apellidos, nombres)
Values(@codi, @apell, @nomb)
End
Go
Parámetros de Entrada
Llamada a un procedimiento con parámetros de entrada:
• SQL Server
• Por referencia
• Por posición
En el caso de SQL Server, no se puede mezclar ambas formas
durante el llamado del procedimiento.
Parámetros de Entrada
Llamada por referencia:
• En la sentencia EXEC se especifica el parámetro de la
forma @parámetro = valor.
• El orden de los parámetros puede ser cualquiera.
• Se pueden omitir parámetros.
• Se puede especificar @parámetro = DEFAULT.
Parámetros de Entrada
Llamada por referencia:
EXEC listado_adultos
@nombre = 'Linda',
@apellidos = 'Lopez',
@calle = ‘Mantaro',
@ciudad = ‘Trujillo',
Parámetros de Entrada
Llamada por posición (SQL Server):
• Se pasan los valores en el mismo orden en que fueron
definidos el procedimiento.
• Se pueden omitir parámetros en valores por defecto,
pero no se debe interrumpir la secuencia.
• Se usan también valores nulos y DEFAULT como
parámetros.
Parámetros de Entrada
Llamada por posición (SQL Server):
EXEC listado_adultos 'Linda', 'Lopez', ‘Mantaro', ‘Trujillo',
Parámetros de Entrada
• Un procedimiento puede devolver información a quien lo llama en
forma de parámetros de salida.
• SQL Server usa OUTPUT al definir el procedimiento:
CREATE PROCEDURE dbo.mathtutor
@m1 smallint, @m2 smallint,
@resultado smallint OUTPUT
AS
SET @resultado = @m1 * @m2
GO
Parámetros de Salida
• Llamada a un procedimiento con parámetros de salida:
• SQL Server
• Se emplea la cláusula OUTPUT.
• Quien llama al procedimiento debe tener una variable para guardar
el valor de salida.
DECLARE @answer smallint
EXEC mathtutor 5, 6, @answer OUTPUT
SELECT 'El resultado es: ' , @answer
Parámetros de Salida
Estructuras de Control de
Flujo
1) IF…ELSE
La palabra clave IF con o sin la compañía ELSE se utiliza para
introducir 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 clave ELSE introduce una instrucción SQL alternativa
que se ejecuta cuando la condición IF devuelva FALSE (falso).
Estructuras de Control de Flujo
Estructuras de Control de Flujo
Base de Datos SQL Server 2025 - Estructuras
Ejemplos:
a) Cree un procedimiento almacenado que permita el ingreso de datos de
un usuario. El procedimiento tendrá los siguientes parámetros de entrada:
código, nombre, apellido paterno, apellido materno, fecha de nacimiento,
fecha de registro, tipo de documento, número de documento y código de
estado.
Considere las siguientes condiciones antes de ingresar un usuario:
El código del usuario debe ser único
No deberá ingresar usuarios cuya edad sea menor de 18 años
Base de Datos SQL Server 2025 - Estructuras
Base de Datos SQL Server 2025 - Estructuras
b) Cree un procedimiento almacenado que permita modificar los
datos de un inquilino. El procedimiento tendrá los siguientes
parámetros de entrada: código de usuario, nombre de aval,
apellido del aval, Haber básico, estado civil y lugar de trabajo
del inquilino. Así mismo, sólo se podrán modificar aquellos
inquilinos cuyo Haber básico sea menor a 600 soles.
CREATE PROCEDURE MODIFICA_INQUILINO
@COD_USUA char(6), @NOM_AVAL_INQ varchar(30),
@APELL_AVAL char(30), @HABER_BAS_INQ float,
@EST_CIVIL_INQ char(1), @LUG_TRAB_INQ varchar(50)
AS
-- Variables
Declare @HABER_BAS_INQ_ACTUAL float
-- Obtener el Haber Básico Actual del Inquilino
Select @HABER_BAS_INQ_ACTUAL = HABER_BAS_INQ
From INQUILINO
Where COD_USUA = @COD_USUA
-- Verificar el Haber Básico del Inquilino
If @HABER_BAS_INQ_ACTUAL>600
Begin
Select 'El Haber Básico del Inquilino debe ser menor a 600 soles'
Return
End
-- Actualizar los Datos
Update INQUILINO
Set COD_USUA = @COD_USUA,
NOM_AVAL_INQ = @NOM_AVAL_INQ,
APELL_AVAL = @APELL_AVAL,
HABER_BAS_INQ = @HABER_BAS_INQ,
EST_CIVIL_INQ = @EST_CIVIL_INQ,
LUG_TRAB_INQ = @LUG_TRAB_INQ
Where COD_USUA = @COD_USUA
2) WHILE
WHILE se utiliza para definir una condición para la ejecución repetida
de una instrucción o un bloque de instrucciones. Las instrucciones se
ejecutan reiteradamente siempre que la condición especificada es
verdadera.
La sintaxis de WHILE es
WHILE BOOLEAN_EXPRESION
EXPRESION_SQL
BREAK y CONTINUE controlan el funcionamiento de las instrucciones
dentro de un bucle while. BREAK permite salir del bucle while.
CONTINUE hace que el bucle while se inicie de nuevo.
6.1.2.7. CASE
La función CASE es una expresión especial de Transact SQL que permite
que se muestre un valor alternativo dependiendo de una columna. Este
cambio es temporal, con lo que no hay cambios permanentes en los
datos.
La función CASE está compuesta de:
• La palabra CASE
• El nombre de la columna que se va transformar
• Cláusulas WHEN que se especifican las expresiones que se van a
buscar y cláusulas THEN que especifican las expresiones que las van a
reemplazar
• La palabra END
Ejemplo:
Select COD_USUA, NOM_USUA, APEPATER_USUA, APEMATER_USUA,
Case Month(FEC_NAC_USUA)
When 1 Then 'Enero'
When 2 Then 'Febrero'
When 3 Then 'Marzo'
When 4 Then 'Abril'
When 5 Then 'Mayo'
When 6 Then 'Junio'
When 7 Then 'Julio'
When 8 Then 'Agosto'
When 9 Then 'Septiembre'
When 10 Then 'Octubre'
When 11 Then 'Noviembre'
When 12 Then 'Diciembre'
End As Mes_Nacimiento From USUARIO
Crear un sp que permita incrementar el haber básico de un inquilino en función
de su estado civil (20% para casados o viudos y 10% para los solteros y
divorciados). Asimismo, si el inquilino tiene una comisión aumentar su haber con
ese monto.
Create Procedure spIncHaberInquilino
@Inquilino Char(6), @Comision Numeric(10,2) = Null --Parámetro con valor por defecto
As
Begin -- Inicio del sp
-- Validar que el código y la descripcion no sean nulas
If( @Inquilino Is Null )
Begin
Print 'El código del inquilino no puede ser NULO!!!'
Return
End
-- Validar si el inquilino existe
If Not Exists(Select * From Inquilino Where Cod_Usua = @Inquilino)
Begin
Print 'Actualizacion cancelada. El inquilino no existe.'
Return
End
-- Variables locales para el proceso
Declare @HaberBasico Int
Declare @EstadoCivil Char(1)
Declare @IncrementoPorEstadoCivil Int
-- Determinar valores del inquilino
Select @HaberBasico = Haber_Bas_Inq, @EstadoCivil = Est_Civil_Inq
From Inquilino Where Cod_Usua = @Inquilino
-- Determinar porcentaje de incremento
If(@EstadoCivil In ('C','V'))
Set @IncrementoPorEstadoCivil = @HaberBasico * 0.20
Else
Set @IncrementoPorEstadoCivil = @HaberBasico * 0.10
-- Eliminar el departamento
Update Inquilino
Set Haber_Bas_Inq = Haber_Bas_Inq + @IncrementoPorEstadoCivil +
IsNull(@Comision,0)
Where Cod_Usua = @Inquilino
End
-- Fin del spIncHaberInquilino
FIN

Más contenido relacionado

PDF
SESION 05.pdf
PPTX
PROCEDIMIENTOS ALMACENADOS
PPTX
Procedimientos de almacenados sql server
PDF
Teoria procedimientos almacenados
PPTX
Procedimientos Almacenados
PPT
7.1. procedimientos almacenados
DOCX
Procedimientos almacenados..mañana
PPTX
Procedimientos Almacenados SQL SEVER.pptx
SESION 05.pdf
PROCEDIMIENTOS ALMACENADOS
Procedimientos de almacenados sql server
Teoria procedimientos almacenados
Procedimientos Almacenados
7.1. procedimientos almacenados
Procedimientos almacenados..mañana
Procedimientos Almacenados SQL SEVER.pptx

Similar a Base de Datos SQL Server 2025 - Estructuras (20)

PPTX
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
PPTX
Procedimientos almacenados
PDF
Procedimientos almacenados
PPTX
Ms SQL Server
PPTX
Procedimientos almacenados
PPT
1. introduccion a transact-sql
PDF
Funciones store proc_triggers
PDF
Manualitosqlserver
PPT
7090112 Clase Transact Sql Server
PPTX
Procedimientos almacenados
PPT
procedimientos almacenados
PPTX
Procedimientos almacenados
PPT
7.1. procedimientos almacenados
PDF
Guia lab11 bd
PPTX
Procedimientos Almacenados
PPT
APLICACIONES EMPRESARIALES
DOCX
Sesion10 - Funciones y procedimientos (Oracle)
DOCX
Procedimientos almacenados daniela
DOC
Sentencias Sql
PDF
Procedimientos almacenados en MySQL
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
Procedimientos almacenados
Procedimientos almacenados
Ms SQL Server
Procedimientos almacenados
1. introduccion a transact-sql
Funciones store proc_triggers
Manualitosqlserver
7090112 Clase Transact Sql Server
Procedimientos almacenados
procedimientos almacenados
Procedimientos almacenados
7.1. procedimientos almacenados
Guia lab11 bd
Procedimientos Almacenados
APLICACIONES EMPRESARIALES
Sesion10 - Funciones y procedimientos (Oracle)
Procedimientos almacenados daniela
Sentencias Sql
Procedimientos almacenados en MySQL
Publicidad

Más de CESARHERNANPATRICIOP1 (20)

PPTX
13introduccinalosprocesosysistemasdeipm-141212230232-conversion-gate01.pptx
PPTX
POO en SQL Server - Administración de Base de Datos.pptx
PPTX
Presentación - npm Angular en Visual Studio Code
PDF
S12_Material NOD.JS REACT - Visual Studio Code
PDF
Semana16 - Arboles PROGRAMACIÓN LÓGICA FUNCIONAL
PDF
S14 - Material- CONSULTAS DE BASE DE DATOS
PDF
S13 - Material- REPRESENTACIÓN CLAUSADA DEL CONOCIMIENTO
PDF
S12 - Material-1- SEMÁNTICA DE LOR PROGRAMAS LÓGICOS
PPTX
Semana 12 Clase ModulosLibrerias CRM.pptx
PPTX
Semana 13 Clase ModulosFuncionesPropias CRM.pptx
PPTX
Inteligencia artificial en la educación final 2025
PPTX
1-Introducción a la Inteligencia Artificial (IA) y su Aplicación en la Vida U...
PPTX
Inteligencia artificial en la educación 2025
PDF
Administracion_de_las_Bases_de_Datos.pdf
PDF
S11 - Estructura condicional en PHP (1).pdf
PDF
S03 - Lenguaje HTML - Formulario con PHP
PDF
S08.s01 -JS ESTRUCTURAS - programación web
PDF
S01 - Material-1. -Material-1 - Introducción a la Criptografía - Universidad ...
PDF
S02 - Material-1 - Introducción a la Criptografía - Universidad tecnológica d...
PPTX
S11.s2 - Material.pptx - criptografía asimétrica en criptografía
13introduccinalosprocesosysistemasdeipm-141212230232-conversion-gate01.pptx
POO en SQL Server - Administración de Base de Datos.pptx
Presentación - npm Angular en Visual Studio Code
S12_Material NOD.JS REACT - Visual Studio Code
Semana16 - Arboles PROGRAMACIÓN LÓGICA FUNCIONAL
S14 - Material- CONSULTAS DE BASE DE DATOS
S13 - Material- REPRESENTACIÓN CLAUSADA DEL CONOCIMIENTO
S12 - Material-1- SEMÁNTICA DE LOR PROGRAMAS LÓGICOS
Semana 12 Clase ModulosLibrerias CRM.pptx
Semana 13 Clase ModulosFuncionesPropias CRM.pptx
Inteligencia artificial en la educación final 2025
1-Introducción a la Inteligencia Artificial (IA) y su Aplicación en la Vida U...
Inteligencia artificial en la educación 2025
Administracion_de_las_Bases_de_Datos.pdf
S11 - Estructura condicional en PHP (1).pdf
S03 - Lenguaje HTML - Formulario con PHP
S08.s01 -JS ESTRUCTURAS - programación web
S01 - Material-1. -Material-1 - Introducción a la Criptografía - Universidad ...
S02 - Material-1 - Introducción a la Criptografía - Universidad tecnológica d...
S11.s2 - Material.pptx - criptografía asimétrica en criptografía
Publicidad

Último (20)

PDF
Sugerencias Didacticas 2023_Diseño de Estructuras Metalicas_digital.pdf
PDF
Informe Comision Investigadora Final distribución electrica años 2024 y 2025
PDF
Perfilaje de Pozos _20250624_222013_0000.pdf
DOCX
CONCEPTOS BASICOS DE LA PROGRAMACION STEP
PDF
Sustitucion_del_maiz_por_harina_integral_de_zapall.pdf
PPTX
Seminario de telecomunicaciones para ingeniería
PPTX
Notificacion e investigación de incidentes y accidentes de trabajo.pptx
PDF
Módulo-de Alcance-proyectos - Definición.pdf
PDF
Oficio SEC de formulación de cargos por el apagón del 25F en contra del CEN
PDF
prg2_t01_p01_Fundamentos POO - parte1.pdf
PPT
357161027-seguridad-industrial-diapositivas-ppt.ppt
PDF
Durabilidad del concreto en zonas costeras
DOCX
Cumplimiento normativo y realidad laboral
PDF
Electricidad-Estatica-Peligros-Prevencion.pdf
PDF
SEC formula cargos al Consejo Directivo del Coordinador y a ocho eléctricas p...
PDF
Informe Estudio Final Apagon del 25 de febrero
DOC
informacion acerca de la crianza tecnificada de cerdos
PDF
TESTAMENTO DE DESCRIPTIVA ..............
PPTX
clase MICROCONTROLADORES ago-dic 2019.pptx
PPTX
MARITIMO Y LESGILACION DEL MACO TRANSPORTE
Sugerencias Didacticas 2023_Diseño de Estructuras Metalicas_digital.pdf
Informe Comision Investigadora Final distribución electrica años 2024 y 2025
Perfilaje de Pozos _20250624_222013_0000.pdf
CONCEPTOS BASICOS DE LA PROGRAMACION STEP
Sustitucion_del_maiz_por_harina_integral_de_zapall.pdf
Seminario de telecomunicaciones para ingeniería
Notificacion e investigación de incidentes y accidentes de trabajo.pptx
Módulo-de Alcance-proyectos - Definición.pdf
Oficio SEC de formulación de cargos por el apagón del 25F en contra del CEN
prg2_t01_p01_Fundamentos POO - parte1.pdf
357161027-seguridad-industrial-diapositivas-ppt.ppt
Durabilidad del concreto en zonas costeras
Cumplimiento normativo y realidad laboral
Electricidad-Estatica-Peligros-Prevencion.pdf
SEC formula cargos al Consejo Directivo del Coordinador y a ocho eléctricas p...
Informe Estudio Final Apagon del 25 de febrero
informacion acerca de la crianza tecnificada de cerdos
TESTAMENTO DE DESCRIPTIVA ..............
clase MICROCONTROLADORES ago-dic 2019.pptx
MARITIMO Y LESGILACION DEL MACO TRANSPORTE

Base de Datos SQL Server 2025 - Estructuras

  • 1. SQL Server 2019 Docente: César H. Patricio Peralta
  • 2. Lenguaje SQL 2 La instrucción UPDATE UPDATE nombre_tabla SET columna1 = valor1 WHERE columna2 = valor2;
  • 3. Lenguaje SQL 3 La instrucción UPDATE • La modificación de tuplas se realiza con la sentencia UPDATE, • Es posible elegir el conjunto de tuplas que se van a actualizar usando la clausula WHERE. • Ejemplos: CUENTAS (COD, DNI, NSUCURS, SALDO) • Suma del 5% de interés a los saldos de todas las cuentas. • UPDATE CUENTAS SET SALDO = SALDO * 1.05; • Suma del 1% de bonificación a aquellas cuentas cuyo saldo sea superior a 100.000 €. • UPDATE CUENTAS SET SALDO = SALDO * 1.01 WHERE SALDO > 100000; • Modificación de DNI y saldo simultáneamente para el código 898. • UPDATE CUENTAS SET DNI='555', SALDO=10000 WHERE COD LIKE '898';
  • 4. Lenguaje SQL 4 Modificar datos UPDATE TESTEMP SET SALARY = SALARY + 1000 WHERE WORKDEPT = 'C01' Antes: Después: EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS 1000.00 800.00 800.00 800.00 - - - - - 52750.00 41250.00 38250.00 40175.00 25000.00 1965-01-01 1973-10-10 1975-04-05 1949-08-17 1998-06-25 A00 B01 C01 E01 C01 HAAS THOMPSON KWAN GEYER SMITH 000010 000020 000030 000050 000111 EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS 1000.00 800.00 800.00 800.00 - - - - - 52750.00 41250.00 39250.00 40175.00 26000.00 1965-01-01 1973-10-10 1975-04-05 1949-08-17 1998-06-25 A00 B01 C01 E01 C01 HAAS THOMPSON KWAN GEYER SMITH 000010 000020 000030 000050 000111
  • 5. 5 Búsqueda parcial- LIKE • Obtener el apellido de todos los empleados cuyo apellido empiece por G SELECT LASTNAME FROM EMPLOYEE WHERE LASTNAME LIKE 'G%';
  • 6. 6 Búsqueda parcial – LIKE Ejemplos con % SELECT LASTNAME FROM EMPLOYEE WHERE LASTNAME LIKE '%SON'; THOMPSON HENDERSON ADAMSON JEFFERSON JOHNSON THOMPSON ADAMSON MARINO SELECT LASTNAME FROM EMPLOYEE WHERE LASTNAME LIKE '%M%N%';
  • 7. 7 Búsqueda parcial – LIKE Ejemplos con _ • ¿Qué empleados tienen una C como segunda letra de su apellido? SELECT LASTNAME FROM EMPLOYEE WHERE LASTNAME LIKE '_C%';
  • 8. 8 Búsqueda parcial – NOT LIKE • Necesito todos los departamentos excepto aquellos cuyo número NO empiece por 'D' SELECT DEPTNO, DEPTNAME FROM DEPARTMENT WHERE DEPTNO NOT LIKE 'D%'; DEPTNAME DEPTNO SPIFFY COMPUTER SERVICE DIV. PLANNING INFORMATION CENTER SUPPORT SERVICES OPERATIONS SOFTWARE SUPPORT A00 B01 C01 E01 E11 E21
  • 9. 9 Descripción IBM DB2 SQL Server Oracle MySQL Convierte todos los caracteres a minúsculas LOWER LOWER LOWER LOWER Convierte todos los caracteres a mayúsculas UPPER UPPER UPPER UPPER Concatena dos cadenas CONCAT + CONCAT CONCAT Funciones de cadena
  • 10. 10 Convertir Caracteres a Mayúsculas • Para convertir Columnas SELECT LOWER(Nombre) FROM Clientes;
  • 11. 11 Convertir Caracteres a Minúsculas • Para convertir Columnas SELECT UPPER(Nombre) FROM Clientes;
  • 12. 12 Concatenar • Para Concatenar Columnas SELECT NOMBRE+''+APELLIDO FROM CLIENTES;
  • 13. Lenguaje SQL 13 Funciones de columna AVG MIN MAX COUNT DEPT SUM 27303.59375000 15340.00 52750.00 32 8 873715.00 SELECT SUM(SALARY) AS SUM, AVG(SALARY) AS AVG, MIN(SALARY ) AS MIN, MAX(SALARY) AS MAX, COUNT(*) AS COUNT, COUNT(DISTINCT WORKDEPT) AS DEPT FROM EMPLOYEE
  • 14. Lenguaje SQL 14 GROUP BY SUM WORKDEPT A00 B01 C01 Necesito conocer los salarios de todos los empleados de los departamentos A00, B01, y C01. Además, para estos departamentos quiero conocer su masa salarial. SELECT WORKDEPT, SALARY FROM EMPLOYEE WHERE WORKDEPT IN ('A00', 'B01', 'C01') ORDER BY WORKDEPT SELECT WORKDEPT, SUM(SALARY) AS SUM FROM EMPLOYEE WHERE WORKDEPT IN ('A00', 'B01', 'C01') GROUP BY WORKDEPT ORDER BY WORKDEPT 128500.00 41250.00 90470.00 WORKDEPT SALARY A00 A00 A00 B01 C01 C01 C01 52750.00 46500.00 29250.00 41250.00 38250.00 23800.00 28420.00
  • 15. 15 BETWEEN • Examina si el valor de la expresión está comprendido entre los dos valores definidos por exp1 y exp2. Tiene la siguiente sintaxis: SELECT numemp, nombre FROM empleados WHERE ventas BETWEEN 100000 AND 500000; SELECT numemp, nombre FROM empleados WHERE (ventas >= 100000) AND (ventas <= 500000);
  • 17. 17 Borrar filas (DELETE) • La sentencia DELETE elimina filas de una tabla. DELETE * FROM pedidos;
  • 19. Procedimientos Almacenados Procedimiento Almacenado (Stored Procedure): • Colección de sentencias SQL, con un nombre, almacenadas en el servidor dentro de la BD. Finalidad: • Encapsular tareas repetitivas
  • 20. Características: • Soportan declaración de variables, ejecución condicional y otras características de programación. • Aceptan parámetros de entrada y devuelven valores. • Devuelven un valor de estado que indica éxito o falla. • Pueden llamar a otros procedimientos almacenados. Procedimientos Almacenados
  • 21. Tipos: • Del sistema • Locales • Temporales • Remotos • Extendidos Procedimientos Almacenados
  • 22. Procedimientos almacenados del sistema: Devuelven información de las tablas del sistema y ejecutan tareas de mantenimiento. En SQL Server se almacenan en la BD master y sus nombres comienzan con sp_: sp_help Procedimientos Almacenados
  • 23. Procedimientos almacenados locales: • Creados en las BD de usuario individuales. Procedimientos almacenados temporales: • En SQL Server sus nombres empiezan con # o ## (si son locales o globales). • Los procedimientos almacenados temporales se crean siempre en la BD tempdb Procedimientos Almacenados
  • 24. Procedimientos almacenados remotos: • Soportan la funcionalidad de consultas y operaciones distribuidas. Procedimientos almacenados extendidos: • Se ejecutan fuera del ambiente del servidor. • En SQL Server, sus nombres comienzan con xp_. • Los procedimientos almacenados extendidos son funciones dentro de una DLL que incrementan la funcionalidad de SQL Server. Procedimientos Almacenados
  • 25. Ventajas: • Encapsulan la lógica de negocio y crean una lógica de la aplicación reusable. • Ocultan a los usuarios la complejidad subyacente y detalles internos de la BD. • Proveen mecanismos de seguridad. • Mejoran el rendimiento. • Reducen el tráfico en la red. • Reducen la vulnerabilidad debido a los ataques de infiltración de código intruso. Procedimientos Almacenados
  • 26. Consideraciones: • Se emplea la sentencia CREATE PROCEDURE. • Pueden referenciar tablas, vistas, otros procedimientos y tablas temporales. • En SQL Server la sentencia CREATE PROCEDURE es un batch por si mismo. SQL Server: CREATE PROC sp_listado AS SELECT * FROM TEXTO GO Creación de Procedimientos Almacenados
  • 27. Ejecución en SQL Server • se emplea la sentencia EXECUTE seguida del nombre del procedimiento y sus parámetros. EXECUTE sp_listado • En SQL Server se puede usar la forma abreviada de EXECUTE: EXEC. Creación de Procedimientos Almacenados
  • 28. • Los procedimientos pueden anidarse (un procedimiento llama a otro): • El nivel de anidamiento es limitado. • Si un P1 llama a P2, P2 puede acceder a todos los objetos definidos localmente en P1. • En SQL Server puede haber hasta 32 niveles de anidamiento, y la variable @@nestlevel guarda el nivel de anidamiento actual. Creación de Procedimientos Almacenados
  • 29. En SQL Server: • Para ver información sobre los procedimientos: sp_help , sp_helptext y sp_depends • Para obtener una lista de procedimientos: sp_stored_procedures Creación de Procedimientos Almacenados
  • 30. Recomendaciones • Cualificar los nombres de los objetos dentro del cuerpo del procedimiento. • En SQL Server, tratar de evitar romper la cadena de permisos. • Realizar un procedimiento por cada tarea (cohesión). • Crear, probar y corregir los procedimientos en el servidor, luego hacer la prueba en los clientes.
  • 31. • En SQL Server, para modificar un procedimiento se puede usar la sentencia ALTER PROC[EDURE] Ejemplo SQL Server: ALTER PROC esquema1 AS SELECT CONVERT(char(8),due_date,1) due_date, codigo, nrocopia, SUBSTRING(title, 1, 30) titulo, FROM Texto ORDER BY due_date GO Modificación y Borrado
  • 32. Borrado de un procedimiento (SQL Server): DROP PROC[EDURE] esquema1 En el caso de SQL Server, también se puede borrar un procedimiento desde SSMS Modificación y Borrado
  • 33. Parámetros de entrada: • Permiten pasar información a los procedimientos. • Se los debe declarar en la sentencia CREATE PROCEDURE. Parámetros de Entrada
  • 34. Consideraciones: • Verificar al principio del procedimiento los valores de entrada para detectar posibles valores inválidos. • Proveer valores por defecto apropiados (SQL Server). • El máximo número de parámetros depende del SGBDR. • En el caso de SQL Server 2008, un procedimiento soporta hasta 2100 parámetros de entrada. Parámetros de Entrada
  • 35. Consideraciones: • El máximo número de variables locales es limitado solamente por la memoria disponible (depende del SGBDR). • Los parámetros tienen un ámbito local al procedimiento. Parámetros de Entrada
  • 36. SQL Server: CREATE PROC inserta_cliente @codi varchar(10), @apell varchar(20), @ nomb varchar(20) AS Begin Insert into Cliente(codigo, apellidos, nombres) Values(@codi, @apell, @nomb) End Go Parámetros de Entrada
  • 37. Llamada a un procedimiento con parámetros de entrada: • SQL Server • Por referencia • Por posición En el caso de SQL Server, no se puede mezclar ambas formas durante el llamado del procedimiento. Parámetros de Entrada
  • 38. Llamada por referencia: • En la sentencia EXEC se especifica el parámetro de la forma @parámetro = valor. • El orden de los parámetros puede ser cualquiera. • Se pueden omitir parámetros. • Se puede especificar @parámetro = DEFAULT. Parámetros de Entrada
  • 39. Llamada por referencia: EXEC listado_adultos @nombre = 'Linda', @apellidos = 'Lopez', @calle = ‘Mantaro', @ciudad = ‘Trujillo', Parámetros de Entrada
  • 40. Llamada por posición (SQL Server): • Se pasan los valores en el mismo orden en que fueron definidos el procedimiento. • Se pueden omitir parámetros en valores por defecto, pero no se debe interrumpir la secuencia. • Se usan también valores nulos y DEFAULT como parámetros. Parámetros de Entrada
  • 41. Llamada por posición (SQL Server): EXEC listado_adultos 'Linda', 'Lopez', ‘Mantaro', ‘Trujillo', Parámetros de Entrada
  • 42. • Un procedimiento puede devolver información a quien lo llama en forma de parámetros de salida. • SQL Server usa OUTPUT al definir el procedimiento: CREATE PROCEDURE dbo.mathtutor @m1 smallint, @m2 smallint, @resultado smallint OUTPUT AS SET @resultado = @m1 * @m2 GO Parámetros de Salida
  • 43. • Llamada a un procedimiento con parámetros de salida: • SQL Server • Se emplea la cláusula OUTPUT. • Quien llama al procedimiento debe tener una variable para guardar el valor de salida. DECLARE @answer smallint EXEC mathtutor 5, 6, @answer OUTPUT SELECT 'El resultado es: ' , @answer Parámetros de Salida
  • 45. 1) IF…ELSE La palabra clave IF con o sin la compañía ELSE se utiliza para introducir 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 clave ELSE introduce una instrucción SQL alternativa que se ejecuta cuando la condición IF devuelva FALSE (falso). Estructuras de Control de Flujo
  • 48. Ejemplos: a) Cree un procedimiento almacenado que permita el ingreso de datos de un usuario. El procedimiento tendrá los siguientes parámetros de entrada: código, nombre, apellido paterno, apellido materno, fecha de nacimiento, fecha de registro, tipo de documento, número de documento y código de estado. Considere las siguientes condiciones antes de ingresar un usuario: El código del usuario debe ser único No deberá ingresar usuarios cuya edad sea menor de 18 años
  • 51. b) Cree un procedimiento almacenado que permita modificar los datos de un inquilino. El procedimiento tendrá los siguientes parámetros de entrada: código de usuario, nombre de aval, apellido del aval, Haber básico, estado civil y lugar de trabajo del inquilino. Así mismo, sólo se podrán modificar aquellos inquilinos cuyo Haber básico sea menor a 600 soles.
  • 52. CREATE PROCEDURE MODIFICA_INQUILINO @COD_USUA char(6), @NOM_AVAL_INQ varchar(30), @APELL_AVAL char(30), @HABER_BAS_INQ float, @EST_CIVIL_INQ char(1), @LUG_TRAB_INQ varchar(50) AS -- Variables Declare @HABER_BAS_INQ_ACTUAL float -- Obtener el Haber Básico Actual del Inquilino Select @HABER_BAS_INQ_ACTUAL = HABER_BAS_INQ From INQUILINO Where COD_USUA = @COD_USUA -- Verificar el Haber Básico del Inquilino If @HABER_BAS_INQ_ACTUAL>600 Begin Select 'El Haber Básico del Inquilino debe ser menor a 600 soles' Return End
  • 53. -- Actualizar los Datos Update INQUILINO Set COD_USUA = @COD_USUA, NOM_AVAL_INQ = @NOM_AVAL_INQ, APELL_AVAL = @APELL_AVAL, HABER_BAS_INQ = @HABER_BAS_INQ, EST_CIVIL_INQ = @EST_CIVIL_INQ, LUG_TRAB_INQ = @LUG_TRAB_INQ Where COD_USUA = @COD_USUA
  • 54. 2) WHILE WHILE se utiliza para definir una condición para la ejecución repetida de una instrucción o un bloque de instrucciones. Las instrucciones se ejecutan reiteradamente siempre que la condición especificada es verdadera. La sintaxis de WHILE es WHILE BOOLEAN_EXPRESION EXPRESION_SQL BREAK y CONTINUE controlan el funcionamiento de las instrucciones dentro de un bucle while. BREAK permite salir del bucle while. CONTINUE hace que el bucle while se inicie de nuevo.
  • 55. 6.1.2.7. CASE La función CASE es una expresión especial de Transact SQL que permite que se muestre un valor alternativo dependiendo de una columna. Este cambio es temporal, con lo que no hay cambios permanentes en los datos. La función CASE está compuesta de: • La palabra CASE • El nombre de la columna que se va transformar • Cláusulas WHEN que se especifican las expresiones que se van a buscar y cláusulas THEN que especifican las expresiones que las van a reemplazar • La palabra END
  • 56. Ejemplo: Select COD_USUA, NOM_USUA, APEPATER_USUA, APEMATER_USUA, Case Month(FEC_NAC_USUA) When 1 Then 'Enero' When 2 Then 'Febrero' When 3 Then 'Marzo' When 4 Then 'Abril' When 5 Then 'Mayo' When 6 Then 'Junio' When 7 Then 'Julio' When 8 Then 'Agosto' When 9 Then 'Septiembre' When 10 Then 'Octubre' When 11 Then 'Noviembre' When 12 Then 'Diciembre' End As Mes_Nacimiento From USUARIO
  • 57. Crear un sp que permita incrementar el haber básico de un inquilino en función de su estado civil (20% para casados o viudos y 10% para los solteros y divorciados). Asimismo, si el inquilino tiene una comisión aumentar su haber con ese monto. Create Procedure spIncHaberInquilino @Inquilino Char(6), @Comision Numeric(10,2) = Null --Parámetro con valor por defecto As Begin -- Inicio del sp -- Validar que el código y la descripcion no sean nulas If( @Inquilino Is Null ) Begin Print 'El código del inquilino no puede ser NULO!!!' Return End
  • 58. -- Validar si el inquilino existe If Not Exists(Select * From Inquilino Where Cod_Usua = @Inquilino) Begin Print 'Actualizacion cancelada. El inquilino no existe.' Return End -- Variables locales para el proceso Declare @HaberBasico Int Declare @EstadoCivil Char(1) Declare @IncrementoPorEstadoCivil Int -- Determinar valores del inquilino Select @HaberBasico = Haber_Bas_Inq, @EstadoCivil = Est_Civil_Inq From Inquilino Where Cod_Usua = @Inquilino
  • 59. -- Determinar porcentaje de incremento If(@EstadoCivil In ('C','V')) Set @IncrementoPorEstadoCivil = @HaberBasico * 0.20 Else Set @IncrementoPorEstadoCivil = @HaberBasico * 0.10 -- Eliminar el departamento Update Inquilino Set Haber_Bas_Inq = Haber_Bas_Inq + @IncrementoPorEstadoCivil + IsNull(@Comision,0) Where Cod_Usua = @Inquilino End -- Fin del spIncHaberInquilino
  • 60. FIN