0% encontró este documento útil (0 votos)
3 vistas19 páginas

Introducción a SQL Server

SQL Server es un sistema de gestión de bases de datos relacional desarrollado por Microsoft, que permite almacenar y gestionar datos de manera eficiente. Existen diferentes ediciones como Enterprise, Standard, Express, Developer y Web, cada una adaptada a distintos casos de uso. El documento también incluye ejemplos de creación de tablas, inserción de datos y procedimientos almacenados en SQL.

Cargado por

Jio Arenas
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas19 páginas

Introducción a SQL Server

SQL Server es un sistema de gestión de bases de datos relacional desarrollado por Microsoft, que permite almacenar y gestionar datos de manera eficiente. Existen diferentes ediciones como Enterprise, Standard, Express, Developer y Web, cada una adaptada a distintos casos de uso. El documento también incluye ejemplos de creación de tablas, inserción de datos y procedimientos almacenados en SQL.

Cargado por

Jio Arenas
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

¿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, menos Pequeñas/medianas


costosa empresas
Standard

Express Gratuita, con Limitaciones Estudiantes, aprendizaje,


pequeñas apps

Gratuita, con limitaciones Desarrollo y pruebas (No para


producción)
Developer

Web Adaptadas a servicios web Hosting y soluciones 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 a Cada persona tiene un


uno de B pasaporte

1 a muchos (más común) Un registro de A se asocia a Un cliente tiene muchos


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 (

ID_Producto INT PRIMARY KEY,

Descripcion VARCHAR (100),

Precio DECIMAL (10,2),

ID_Categoria INT,

ID_Proveedor INT,

FOREIGN KEY (ID_Categoria) REFERENCES Categorias(ID_Categoria),

FOREIGN KEY (ID_Proveedor) REFERENCES Proveedores(ID_Proveedor)

);
-- Crear tabla de Ventas

CREATE TABLE Ventas (

ID_Venta INT PRIMARY KEY,

ID_Factura INT,

ID_Producto INT,

Cantidad INT,

FOREIGN KEY (ID_Factura) REFERENCES Facturas (ID_Factura),

FOREIGN KEY (ID_Producto) REFERENCES Productos(ID_Producto)

);

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;
------------------------------------------------------------------------------

También podría gustarte