GUÍA DE EJERCICIOS DE SQL
SERVER CON SSMS
Base de Datos 2
Descripción breve
Esta guía de ejercicios está diseñada para comenzar a aprender a usar SQL Server y SQL Server
Management Studio (SSMS), progresando desde conceptos básicos hasta un mini-proyecto más
avanzado.
PST10
pst10carora@gmail.com
Nivel 1: Conceptos Fundamentales de SQL Server
Este nivel comprende los comandos básicos de Data Definition Language (DDL).
Ejercicio 1.1: Creación y Gestión de Bases de Datos
1. Abre SSMS y conéctate a tu instancia de SQL Server.
2. En el Object Explorer (Explorador de Objetos) haz clic derecho en Databases
y selecciona New Database.
3. Nombra la base de datos Cine.
4. Crea un nuevo Query Window (Ventana de Consulta) y ejecuta el siguiente
comando para verificar que la base de datos existe:
SELECT name FROM sys.databases WHERE name = 'Cine';
Usa el comando DROP DATABASE para eliminar la base de datos Cine:
DROP DATABASE Cine;
Ahora crea la base de datos Cine de nuevo, pero esta vez usando un comando
CREATE DATABASE:
CREATE DATABASE Cine;
Ejercicio 1.2: Creación de Tablas
1. Selecciona la base de datos Cine en el menú desplegable en la parte superior
del Query Window.
2. Crea la tabla Peliculas con las siguientes columnas:
o PeliculaID (clave primaria, entero, identidad - autoincremental)
o Titulo (texto, no nulo)
o AnioLanzamiento (entero, no nulo)
o Director (texto)
Profesor Ing. Jorge Rojas
CREATE TABLE Peliculas (
PeliculaID INT IDENTITY(1,1) PRIMARY KEY,
Titulo NVARCHAR(100) NOT NULL,
AnioLanzamiento INT NOT NULL,
Director NVARCHAR(100)
);
Crea una segunda tabla llamada Espectadores con las siguientes columnas:
• EspectadorID (clave primaria, entero, identidad - autoincremental)
• Nombre (texto, no nulo)
• Email (texto, único)
• FechaNacimiento (fecha)
CREATE TABLE Espectadores (
EspectadorID INT IDENTITY(1,1) PRIMARY KEY,
Nombre NVARCHAR(100) NOT NULL,
Email NVARCHAR(100) UNIQUE,
FechaNacimiento DATE
);
Profesor Ing. Jorge Rojas
Nivel 2: Manipulación de Datos (DML) y Consultas Básicas
En este nivel, trabajaremos con Data Manipulation Language (DML), aprendiendo a
insertar, actualizar, eliminar y seleccionar datos.
Ejercicio 2.1: Inserción y Selección de Datos
1. Inserta al menos 5 películas en la tabla Peliculas y 5 espectadores en la tabla
Espectadores.
INSERT INTO Peliculas (Titulo, AnioLanzamiento, Director) VALUES
('El Padrino', 1972, 'Francis Ford Coppola'),
('Pulp Fiction', 1994, 'Quentin Tarantino'),
('Matrix', 1999, 'Hermanas Wachowski'),
('Interestelar', 2014, 'Christopher Nolan'),
('Parasitos', 2019, 'Bong Joon-ho');
INSERT INTO Espectadores (Nombre, Email, FechaNacimiento) VALUES
('Jesús Espinoza', 'jesus.espinoza@gmail.com', '1990-05-15'),
('Ricardo Suárez', 'ricardo.suarez@gmail.com', '1985-11-20'),
('Michell Ferrer', 'michell.ferrer@gmail.com', '1992-03-10'),
('José Umbría', 'jose.umbria@gmail.com', '1988-08-25'),
('Yésica Rodríguez', 'yesica.rodriguez@gmail.com', '1995-01-30');
Selecciona todos los registros de la tabla Peliculas:
SELECT * FROM Peliculas;
Selecciona el título y año de lanzamiento de las películas que se estrenaron después
de 2000:
SELECT Titulo, AnioLanzamiento FROM Peliculas WHERE AnioLanzamiento > 2000;
Profesor Ing. Jorge Rojas
Selecciona los espectadores cuyo nombre empiece con la letra 'M'
SELECT * FROM Espectadores WHERE Nombre LIKE 'M%';
Ejercicio 2.2: Actualización y Eliminación de Datos
1. Actualiza el año de lanzamiento de 'Matrix' a 1998:
UPDATE Peliculas SET AnioLanzamiento = 1998 WHERE Titulo = 'Matrix';
Elimina al espectador con el nombre 'Ricardo Suárez':
DELETE FROM Espectadores WHERE Nombre = 'Ricardo Suárez';
Profesor Ing. Jorge Rojas
Nivel 3: Relaciones, Joins y Vistas
En este nivel, crearás relaciones entre tablas usando claves foráneas (Foreign Keys)
y usarás comandos JOIN para combinar datos.
Ejercicio 3.1: Creación de Relaciones
1. Crea una tabla Ventas con las siguientes columnas:
o VentaID (clave primaria, entero, identidad - autoincremental)
o PeliculaID (clave foránea que referencia a Peliculas)
o EspectadorID (clave foránea que referencia a Espectadores)
o FechaVenta (fecha y hora)
CREATE TABLE Ventas (
VentaID INT IDENTITY(1,1) PRIMARY KEY,
PeliculaID INT,
EspectadorID INT,
FechaVenta DATETIME,
FOREIGN KEY (PeliculaID) REFERENCES Peliculas(PeliculaID),
FOREIGN KEY (EspectadorID) REFERENCES Espectadores(EspectadorID)
);
Inserta datos en la tabla Ventas, asegurándote de usar IDs válidos de las tablas
Peliculas y Espectadores.
INSERT INTO Ventas (PeliculaID, EspectadorID, FechaVenta) VALUES
(1, 1, GETDATE()), -- Venta de 'El Padrino' a 'Jesús Espinoza'
(3, 3, GETDATE()), -- Venta de 'Matrix' a 'Michell Ferrer'
(4, 4, GETDATE()); -- Venta de 'Interestelar' a 'José Umbría'
Profesor Ing. Jorge Rojas
Ejercicio 3.2: Uso de Joins y Vistas
1. Realiza un INNER JOIN para obtener el título de la película y el nombre del
espectador para cada venta:
SELECT
P.Titulo AS TituloPelicula,
E.Nombre AS NombreEspectador
FROM Ventas AS V
INNER JOIN Peliculas AS P ON V.PeliculaID = P.PeliculaID
INNER JOIN Espectadores AS E ON V.EspectadorID = E.EspectadorID;
Crea una VIEW (vista) que muestre el título de la película, el año de lanzamiento y el
director.
CREATE VIEW VistaPeliculas AS
SELECT Titulo, AnioLanzamiento, Director
FROM Peliculas;
Selecciona datos de la vista recién creada:
SELECT * FROM VistaPeliculas WHERE AnioLanzamiento > 1990;
Profesor Ing. Jorge Rojas
Nivel 4: Mini-Proyecto - Sistema de Gestión de un Cine Sencillo
En este nivel, se integra todo lo aprendido para crear un sistema básico. Se necesita
una herramienta de desarrollo de propósito general. Se sugiere usar Python con la
biblioteca pyodbc para conectar a SQL Server.
Requisitos
• Python instalado.
• Instala el driver de SQL Server para Python. Desde la terminal, ejecuta:
pip install pyodbc
• Debes tener las tablas Peliculas, Espectadores y Ventas con datos.
Ejercicio 4.1: Conexión y Lógica de Negocio
1. Crea un archivo Python (ej. app_cine.py).
2. Importa la biblioteca pyodbc.
3. Define la cadena de conexión a tu base de datos.
import pyodbc
# Asegúrate e reemplazar los valores con tu configuración
server = 'tu_servidor'
database = 'Cine'
username = 'tu_usuario'
password = 'tu_contraseña'
driver = '{ODBC Driver 17 for SQL Server}' # Asegúrate de tener este driver instalado
connection_string =
f'DRIVER={driver};SERVER={server};DATABASE={database};UID={username};PWD
={password}'
Profesor Ing. Jorge Rojas
Crea una función para obtener todas las películas:
def obtener_peliculas():
conn = pyodbc.connect(connection_string)
cursor = conn.cursor()
cursor.execute("SELECT Titulo, AnioLanzamiento FROM Peliculas")
rows = cursor.fetchall()
for row in rows:
print(f"Título: {row.Titulo}, Año: {row.AnioLanzamiento}")
conn.close()
Crea una función para registrar una venta.
def registrar_venta(pelicula_id, espectador_id):
conn = pyodbc.connect(connection_string)
cursor = conn.cursor()
cursor.execute("INSERT INTO Ventas (PeliculaID, EspectadorID, FechaVenta)
VALUES (?, ?, GETDATE())", pelicula_id, espectador_id)
conn.commit()
print("Venta registrada con éxito.")
conn.close()
Ejercicio 4.2: Interfaz de Usuario Simple
1. Agrega un bucle While en tu archivo Python para crear un menú simple en la
consola.
def main():
while True:
Profesor Ing. Jorge Rojas
print("\n--- Menú de Gestión del Cine ---")
print("1. Ver todas las películas")
print("2. Registrar una nueva venta")
print("3. Salir")
opcion = input("Elige una opción: ")
if opcion == '1':
obtener_peliculas()
elif opcion == '2':
try:
pelicula_id = int(input("ID de la película: "))
espectador_id = int(input("ID del espectador: "))
registrar_venta(pelicula_id, espectador_id)
except ValueError:
print("Por favor, introduce IDs numéricos válidos.")
elif opcion == '3':
print("Saliendo del sistema...")
break
else:
print("Opción no válida. Inténtalo de nuevo.")
if __name__ == "__main__":
main()
Ejecuta el archivo Python desde la terminal:
python app_cine.py
Profesor Ing. Jorge Rojas
Para eliminar una base de datos en SQL Server desde SSMS (SQL Server
Management Studio), puedes seguir estos pasos:
## Método 1: Usando la Interfaz Gráfica
1. **Conéctate al servidor** en SSMS
2. **Expande el nodo "Bases de datos"** en el Object Explorer
3. **Haz clic derecho** sobre la base de datos que quieres eliminar
4. **Selecciona "Eliminar"** (Delete)
5. **En la ventana emergente:**
- Verifica que seleccionaste la base de datos correcta
- Marca "Cerrar conexiones existentes" si hay conexiones activas
- Opcional: Marca "Realizar copia de seguridad antes de eliminar"
6. **Haz clic en "Aceptar"**
## Método 2: Usando Consulta SQL
1. Abre una **nueva ventana de consulta**
2. Ejecuta el siguiente comando:
```sql
USE master;
GO
-- Opción 1: Eliminación básica
DROP DATABASE NombreDeTuBaseDeDatos;
Profesor Ing. Jorge Rojas
-- Opción 2: Forzar cierre de conexiones y eliminar
ALTER DATABASE NombreDeTuBaseDeDatos SET SINGLE_USER WITH
ROLLBACK IMMEDIATE;
DROP DATABASE NombreDeTuBaseDeDatos;
```
## Consideraciones Importantes
**Advertencias:**
- La eliminación es **permanente** y no se puede deshacer
- **Haz una copia de seguridad** si podrías necesitar los datos después
- Cierra todas las conexiones activas a la base de datos
- No podrás eliminar bases de datos del sistema (master, model, msdb, tempdb)
## Si encuentras errores
Si recibes el error "No se puede eliminar la base de datos porque está actualmente en
uso":
```sql
-- Primero cierra todas las conexiones
ALTER DATABASE NombreBaseDeDatos SET SINGLE_USER WITH ROLLBACK
IMMEDIATE;
-- Luego elimina
DROP DATABASE NombreBaseDeDatos;
```
¿Necesitas ayuda con algún paso específico o tienes alguna duda?
Profesor Ing. Jorge Rojas