¿Qué es SQL Server?
Es un sistema de gestión de bases de datos relacional (RDBMS) desarrollado por
Microsoft.
Permite almacenar, consultar, administrar y proteger datos de manera eficiente.
Edición Descripción Casos de uso
Enterprise Completa, para grandes Alta disponibilidad,
empresas rendimiento avanzado
Funciones básicas, Pequeñas/medianas
menos costosa empresas
Standard
Express Gratuita, con Estudiantes, aprendizaje,
Limitaciones pequeñas apps
Gratuita, con limitaciones Desarrollo y pruebas (No
para producción)
Developer
Web Adaptadas a servicios Hosting y soluciones web
web económicas.
Herramientas para usar
● Instalación básica
● Requisitos mínimos
● SQL Server Enterprise
● SSMS (Herramienta gráfica para trabajar con bases de datos)
Exploración general del entorno: SQL Server Management Studio (SSMS)
Actividad en clase
Una institución educativa necesita registrar la información de sus cursos. Tu tarea
es diseñar en Excel como se vería la tabla llamada Cursos, que contendrá la
siguiente información:
● Código del curso (Único por curso)
● Nombre del Curso
● Duración en horas
● Modalidad (Presencial o virtual)
● Número de estudiantes inscritos
Instalación de Microsoft SQL Server
[Link]
[Link]
Introducción a la estructura de una base de datos relacional
¿Qué es una base datos relacional?
● Sistema que almacena datos en tablas.
● Propuesta por Edgar F. Codd en 1970
● Organiza grandes volúmenes de datos evitando redundancia
Estructura de una base de datos relacional
● Formada por:
Tablas
● Columnas
● Filas
● Cada tabla representa una entidad real
Relaciones entre tablas
● Clave primaria (Primary key): Identificador único
● Clave foránea: conecta tablas
● Ejemplo: ID_Cliente “Pedidos” Referencia “Clientes”
Tipos de relaciones de Tablas
Tipo de relación Descripción Ejemplo
1a1 Un registro de A se asocia Cada persona tiene un
a uno de B pasaporte
1 a muchos (más común) Un registro de A se asocia Un cliente tiene muchos
a muchos en B pedidos
Muchos a muchos Muchos en A se asocian a Estudiantes inscritos en
muchos en B muchos cursos
Ejemplo
Actividad
-- Crear tabla de Clientes
CREATE TABLE Clientes (
ID_Cliente INT PRIMARY KEY,
Nombre VARCHAR (100),
Direccion VARCHAR (200),
Telefono VARCHAR (20)
);
-- Crear tabla de Facturas
CREATE TABLE Facturas (
ID_Factura INT PRIMARY KEY,
Fecha DATE,
ID_Cliente INT,
FOREIGN KEY (ID_Cliente) REFERENCES Clientes(ID_Cliente)
);
-- Crear tabla de Categorías
CREATE TABLE Categorias (
ID_Categoria INT PRIMARY KEY,
Descripcion VARCHAR (100)
);
-- Crear tabla de Proveedores
CREATE TABLE Proveedores (
ID_Proveedor INT PRIMARY KEY,
Nombre VARCHAR (100),
Direccion VARCHAR (200),
Telefono VARCHAR (20)
);
-- Crear tabla de Productos
CREATE TABLE Productos (
Actividad
Instituto
CREATE DATABASE Instituto
CREATE TABLE estudiantes (
id_estudiante INT PRIMARY KEY,
nombre VARCHAR(80),
apellido VARCHAR(80),
estrato INT,
genero VARCHAR(30),
ciudad VARCHAR(100),
fecha_nac DATE
);
CREATE TABLE profesores (
id_profesor INT PRIMARY KEY,
nombre VARCHAR(80),
apellido VARCHAR(80),
titulo VARCHAR(100),
genero VARCHAR(100),
area VARCHAR(100)
);
CREATE TABLE programas (
id_programa INT PRIMARY KEY,
programa VARCHAR(100),
facultad VARCHAR(100),
dpto VARCHAR(100)
);
CREATE TABLE asignaturas (
id_asignatura INT PRIMARY KEY,
id_profesor INT,
id_programa INT,
asignatura VARCHAR(100),
creditos INT,
int_horaria INT,
FOREIGN KEY (id_profesor) REFERENCES profesores(id_profesor),
FOREIGN KEY (id_programa) REFERENCES programas(id_programa)
);
CREATE TABLE grupos (
id_grupo INT PRIMARY KEY,
id_profesor INT,
id_asignatura INT,
grupo VARCHAR(80),
numero_estudiantes INT,
FOREIGN KEY (id_profesor) REFERENCES profesores(id_profesor),
FOREIGN KEY (id_asignatura) REFERENCES asignaturas(id_asignatura)
);
CREATE TABLE aulas (
id_aula INT PRIMARY KEY,
nombre_aula VARCHAR(100),
ubicacion VARCHAR(100),
capacidad INT,
tipo VARCHAR(100)
);
CREATE TABLE horarios (
id_horario INT PRIMARY KEY,
id_asignatura INT,
id_aula INT,
dia VARCHAR(80),
hora_inicio TIME,
hora_fin TIME,
FOREIGN KEY (id_asignatura) REFERENCES asignaturas(id_asignatura),
FOREIGN KEY (id_aula) REFERENCES aulas(id_aula)
);
CREATE TABLE matriculas (
id_matricula INT PRIMARY KEY,
id_estudiante INT,
id_asignatura INT,
nota DECIMAL(4,2),
FOREIGN KEY (id_estudiante) REFERENCES estudiantes(id_estudiante),
FOREIGN KEY (id_asignatura) REFERENCES asignaturas(id_asignatura)
);
INSERT INTO estudiantes (id_estudiante, nombre, apellido, estrato, genero, ciudad,
fecha_nac)
VALUES
(1001, 'Ana', 'Andrade', 3, 'Femenino', 'Bogota', '2002-05-10'),
(1002, 'Pepe', 'Gonzalez', 5, 'Masculino', 'Tunja', '2000-03-01'),
(1003, 'Juan', 'Cardona', 2, 'Masculino', 'Medellin', '2002-09-15'),
(1004, 'Camilo', 'Garcia', 1, 'Masculino', 'Cali', '1999-05-10'),
(1005, 'Diana', 'Samaca', 3, 'Femenino', 'Cartagena', '1970-06-10');
INSERT INTO programas (id_programa, programa, facultad, dpto) VALUES
(1, 'Ingenieria de Sistemas', 'Facultad de ingenierias', 'ingenieria'),
(2, 'Ingenieria de Software', 'Facultad de ingenierias', 'ingenieria'),
(3, 'Contaduria', 'Facultad de negocios', 'Escuela de Negocios'),
(4, 'Idiomas', 'Facultad de lenguas', 'Idiomas'),
(5, 'Culinaria', 'Facultad de Cocina', 'Escuela de reposteria');
INSERT INTO profesores (id_profesor, nombre, apellido, titulo, genero, area) VALUES
(101, 'Carlos', 'Ramirez', 'Magister', 'Masculino', 'Ingenierias'),
(102, 'Laura', 'Martinez', 'Magister', 'Femenino', 'Ingenierias'),
(103, 'Felipe', 'Rodriguez', 'Ingeniero', 'Masculino', 'Ingenierias'),
(104, 'Manuel', 'Daza', 'Magister', 'Masculino', 'Culinaria'),
(105, 'Francisco', 'Bonilla', 'Doctor', 'Masculino', 'Negocios');
INSERT INTO asignaturas (id_asignatura, id_profesor, id_programa, asignatura,
creditos, inf_horario)
VALUES
(201, 101, 1, 'Programacion I', 3, 4),
(202, 102, 2, 'Fundamentos de Administración', 4, 4),
(203, 103, 3, 'Fundamentos de Programacion', 3, 2),
(204, 104, 5, 'Fundamentos de la changua', 5, 5),
(205, 105, 4, 'Fundamentos de los idiomas', 4, 3);
INSERT INTO grupos (id_grupo, id_profesor, id_asignatura, grupo, numero_estudiantes)
VALUES
(301, 101, 201, 'A', 30),
(302, 102, 202, 'B', 25),
(303, 103, 203, 'A', 20),
(304, 104, 204, 'C', 15),
(305, 105, 205, 'A', 28);
INSERT INTO aulas (id_aula, nombre_aula, ubicacion, capacidad, tipo)
VALUES
(401, 'Aula 101', 'Bloque A', 35, 'Teorica'),
(402, 'Aula 202', 'Bloque B', 25, 'Laboratorio'),
(403, 'Cocina 1', 'Bloque C', 20, 'Practica'),
(404, 'Salon Idiomas', 'Bloque D', 30, 'Multimedia'),
(405, 'Aula Magna', 'Bloque E', 50, 'Auditorio');
INSERT INTO horarios (id_horario, id_asignatura, id_aula, dia, hora_inicio, hora_fin)
VALUES
(501, 201, 401, 'Lunes', '08:00:00', '10:00:00'),
(502, 202, 402, 'Martes', '10:00:00', '12:00:00'),
(503, 203, 401, 'Miércoles', '14:00:00', '16:00:00'),
(504, 204, 403, 'Jueves', '08:00:00', '11:00:00'),
(505, 205, 404, 'Viernes', '09:00:00', '11:00:00');
INSERT INTO matriculas (id_matricula, id_estudiante, id_asignatura, nota)
VALUES
(601, 1001, 201, 4.5),
(602, 1002, 202, 3.8),
(603, 1003, 203, 4.2),
(604, 1004, 204, 4.9),
(605, 1005, 205, 3.6);
SELECT id_asignatura,
AVG (nota)AS promedio_nota
FROM matriculas
GROUP BY id_asignatura;
SELECT genero,
COUNT (*)AS total_estudiantes
FROM estudiantes
GROUP BY genero;
SELECT tipo,
SUM (capacidad) AS capacidad_total
FROM aulas
GROUP BY tipo;
SELECT MAX (nota) as nota_maxima,
MIN (nota) AS nota_minima
FROM matriculas;
SELECT asignatura, MAX(int_horaria) AS intensidad_max
FROM asignaturas
GROUP BY asignatura
ORDER BY intensidad_max DESC;
SELECT AVG(estrato) AS promedio_estrato
FROM estudiantes;
SELECT nombre_aula, capacidad
FROM aulas
WHERE capacidad >30;
SELECT dia, hora_inicio, hora_fin
FROM horarios
ORDER BY dia, hora_inicio;
SELECT SUM (creditos) AS total_creditos
FROM asignaturas;
SELECT *
FROM estudiantes
WHERE genero = 'Femenino'
AND estrato IN (2, 3);
SELECT*
FROM asignaturas
WHERE int_horaria > 3
AND creditos >2;
SELECT*
FROM profesores
WHERE NOT area = 'Ingenierias';
SELECT*
FROM aulas
WHERE capacidad BETWEEN 20 AND 40 AND NOT tipo= 'Practicas';
SELECT *
FROM estudiantes
WHERE ciudad <> 'Bogota' OR genero = 'Masculino';
SELECT*
FROM asignaturas
WHERE asignatura LIKE '%Fundamentos%';
SELECT *
FROM asignaturas
WHERE asignatura LIKE '%Programacion%';
SELECT*
FROM estudiantes
WHERE YEAR (fecha_nac) BETWEEN 2001 AND 2003;
SELECT*
FROM matriculas
WHERE (nota) NOT BETWEEN 1.0 AND 3.0;
SELECT*
FROM asignaturas
WHERE creditos >3 OR int_horaria >4;
Eliminación de datos, si arroja algún error, que pueden ser de Primary KEY o Llaves
foráneas
ALTER TABLE matriculas
DROP CONSTRAINT FK_matricula_id_es_49C3F6B7;
ALTER TABLE matriculas
ADD CONSTRAINT FK_matriculas_estudiantes
FOREIGN KEY (id_estudiante)
REFERENCES estudiantes(id_estudiante)
ON DELETE CASCADE;
Actualización de datos en las tablas
UPDATE estudiantes
SET ciudad = 'Tunja', estrato = 5
WHERE id_estudiante = 1005;
Paradigmas
Estructura condicional
● +CAST: es una función estándar que permite la conversión explícita de
un tipo de datos a otro Ejemplo de INT a VARCHAR
● ELSE: se usa dentro de estructuras condicionales IF o CASE para
ejecutar un bloque de código alternativo si la condición principal no se
cumple. En esencia, ELSE proporciona una ruta de acción predeterminada
cuando una condición no es verdadera.
● BEGIN: se utiliza principalmente para dos propósitos: iniciar una
transacción y agrupar múltiples sentencias en un bloque.
● WHILE:se utiliza para ejecutar repetidamente un bloque de código
mientras una condición especificada sea verdadera.
● DECLARE: se usa para declarar variables locales dentro de un
procedimiento o bloque de código, especificando su nombre y tipo de
datos.
● BREAK: se usa con frecuencia para finalizar el procesamiento de un
caso concreto en una instrucción switch.
● SET: se utiliza para asignar valores a variables, tanto variables de
sesión como variables del sistema, o para configurar ajustes de la sesión.
● CASE: Son casos que podemos ir agregando: es una expresión
condicional que permite evaluar múltiples condiciones y devolver
diferentes valores o realizar distintas acciones según el resultado de esas
condiciones.
● CREATE PROCEDURE: se utiliza para definir un procedimiento
almacenado. Un procedimiento almacenado es una secuencia de
instrucciones SQL que se pueden ejecutar como una unidad.
● DROP: Elimina una tabla
● DELETE: Se usa para eliminar un registro
SELECT* FROM [Link]
------------------------------------------------------------------------------
CREATE PROCEDURE EvaluarNota
@nota DECIMAL(4,2)
AS
BEGIN
IF @nota >= 3.0
PRINT 'Aprobado'
ELSE
PRINT 'Reprobado'
END
------------------------------------------------------------------------------
EXEC EvaluarNota @nota = 2.0;
------------------------------------------------------------------------------
CREATE PROCEDURE verificarEstudiante
@id_estudiante INT
AS
BEGIN
IF EXISTS (SELECT 1 FROM estudiantes WHERE id_estudiante = @id_estudiante)
PRINT 'Estudiante encontrado/Registrado'
ELSE
PRINT 'Estudiante no existe'
END
------------------------------------------------------------------------------
EXEC verificarEstudiante @id_estudiante = 1001;
------------------------------------------------------------------------------
Para dos o más consultas
CREATE PROCEDURE verificarestudiantes
@id_estudiante1 INT,
@id_estudiante2 INT
AS
BEGIN
IF EXISTS (SELECT 1 FROM estudiantes WHERE id_estudiante= @id_estudiante1)
PRINT 'Estudiante encontrado/Registrado'
ELSE
PRINT 'Estudiante no existe'
IF EXISTS (SELECT 1 FROM estudiantes WHERE id_estudiante= @id_estudiante2)
PRINT 'Estudiante encontrado/Registrado'
ELSE
PRINT 'Estudiante no existe'
END
------------------------------------------------------------------------------
EXEC verificarEstudiantes @id_estudiante1 = 1020, @id_estudiante2 = 1003;
------------------------------------------------------------------------------
------------------------------------------------------------------------------
CREATE PROCEDURE InsertarMatriculaSiNoExiste
@id_matricula INT,
@id_estudiante INT,
@id_asignatura INT,
@nota DECIMAL(4,2)
AS
BEGIN
IF NOT EXISTS (
SELECT 1
FROM matriculas
WHERE id_estudiante = @id_estudiante AND id_asignatura = @id_asignatura
BEGIN
INSERT INTO matriculas (id_matricula, id_estudiante, id_asignatura, nota)
VALUES (@id_matricula, @id_estudiante, @id_asignatura, @nota);
PRINT 'Matrícula registrada exitosamente';
END
ELSE
BEGIN
PRINT 'El estudiante ya está matriculado en esta asignatura';
END
END
------------------------------------------------------------------------------
EXEC InsertarMatriculaSiNoExiste
@id_matricula =700,
@id_estudiante =1002,
@id_asignatura =201,
@nota=4.3;
------------------------------------------------------------------------------
IF EXISTS (SELECT 1 FROM matriculas WHERE id_estudiante = 1001)
PRINT 'El estudiante está matriculado';
ELSE
PRINT 'El estudiante no cuenta con matrícula';
DECLARE @contador INT = 1;
WHILE @contador <= 5
BEGIN
PRINT 'Interacion numero ' + CAST(@contador AS VARCHAR);
IF @contador = 3
BREAK;
SET @contador = @contador + 1;
END
------------------------------------------------------------------------------
SELECT nota,
CASE
WHEN nota >= 4.5 THEN 'Excelente'
WHEN nota >= 3.0 THEN 'Aprobada'
ELSE 'Reprobo'
END AS resultado
FROM matriculas;
------------------------------------------------------------------------------
CREATE PROCEDURE MostrarEstudianteSiExiste
@id INT
AS
BEGIN
IF NOT EXISTS (SELECT 1 FROM estudiantes WHERE id_estudiante = @id)
BEGIN
PRINT 'El estudiante no se encontró';
RETURN;
END
SELECT * FROM estudiantes WHERE id_estudiante = @id;
END
------------------------------------------------------------------------------
EXEC MostrarEstudianteSiExiste @id =1021;
------------------------------------------------------------------------------
------------------------------------------------------------------------------
BEGIN TRY
DECLARE @x INT = 1, @y INT = 0, @resultado INT;
SET @resultado = @x / @y;
PRINT 'Resultado: ' + CAST(@resultado AS VARCHAR);
END TRY
BEGIN CATCH
PRINT 'Ocurrió un error: ' + ERROR_MESSAGE();
END CATCH
-------------------------------------------------------------------------------
CREATE PROCEDURE EvaluarYActualizarNota
@id_estudiante INT,
@id_asignatura INT,
@nuevaNota DECIMAL(4,2)
AS
BEGIN
DECLARE @nota_Actual DECIMAL(4,2);
DECLARE @intentos INT = 1;
IF NOT EXISTS (
SELECT 1
FROM matriculas
WHERE id_estudiante = @id_estudiante AND id_asignatura = @id_asignatura
BEGIN
PRINT 'El estudiante no se encuentra matriculado';
RETURN;
END
BEGIN TRY
SELECT @nota_Actual = nota
FROM matriculas
WHERE id_estudiante = @id_estudiante AND id_asignatura = @id_asignatura;
PRINT 'Nota actual: ' + CAST(@nota_Actual AS VARCHAR);
WHILE @intentos <= 3
BEGIN
IF @nuevaNota > @nota_Actual
BEGIN
UPDATE matriculas
SET nota = @nuevaNota
WHERE id_estudiante = @id_estudiante AND id_asignatura = @id_asignatura;
PRINT 'Nota actualizada, su nueva nota es: ' + CAST(@nuevaNota AS
VARCHAR);
DECLARE @clasificacion VARCHAR(20);
SET @clasificacion = CASE
WHEN @nuevaNota >= 4.5 THEN 'Excelente'
WHEN @nuevaNota >= 3.0 THEN 'Aprobó'
ELSE 'Reprobó'
END;
PRINT 'Clasificación: ' + @clasificacion;
BREAK;
ELSE
BEGIN
PRINT 'La nueva nota no es mayor. Intento ' + CAST(@intentos AS VARCHAR);
SET @intentos = @intentos + 1;
END
END
IF @intentos > 3
BEGIN
PRINT 'Se superó el número de intentos permitidos';
RETURN;
END
END TRY
BEGIN CATCH
PRINT 'Error detectado: ' + ERROR_MESSAGE();
END CATCH
END
------------------------------------------------------------------------------
EXEC EvaluarYActualizarNota
@id_estudiante =1001,
@id_asignatura= 201,
@nuevaNota=4.3;
------------------------------------------------------------------------------
CREATE TABLE Rectoras (
id_rectora INT PRIMARY KEY,
nombre VARCHAR(100),
fecha_inicio DATE,
correo VARCHAR(100)
);
------------------------------------------------------------------------------
INSERT INTO Rectoras (id_rectora, nombre, fecha_inicio, correo) VALUES
(1, 'Laura Martínez', '2022-01-10', 'laura.m@[Link]'),
(2, 'Camila Gómez', '2023-03-15', 'cgomez@[Link]'),
(3, 'Ana María', '2025-01-10', 'Ana.m@[Link]'),
(4, 'Francisco Samaca', '2020-03-11', 'laura.m@[Link]'),
(5, 'Víctor Aristizabal', '2021-06-20', 'victor.a@[Link]');
------------------------------------------------------------------------------
SELECT
id_rectora,
UPPER (nombre) AS nombre_mayusculas,
LEN (nombre) AS longitud_nombre,
correo
FROM Rectoras;
------------------------------------------------------------------------------
SELECT
nombre,
fecha_inicio,
GETDATE ()AS fecha_Actual,
DATEPART (YEAR, fecha_inicio) AS año_ingreso
FROM Rectoras;
------------------------------------------------------------------------------
SELECT
nombre,
fecha_inicio,
DATEDIFF (YEAR, fecha_inicio, GETDATE()) AS años_en_el_cargo,
CASE
WHEN DATEDIFF (YEAR, fecha_inicio, GETDATE()) >=2 THEN 'Antigua'
ELSE 'Reciente'
END
AS Antigüedad
FROM Rectoras;
------------------------------------------------------------------------------
SELECT
nombre,
CAST (fecha_inicio AS VARCHAR) AS fecha_texto,
CONVERT (VARCHAR, fecha_inicio, 103) AS fecha_formato
FROM Rectoras;
------------------------------------------------------------------------------
SELECT
nombre,
ISDATE ('2025-01-15') AS fecha_valida
FROM Rectoras;
------------------------------------------------------------------------------
ALTER TABLE Rectoras
ADD sedes VARCHAR (100);
------------------------------------------------------------------------------
ALTER TABLE Rectoras
ALTER COLUMN sedes INT
------------------------------------------------------------------------------
CREATE TABLE rectora (id INT IDENTITY (1,1) PRIMARY KEY,
nombre VARCHAR (100),
fecha_inicio DATE);
------------------------------------------------------------------------------
TRUNCATE TABLE Rectoras; ----Elimina los registros
------------------------------------------------------------------------------
DROP TABLE Rectoras;--- Elimina la tabla completa
------------------------------------------------------------------------------
BEGIN TRAN
UPDATE estudiantes
SET estrato= 2
WHERE id_estudiante=1001;
COMMIT;
---ROLLBACK---
------------------------------------------------------------------------------
BEGIN TRY
BEGIN TRAN
UPDATE estudiantes SET estrato = 3 WHERE id_estudiante = 1002;
DECLARE @x INT = 1, @y INT = 0;
SELECT @x / @y;
COMMIT;
END TRY
BEGIN CATCH
PRINT 'Ocurrió un error: ' + ERROR_MESSAGE();
ROLLBACK;
END CATCH
------------------------------------------------------------------------------
SELECT @@TRANCOUNT;
------------------------------------------------------------------------------
SELECT nombre,[Link]
FROM estudiantes
INNER JOIN matriculas m
ON
e.id_estudiante =m.id_estudiante
------------------------------------------------------------------------------
Clase 19/05/2025
-------------------------------------------------------------------------------
---LEFT JOIN--
-------------------------------------------------------------------------------
SELECT [Link], [Link]
FROM estudiantes e
LEFT JOIN matriculas m ON e.id_estudiante = m.id_estudiante;
----------------------------------------------------------------------------
SELECT [Link], [Link]
FROM profesores p
LEFT JOIN asignaturas a ON p.id_profesor = a.id_profesor;
----------------------------------------------------------------------------
SELECT [Link], [Link]
FROM asignatura a
LEFT JOIN grupo g ON a.id_asignatura = g.id_asignatura;
---------------------------------------------------------------------------
SELECT a.nombre_aula, [Link]
FROM aulas a
LEFT JOIN horarios d ON a.id_aula = d.id_aula;
----------------------------------------------------------------------------
---RIGHT---
----------------------------------------------------------------------------
SELECT [Link], [Link]
FROM estudiantes e
RIGHT JOIN matriculas m ON e.id_estudiante = m.id_estudiante;
------------------------------------------------------------------------------
SELECT [Link], [Link]
FROM profesores p
RIGHT JOIN asignaturas a ON p.id_profesor = a.id_profesor;
-----------------------------------------------------------------------------
SELECT a.nombre_aula, [Link]
FROM aulas a
RIGHT JOIN horarios d ON a.id_aula = d.id_aula;
-----------------------------------------------------------------------------
--UNION--
-----------------------------------------------------------------------------
SELECT nombre AS Nombres FROM profesores
UNION
SELECT nombre FROM estudiantes
-----------------------------------------------------------------------------
SELECT id_asignatura FROM grupos
UNION
SELECT id_asignatura FROM matriculas
-----------------------------------------------------------------------------
SELECT genero AS generos FROM estudiantes
UNION
SELECT genero FROM profesores
----------------------------------------------------------------------------
SELECT id_asignatura FROM asignaturas
UNION
SELECT id_asignatura FROM matriculas
-------------------------------------------------------------------------------
---UNION ALL---
-------------------------------------------------------------------------------
SELECT nombre AS Nombres FROM profesores
UNION ALL
SELECT nombre FROM estudiantes;
-------------------------------------------------------------------------------
SELECT id_asignatura AS ID FROM asignaturas
UNION ALL
SELECT id_asignatura FROM matriculas
-------------------------------------------------------------------------------
---REPASO---20/05/2025--
-------------------------------------------------------------------------------
CREATE PROCEDURE obtenerEstudiante
@id_estudiante INT
AS
BEGIN
SELECT
FROM estudiantes
WHERE id_estidiante = @id_estudiante
END
------------------------------------------------------------------------------
EXEC obtenerEstudiante @id_estudiante=
------------------------------------------------------------------------------
SELECT nombre, estrato, genero
FROM estudiantes
WHERE estrato >= 2
------------------------------------------------------------------------------
UPDATE estudiantes
SET estrato = 3
WHERE id_estudiante = 1003;
------------------------------------------------------------------------------
DELETE FROM matriculas
WHERE nota < 2.0;
------------------------------------------------------------------------------
---FUNCIONES DEFINIDAS---TIPO ESCALAR---
------------------------------------------------------------------------------
DECLARE @nombre VARCHAR (100);
DECLARE @promedio_General DECIMAL(4.2);
SELECT @nombre = nombre
FROM estudiantes
WHERE id_estudiante = 1003;
SELECT @promedio_General = AVG(nota)
FROM matriculas;
SELECT @nombre AS Nombre_Estudiantes;
SELECT @promedio_General AS Promedio;
PRINT 'El promedio general es de' +CAST(promedio_General AS VARCHAR);
------------------------------------------------------------------------------
---FUNCIONES DEFINIDAS---TIPO TABLAS---
------------------------------------------------------------------------------
DECLARE @tablaTemporal TABLE (
id INT
nombre VARCHAR (100));
INSERT INTO @tablaTemporal (id, nombre)
VALUES (1,'Pepe'), (2,'Felipe'), (4, 'Cristian');
SELECT* FROM @tableTemporal;
SELECT id
FROM @tablaTemporal
WHERE id > 103;
------------------------------------------------------------------------------
CREATE TABLE #TemporalPadres(
id INT
nombre VARCHAR (100));
INSERT INTO #TemporalPadres (id, nombre)
VALUES (201,'Pepe'), (202,'Felipe'), (203, 'Cristian');
SELECT* FROM #TemporalPadres;
);
------------------------------------------------------------------------------
CREATE TABLE ##TempMinTic (
id INT
nombre VARCHAR (100));
INSERT INTO ##TempMinTic (id, nombre)
VALUES (101,'Pepe'),(102,'Felipe'), (103,'Felipe'), (104, 'Cristian');
SELECT* FROM ##TempMinTic;
);
● RIGHT Priorizo la tabla de la derecha
● LEFT Priorizo la tabla de la izquierda
------------------------------------------------------------------------------
---VISTAS (DESDE EL ENTORNO GRÁFICO---
------------------------------------------------------------------------------
CREATE VIEW vistaNotaEstudiante
AS
SELECT
[Link],
[Link],
[Link]
FROM estudiantes e
INNER JOIN matriculas m ON e.id_estudiante = m.id_estudiante
INNER JOIN asignaturas a ON m.id_asignatura = a.id_asignatura;
SELECT
FROM* FROM vistaNotaEstudiante