0% encontró este documento útil (0 votos)
1 vistas16 páginas

Examen SQL

El documento contiene un examen sobre SQL y bases de datos, con preguntas que abarcan desde la creación de tablas y relaciones hasta consultas y operaciones de manipulación de datos. Incluye preguntas sobre claves primarias, funciones, procedimientos almacenados, restricciones, y operaciones de unión y combinación de tablas. Cada pregunta tiene opciones de respuesta, con las respuestas correctas marcadas.
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)
1 vistas16 páginas

Examen SQL

El documento contiene un examen sobre SQL y bases de datos, con preguntas que abarcan desde la creación de tablas y relaciones hasta consultas y operaciones de manipulación de datos. Incluye preguntas sobre claves primarias, funciones, procedimientos almacenados, restricciones, y operaciones de unión y combinación de tablas. Cada pregunta tiene opciones de respuesta, con las respuestas correctas marcadas.
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

Examen SQL / Bases de Datos

Pregunta 1: Acepta hacer prácticas en una entidad benéfica. Tiene las tablas Chapter
(ChapterId, City, Region, Country) y Language (LanguageId, LanguageName, Locale).
Debe crear una tercera tabla ChapterLanguage para relacionarlas con una clave
principal compuesta. ¿Qué dos columnas debe seleccionar?
A. Country
B. ChapterId ✓ CORRECTA
C. City
D. LanguageId ✓ CORRECTA
E. LanguageName
F. Region
La clave principal compuesta de la tabla intermedia ChapterLanguage debe incluir las claves
primarias de las dos tablas que relaciona: ChapterId (de Chapter) y LanguageId (de Language).

Pregunta 2: Va a estructurar una tabla de base de datos relacional con clave


principal. Seleccione Verdadero o Falso para cada afirmación.
1. Cada valor de un campo de una tabla debe ser único. → FALSO ✓ CORRECTA
2. Cada fila de una tabla debe ser única. → VERDADERO ✓ CORRECTA
3. Cada nombre de columna de una tabla debe ser único. → VERDADERO ✓
CORRECTA
Los valores de un campo NO tienen que ser únicos (pueden repetirse en diferentes filas). Las filas
sí deben ser únicas (garantizado por la clave principal). Los nombres de columna deben ser únicos
dentro de la misma tabla.

Pregunta 3: Tabla Cars (Type, Color, Origin). SELECT * FROM Cars c WHERE
[Link] <> 'USA' AND [Link] <> 'Black'; ¿Cuántas filas devuelve?
A. 4 ✓ CORRECTA
B. 5
C. 6
D. 7
Filas que NO son de USA Y NO son negras: Sedan(Red,Japan)✓, Minivan(Silver,Japan)✓,
Hatchback(Red,Japan)✓, SUV(Silver,Germany)✓ = 4 filas. Excluidas: Truck(Red,USA),
Compact(Black,Japan), Convertible(Black,USA), Hybrid(Black,Germany).

Pregunta 4: ¿En qué se diferencia una función de un procedimiento almacenado?


A. Una función debe devolver un valor. ✓ CORRECTA
B. Una función no puede aceptar parámetros.
C. Una función no puede contener una transacción.
D. Se debe llamar a una función desde un desencadenador.
La diferencia principal: una función SIEMPRE debe devolver un valor (RETURN). Un procedimiento
almacenado puede o no devolver valores. Las funciones sí pueden aceptar parámetros.
Pregunta 5: ¿Qué funcionalidad utiliza una base de datos relacional para garantizar
que los datos especificados en una columna sean válidos?
A. un atributo
B. una clave principal
C. una restricción ✓ CORRECTA
D. un índice
Las restricciones (constraints) como CHECK, NOT NULL, UNIQUE, FOREIGN KEY garantizan la
validez e integridad de los datos en una columna. Los índices mejoran el rendimiento de búsqueda,
no validan datos.

Pregunta 6: ¿Qué instrucción SQL es una instrucción del lenguaje de definición de


datos (DDL)?
A. SELECT * INTO Employee FROM NewHires;
B. SELECT EmployeeName FROM Employee WHERE EmployeeName = 'Jack Smith';
C. INSERT INTO Employee VALUES ('Jack Smith');
D. ALTER TABLE Employee ADD EmployeeName Varchar; ✓ CORRECTA
DDL (Data Definition Language) incluye CREATE, ALTER, DROP, TRUNCATE — instrucciones
que definen o modifican la estructura de la BD. ALTER TABLE modifica la estructura. SELECT e
INSERT son DML (Data Manipulation Language).

Pregunta 7: Tabla Person con filas existentes. El desarrollador ejecuta: ALTER


TABLE Person ADD DateOfBirth date NOT NULL; y recibe un error. ¿Cómo resolverlo
sin perder datos?
A. ALTER TABLE Person ADD DateOfBirth date NOT NULL DEFAULT '01/01/1900'; ✓
CORRECTA
B. ALTER TABLE Person ADD DateOfBirth varchar(10) NOT NULL;
C. DELETE Person; ALTER TABLE Person ADD DateOfBirth date NOT NULL;
D. DROP CONSTRAINT; ALTER TABLE Person ADD DateOfBirth date NOT NULL;
El error ocurre porque la tabla ya tiene filas y agregar NOT NULL sin valor predeterminado falla (las
filas existentes tendrían NULL). La solución es agregar un DEFAULT para las filas existentes, sin
eliminar datos.

Pregunta 8: Tiene que combinar los resultados de dos consultas en un único


resultado que contenga todas las filas de ambas consultas. ¿Qué instrucción SQL debe
utilizar?
A. EXCEPT
B. TRUNCATE
C. UNION ✓ CORRECTA
D. JOIN
UNION combina los resultados de dos o más SELECT en un solo conjunto de resultados que
incluye todas las filas de ambas consultas (eliminando duplicados; UNION ALL los mantiene).
EXCEPT devuelve filas de la primera que no están en la segunda. JOIN combina columnas, no filas
de diferentes consultas.
Pregunta 9: SELECT EmployeeID, FirstName, DepartmentName FROM Employee,
Department; ¿Qué tipo de operación se realizó?
A. Producto cartesiano ✓ CORRECTA
B. Intersección
C. Combinación de igualdad
D. Combinación externa
Al listar dos tablas en FROM sin cláusula JOIN ni WHERE que las relacione, se produce un
producto cartesiano (CROSS JOIN): cada fila de Employee se combina con cada fila de
Department, generando todas las combinaciones posibles.

Pregunta 10: Tablas: student(studentID, firstName, lastName), enrollment(studentID,


courseID), course(courseID, name). Necesita devolver nombre del estudiante y curso.
Los estudiantes no inscritos NO deben aparecer. La consulta original con OUTER JOIN
devuelve error. ¿Cómo corregirla?
A. SELECT ... FROM student INNER JOIN ON course, enrollment WHERE
[Link] = [Link] AND [Link] = [Link];
B. SELECT [Link], [Link], [Link] FROM course INNER
JOIN enrollment ON [Link] = [Link] INNER JOIN student ON
[Link] = [Link]; ✓ CORRECTA
C. SELECT firstname, lastname, name FROM course INNER JOIN enrollment WHERE
[Link] = [Link] INNER JOIN student WHERE
[Link] = [Link];
D. SELECT firstname, lastname, name FROM student INNER JOIN ON course, enrollment
WHERE ...
La opción B usa correctamente INNER JOIN con ON para unir las tres tablas. Solo devuelve
estudiantes inscritos (INNER JOIN excluye a los no inscritos). La sintaxis correcta es FROM tabla1
INNER JOIN tabla2 ON condición.

Pregunta 11: Tabla Student con 100 filas, algunas con NULL en FirstName. Se
ejecuta: DELETE FROM Student; ¿Cuál es el resultado?
A. Se eliminarán todas las filas de la tabla. ✓ CORRECTA
B. Se eliminarán todas las filas y la definición de tabla.
C. Recibirá un mensaje de error.
D. Se eliminarán todas las filas que contengan NULL en FirstName.
DELETE FROM Student sin cláusula WHERE elimina TODAS las filas de la tabla, pero conserva la
estructura/definición de la tabla. DROP TABLE eliminaría la tabla completa. Los NULLs no afectan
el comportamiento de DELETE sin WHERE.

Pregunta 12: Tabla [Link] (StreetAddress varchar(255), City varchar(255),


State varchar(2), PostalCode varchar(15), todas nullable). Insertar: 1234 Main Street,
Dallas, TX, 75201. ¿Qué dos instrucciones puede usar?
A. INSERT INTO AddressInfo VALUES ('1234 Main Street', 'Dallas', 'TX', '75201'); ✓
CORRECTA
B. INSERT INTO AddressInfo ('1234 Main Street', 'Dallas', 'TX', '75201') VALUES
([StreetAddress], [City], [State], [PostalCode]);
C. UPDATE AddressInfo SET [StreetAddress]='1234 Main Street', [City]='Dallas',
[State]='TX', [PostalCode]='75201';
D. INSERT INTO AddressInfo ([StreetAddress], [City], [State], [PostalCode]) VALUES
('1234 Main Street', 'Dallas', 'TX', '75201'); ✓ CORRECTA
A es válida: INSERT sin lista de columnas requiere valores en el orden exacto de todas las
columnas. D es válida: especifica las columnas explícitamente y sus valores correspondientes. B
invierte el orden (columnas y valores cambiados). C es UPDATE, no INSERT.

Pregunta 13: Tabla PlayerStat (PlayerID INT NOT NULL, TeamID INT NOT NULL,
GameDate DATETIME NULL, Points INT NULL). Mostrar número total de puntos por
jugador del TeamID=1. Complete la consulta.
SELECT PlayerID,. SUM(Points) ✓ ✓ CORRECTA
FROM PlayerStat.
WHERE. TeamID = 1 ✓ ✓ CORRECTA
GROUP BY. PlayerID ✓ ✓ CORRECTA
Consulta correcta: SELECT PlayerID, SUM(Points) FROM PlayerStat WHERE TeamID = 1 GROUP
BY PlayerID; — WHERE filtra por equipo, GROUP BY agrupa por jugador, SUM suma los puntos
de cada jugador.

Pregunta 14: Crear objeto de base de datos llamado Student para almacenar: ID
(INT), Name (VARCHAR 100), Age (INT). ¿Qué sintaxis debe utilizar?
A. CREATE Student( ID INT, Name VARCHAR(100), Age INT);
B. CREATE TABLE ( ID INT, Name VARCHAR(100), Age INT);
C. CREATE { TABLE Student ID INT, Name VARCHAR(100), Age INT);
D. CREATE TABLE Student( ID INT, Name VARCHAR(100), Age INT); ✓ CORRECTA
La sintaxis correcta en SQL es: CREATE TABLE NombreTabla (columna1 tipo1, columna2
tipo2, ...); La opción D tiene la sintaxis correcta: CREATE TABLE seguido del nombre y las
columnas entre paréntesis.

Pregunta 15: Debe deshabilitar el acceso de User1 para ver los datos de la tabla
Customer. ¿Qué instrucción debe utilizar?
A. REVOKE SELECT ON Customer FROM User1; ✓ CORRECTA
B. REMOVE User1 FROM Customer;
C. REMOVE SELECT ON Customer FROM User1;
D. REVOKE User1 FROM Customer;
REVOKE es el comando SQL para quitar permisos. La sintaxis correcta es: REVOKE [permiso] ON
[objeto] FROM [usuario]. Para quitar el permiso de SELECT sobre Customer a User1: REVOKE
SELECT ON Customer FROM User1.

Pregunta 16: Tabla LoanedBooks (ID, Name, City, Books). Harry de San Francisco
devuelve sus libros (Books=0 para ID=4). ¿Qué instrucción actualizará correctamente
la tabla?
A. INSERT INTO LoanedBooks SET Books = 0 WHERE ID = 4
B. UPDATE LoanedBooks SET Books = 0 WHERE (Name = 'Harry' AND City = 'San
Francisco') ✓ CORRECTA
C. UPDATE LoanedBooks SET Books = 0 WHERE (Name = 'Harry' OR City = 'San
Francisco')
D. UPDATE LoanedBooks SET Books = 0 WHERE (Name In 'Harry', 'San Francisco')
B es correcta: actualiza solo las filas donde Name='Harry' AND City='San Francisco' (afecta al
registro ID=4 específicamente). C usaría OR e incluiría a Sally de San Francisco también. A usa
INSERT que no actualiza. D tiene sintaxis incorrecta.

Pregunta 17: Tiene una tabla denominada Customer. Debe crear una columna nueva
llamada District. ¿Qué instrucción debe utilizar?
A. ALTER TABLE Customer MODIFY (District INTEGER);
B. MODIFY TABLE Customer ADD (INTEGER District);
C. ALTER TABLE Customer ADD (District INTEGER); ✓ CORRECTA
D. ALTER TABLE Customer ADD (INTEGER District);
La sintaxis correcta para agregar una columna es: ALTER TABLE NombreTabla ADD
(NombreColumna TipoDato). El nombre de la columna va antes del tipo de dato. MODIFY se usa
para cambiar una columna existente, no para agregar una nueva.

Pregunta 18: Tiene una tabla Employee (EmployeeID, EmployeeName). ¿Qué


instrucción debe utilizar para devolver el número de filas de la tabla?
A. SELECT COUNT(rows) FROM Employee;
B. SELECT SUM(*) FROM Employee;
C. SELECT COUNT(*) FROM Employee; ✓ CORRECTA
D. SELECT * FROM Employee;
COUNT(*) cuenta todas las filas de la tabla, incluyendo las que tienen valores NULL.
COUNT(columna) contaría solo las filas no NULL de esa columna. SUM suma valores numéricos.
SELECT * devuelve todas las filas pero no el conteo.

Pregunta 19: Tiene dos tablas, cada una con 3 filas. Crea una consulta SQL con
combinación cruzada (CROSS JOIN) sin cláusula WHERE. ¿Cuántas filas se incluirán
en el producto cartesiano?
A. 0
B. 3
C. 6
D. 9 ✓ CORRECTA
En un producto cartesiano (CROSS JOIN), el número de filas resultante es el producto de las filas
de cada tabla: 3 × 3 = 9 filas. Cada fila de la primera tabla se combina con cada fila de la segunda.

Pregunta 20: Diseño de BD con tablas MACHINE (ID PK), OPERATOR (ID PK) y
ASSIGNMENT (tabla intermedia). Cada operador puede asignarse a 0 o más máquinas
y viceversa. ¿Qué claves seleccionar en el ERD?
[Link]. Clave principal ✓ ✓ CORRECTA
[Link]. Clave principal ✓ ✓ CORRECTA
[Link]. Clave externa (FK → [Link]) ✓ ✓ CORRECTA
[Link]. Clave externa (FK → [Link]) ✓ ✓ CORRECTA
Relación muchos a muchos (M:N) entre MACHINE y OPERATOR. Se resuelve con tabla
ASSIGNMENT que tiene dos claves externas: una que referencia a [Link] y otra a
[Link]. Ambas claves externas juntas forman la clave principal compuesta de
ASSIGNMENT.

Pregunta 21: Tabla de ganadores de concursos de mascotas con columnas: ID,


Event, Year, PetID, Birthdate, City. ¿Qué columna impide que la tabla tenga la tercera
forma normal (3NF)?
A. Year
B. PetID
C. Birthdate ✓ CORRECTA
D. ID
La 3NF requiere que todos los atributos no clave dependan SOLO de la clave primaria, no de otros
atributos no clave. Birthdate (fecha de nacimiento) depende de PetID (el animal), no de la clave de
la tabla (ID del evento). Esto es una dependencia transitiva que viola la 3NF.

Pregunta 22: Informe de diferencia neta en población estudiantil 2024-2025.


Requisitos: matriculados desde 1 jun 2024, graduados en 2024, ordenar por fecha de
matrícula más reciente primero. ¿Qué consulta debe usar?
A. SELECT * FROM students WHERE (enrollment_date >= '2024-06-01') AND
(academic_status='Graduated' OR graduation_date >= '2024-01-01') ORDER BY
enrollment_date;
B. SELECT * FROM students WHERE (enrollment_date >= '2024-06-01') AND
(academic_status='Graduated' AND graduation_date >= '2024-01-01') ORDER BY
enrollment_date ASC;
C. SELECT * FROM students WHERE (enrollment_date >= '2024-06-01') OR
(academic_status='Graduated' AND graduation_date >= '2024-01-01') ORDER BY
enrollment_date DESC; ✓ CORRECTA
D. SELECT * FROM students WHERE (enrollment_date >= '2024-06-01') OR
(academic_status='Graduated' OR graduation_date >= '2024-01-01') ORDER BY
enrollment_date DESC;
C es correcta: OR combina los dos grupos (matriculados desde jun 2024 O graduados en 2024).
DESC ordena de más reciente a más antiguo (primero la fecha más reciente). ORDER BY
enrollment_date DESC coloca la fecha de matrícula más reciente en primer lugar.

Pregunta 23: Tabla Customers (CustomerID, Address, Region, Country). Consulta


que devuelva el número de clientes en cada país que tenga MENOS de 50 clientes.
¿Qué consulta debe usar?
A. SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country
HAVING COUNT(CustomerID) < 50; ✓ CORRECTA
B. SELECT Country, CustomerID FROM Customers WHERE COUNT(CustomerID) < 50
GROUP BY Country;
C. SELECT COUNT(CustomerID), Country FROM Customers HAVING
COUNT(CustomerID) < 50 GROUP BY Country;
D. SELECT Country, CustomerID FROM Customers GROUP BY Country WHERE
COUNT(CustomerID) < 50;
A es correcta: HAVING filtra grupos después del GROUP BY (para filtrar sobre funciones de
agregación como COUNT). WHERE no puede usarse con COUNT. El orden correcto es: SELECT
→ FROM → GROUP BY → HAVING.

Pregunta 24: Tabla Company (ID, Name, State, Type, Description, Date). Crear una
vista llamada CustomersUT que muestre ID, Name, Type de empresas en Utah (UT).
Complete el código.
Línea 1. CREATE VIEW CustomersUT AS ✓ ✓ CORRECTA
Línea 2. SELECT ID, Name, Type FROM Company ✓ ✓ CORRECTA
Línea 3. WHERE State = 'UT'; ✓ ✓ CORRECTA
Sintaxis completa de la vista: CREATE VIEW CustomersUT AS SELECT ID, Name, Type FROM
Company WHERE State = 'UT'; — Una vista es una consulta guardada. CREATE VIEW nombre AS
SELECT... define la consulta que conforma la vista.

Pregunta 25: Tabla Volunteer (Id, GivenName) con registros: 1-Tia, 2-Susana, 3-
Joey. Debe cambiar el nombre de Tia por Kimberly. ¿Qué instrucción debe elegir?
A. SET Volunteer = 'Kimberly' WHERE GivenName = 'Tia';
B. UPDATE GivenName = 'Kimberly' FROM Volunteer WHERE GivenName = 'Tia';
C. UPDATE Volunteer SET GivenName = 'Kimberly' WHERE GivenName = 'Tia'; ✓
CORRECTA
D. SET GivenName = 'Kimberly' FROM Volunteer WHERE GivenName = 'Tia';
La sintaxis correcta de UPDATE es: UPDATE NombreTabla SET Columna = NuevoValor WHERE
Condición. La opción C sigue exactamente esta estructura. Las demás omiten UPDATE o invierten
el orden.

Pregunta 26: Una tabla tiene un índice agrupado. Complete las afirmaciones sobre
cuándo mejora el rendimiento.
1. Un índice agrupado mejora el rendimiento de las consultas que: devuelven
conjuntos de resultados grandes ✓ ✓ CORRECTA
2. Un índice agrupado mejora el rendimiento de las consultas en las columnas que:
son de acceso secuencial ✓ ✓ CORRECTA
Los índices agrupados (clustered indexes) ordenan físicamente los datos en la tabla. Son más
eficientes para: (1) consultas que devuelven rangos amplios de datos (grandes conjuntos de
resultados) y (2) acceso secuencial, ya que los datos están ordenados físicamente.

Pregunta 27: ¿Qué consulta devuelve pedidos realizados después de enero de 2023
en todos los estados EXCEPTO California (CA)?
A. SELECT * FROM orders WHERE order_date > '2023-01-31' OR ship_state LIKE 'CA';
B. SELECT * FROM orders WHERE order_date > '2023-01-31' AND ship_state <> 'CA';
✓ CORRECTA
C. SELECT * FROM orders WHERE order_date > '2023-01-31' OR ship_state <> 'CA';
D. SELECT * FROM orders WHERE order_date > '2023-01-31' AND ship_state LIKE 'CA';
B es correcta: AND combina ambas condiciones (fecha posterior Y estado diferente de CA). <>
significa 'diferente de'. OR devolvería demasiados resultados. LIKE 'CA' buscaría coincidencias de
patrón, no exclusión. La condición 'después de enero 2023' con > '2023-01-31' excluye el 31 de
enero.

Pregunta 28: Procedimiento almacenado con: SELECT 'Greetings ' + Prefix + ' ' +
FirstName FROM Person; Devuelve todos NULL. Comprueba que hay datos en
Person. ¿Cuál es la posible causa?
A. No se puede utilizar el operador más (+) para anexar datos de caracteres.
B. Debe especificar la palabra clave NULLIF en la consulta.
C. Las columnas Prefix o FirstName tienen valores null. ✓ CORRECTA
D. Debe especificar la palabra clave JOIN en la instrucción SELECT.
En SQL, cualquier concatenación con un valor NULL produce NULL como resultado. Si Prefix o
FirstName contienen NULL en alguna fila, toda la expresión concatenada devuelve NULL. La
solución sería usar ISNULL() o COALESCE() para reemplazar NULLs con cadenas vacías.

Pregunta 29: Tabla con ProductID y ProductCategory (books/movies). ¿Qué término


de base de datos describe la relación entre ProductID y ProductCategory?
A. dependiente de forma funcional ✓ CORRECTA
B. de composición
C. dependiente de forma relacional
D. determinista
La dependencia funcional significa que el valor de un atributo determina el valor de otro. ProductID
determina funcionalmente ProductCategory (dado un ProductID específico, se conoce su
categoría). Se escribe: ProductID → ProductCategory.

Pregunta 30: ¿Qué instrucción quita todas las filas de una tabla sin registrar las
eliminaciones de filas individuales?
A. ALTER TABLE
B. DROP TABLE
C. TRUNCATE TABLE ✓ CORRECTA
D. CREATE TABLE
TRUNCATE TABLE elimina todas las filas de una tabla sin registrar cada eliminación individual en
el log de transacciones (operación mínimamente registrada), lo que la hace mucho más rápida que
DELETE para grandes volúmenes. DROP TABLE elimina la tabla completa (estructura + datos).
ALTER TABLE modifica la estructura.

Pregunta 31: Crear una vista de los mamíferos de Norteamérica


(NorthAmericanMammals_View). Mueva los segmentos correctos al área de respuesta.
Línea 1. CREATE VIEW [dbo].[NorthAmericanMammals_View] ✓ ✓ CORRECTA
Línea 2. AS SELECT [Link], [Link] ✓ ✓ CORRECTA
Línea 3. FROM Animal a ✓ ✓ CORRECTA
Línea 4. WHERE [Link] = 'Mammals' AND [Link] = 1; ✓ (ya dado) ✓
CORRECTA
Consulta completa: CREATE VIEW [dbo].[NorthAmericanMammals_View] AS SELECT [Link],
[Link] FROM Animal a WHERE [Link] = 'Mammals' AND [Link] = 1; — No se usa
INSERT VIEW ni JOIN Animal a (sin tabla destino).

Pregunta 32: ¿Qué palabra clave combina los resultados de dos consultas y solo
devuelve las filas que aparecen en AMBOS conjuntos de resultados?
A. UNION
B. INTERSECT ✓ CORRECTA
C. ALL
D. JOIN
INTERSECT devuelve solo las filas comunes a ambas consultas (intersección de conjuntos).
UNION devuelve todas las filas de ambas consultas (unión). JOIN combina columnas de tablas
relacionadas. ALL se usa con UNION ALL para incluir duplicados.

Pregunta 33: Tabla Flight (ID, FlightNumber, OriginAirport, DestinationAirport,


DepartureTime, ArrivalTime). Mostrar vuelos que llegan al aeropuerto LGA más tarde
en el día de hoy. Ordenar desde la última hora de llegada hasta la primera. Complete la
consulta.
Conector entre condiciones WHERE. AND ✓ — ambas condiciones deben
cumplirse ✓ CORRECTA
Operador ArrivalTime. > ✓ — llegadas posteriores a la hora actual (GETDATE()) ✓
CORRECTA
Cláusula de orden. ORDER BY ✓ ✓ CORRECTA
Orden de resultados. ArrivalTime DESC ✓ — de la más tardía a la más temprana ✓
CORRECTA
Consulta completa: SELECT FlightNumber FROM Flight WHERE DestinationAirport = 'LGA' AND
ArrivalTime > GETDATE() ORDER BY ArrivalTime DESC; — DESC ordena de mayor a menor
(última hora primero). GETDATE() devuelve la fecha y hora actual.

Pregunta 34: Afirmaciones sobre funciones y procedimientos almacenados.


Seleccione Verdadero o Falso.
1. Puede eliminar datos mediante un procedimiento almacenado. → VERDADERO ✓
CORRECTA
2. Una función debe tener un valor devuelto. → VERDADERO ✓ CORRECTA
3. Un procedimiento almacenado debe tener un valor devuelto. → FALSO ✓
CORRECTA
Los procedimientos almacenados pueden ejecutar cualquier operación DML (INSERT, UPDATE,
DELETE). Las funciones SIEMPRE deben retornar un valor. Los procedimientos almacenados NO
necesitan retornar un valor (pueden o no hacerlo con parámetros OUTPUT).
Pregunta 35: Tabla Product (ProductID PK, ProductName, CategoryID
FK→Category). Se ejecuta: INSERT INTO Product VALUES (3296, 'Table', 4444);
¿Cuál es el resultado? (ProductID=3296 ya existe; CategoryID=4444 no existe en
Category)
A. Una infracción de restricción de la clave externa
B. Una nueva fila en la tabla Product
C. Una nueva fila en la tabla Category
D. Una infracción de restricción de la clave principal ✓ CORRECTA
E. Un error de sintaxis
ProductID=3296 YA EXISTE en la tabla (es la clave principal). Intentar insertar un valor duplicado
en la clave principal viola la restricción PRIMARY KEY. Aunque CategoryID=4444 tampoco existe
en Category, el error de clave principal ocurre primero.

Pregunta 36: Tabla Products (ItemNumber, ItemName, ItemDescription, Price). ¿Qué


consulta recuperará ItemName y Price cuando aparezca 'chocolate' en la columna
ItemDescription?
A. SELECT ItemName, Price FROM Products WHERE ItemDescription LIKE 'chocolate';
B. SELECT ItemName, Price FROM Products WHERE ItemDescription LIKE
'%chocolate%'; ✓ CORRECTA
C. SELECT ItemName, Price FROM Products WHERE ItemDescription IN '%chocolate%';
D. SELECT ItemName, Price FROM Products WHERE ItemDescription = 'chocolate';
LIKE '%chocolate%' usa el comodín % para buscar 'chocolate' en cualquier posición de la cadena
(antes o después puede haber cualquier texto). Sin %, solo busca la palabra exacta. IN se usa para
listas de valores, no para patrones.

Pregunta 37: ¿Qué instrucción crea una clave COMPUESTA (formada por dos
columnas)?
A. CREATE TABLE Order (OrderID INTEGER, OrderItemID INTEGER, PRIMARY KEY
OrderID, PRIMARY KEY OrderItemID);
B. CREATE TABLE Order (OrderID INTEGER, OrderItemID INTEGER, PRIMARY KEY);
C. CREATE TABLE Order (OrderID INTEGER, OrderItemID INTEGER, PRIMARY
KEY(OrderID, OrderItemID)); ✓ CORRECTA
D. CREATE TABLE Order (OrderID INTEGER PRIMARY KEY, OrderItemID INTEGER
PRIMARY KEY);
Una clave primaria compuesta se define al final de la tabla con PRIMARY KEY(columna1,
columna2). La opción A define dos PRIMARY KEY separadas (inválido). La D intenta definir dos
claves primarias por columna (solo puede haber una). La B no especifica las columnas.

Pregunta 38: Trabaja en una cafetería. Debe recomendar un tipo de datos para
almacenar importes de compras y ejecutar funciones financieras sobre ellos. ¿Qué tipo
de datos debe recomendar?
A. decimal ✓ CORRECTA
B. binario
C. bit
D. varchar
El tipo decimal (o numeric) es el apropiado para importes monetarios: permite precisión exacta con
decimales y soporta operaciones matemáticas y financieras. float/real pueden tener errores de
redondeo. varchar es texto. bit es para booleanos (0/1).

Pregunta 39: Tiene tablas SalesPerson y Sales. Debe asegurarse de que cada
registro de Sales tenga un registro SalesPerson asociado válido. ¿Qué objeto de base
de datos debe agregar a la tabla Sales?
A. Índice no agrupado
B. Índice agrupado
C. Clave principal
D. Clave externa ✓ CORRECTA
Una clave externa (FOREIGN KEY) en la tabla Sales que referencia a SalesPerson garantiza la
integridad referencial: no se puede insertar un registro en Sales con un SalesPersonID que no
exista en SalesPerson. Los índices mejoran el rendimiento pero no garantizan integridad.

Pregunta 40: Base de datos con tabla Customer. Debe eliminar el registro cuyo
CustomerID sea 12345. ¿Qué instrucción debe utilizar?
A. UPDATE Customer DELETE * WHERE CustomerID = 12345;
B. DELETE FROM Customer WHERE CustomerID = 12345; ✓ CORRECTA
C. DELETE CustomerID FROM Customer WHERE CustomerID = 12345;
D. UPDATE CustomerID FROM Customer DELETE * WHERE CustomerID = 12345;
La sintaxis correcta de DELETE es: DELETE FROM NombreTabla WHERE Condición. No se
especifican columnas en DELETE (elimina filas completas). UPDATE se usa para modificar
valores, no para eliminar filas.
Pregunta 1: La tabla Customers incluye datos con campos FirstName, LastName,
PhoneNumber y Extension. Se debe crear una consulta que devuelva LastName,
PhoneNumber y Extension para clientes que tengan extensiones, ordenado por apellido.
Completa el código seleccionando la opción correcta en cada lista desplegable.
SELECT LastName, PhoneNumber, Extension
FROM Customers
WHERE Extension [Extension] [IS NOT NULL]
ORDER BY [ORDER BY] LastName;
Selección 1. Extension / IS NOT NULL ✓ CORRECTA
Selección 2. ORDER BY ✓ CORRECTA

Pregunta 2: Se tiene la tabla Road creada con RoadID INTEGER NOT NULL y Distance
INTEGER NOT NULL. Se ejecuta: INSERT INTO Road VALUES (1234, 36); siendo que ya
existe la fila (1234, 22). ¿Cuál es el resultado?
A. Una nueva fila en la tabla ✓ CORRECTA
B. Un mensaje de error que indica que no se permiten valores NULL
C. Un error de sintaxis
D. Un mensaje de error que indica que no se permiten ID duplicados
La tabla no tiene PRIMARY KEY definida, por lo que permite RoadIDs duplicados.

Pregunta 3: Tiene que eliminar una tabla de base de datos. ¿Qué palabra clave del lenguaje
de definición de datos (DDL) debe utilizar?
A. DROP ✓ CORRECTA
B. TRUNCATE
C. DELETE
D. ALTER

Pregunta 4: La tabla PlayerStat contiene: PlayerID (INT, NOT NULL), TeamID (INT, NOT
NULL), GameDate (DATETIME, NULL), Points (INT, NULL). Debe mostrar el número total de
puntos por jugador del equipo con TeamID = 1.
Construye la consulta moviendo los segmentos de código correctos:
SELECT PlayerID, SUM(Points)
FROM PlayerStat
WHERE TeamID = 1
GROUP BY PlayerID;
Segmentos usados. SUM(Points) / WHERE / GROUP BY / PlayerID ✓ CORRECTA

Pregunta 5: Va a escribir una instrucción SELECT para encontrar todos los productos cuyos
nombres contengan un carácter específico. ¿Qué palabra clave debe utilizar en la cláusula
WHERE?
A. LIKE ✓ CORRECTA
B. IN
C. FETCH
D. BETWEEN
Pregunta 6: Debe normalizar una base de datos a la primera forma normal. ¿Qué dos
requisitos debe cumplir? (Elija dos respuestas)
A. Excluir las claves compuestas
B. Excluir las claves externas ✓ CORRECTA
C. Excluir los grupos repetidos ✓ CORRECTA
D. Excluir las filas duplicadas
La 1FN requiere: eliminar grupos repetidos y excluir claves externas. Las respuestas correctas son B y C.

Pregunta 7: Se tienen las tablas Cars (CarType, CarModel, ColorID) y Colors (Color, ColorID).
Se ejecuta: SELECT * FROM Cars LEFT OUTER JOIN Colors ON [Link] =
[Link]; ¿Cuántas filas devuelve?
Datos: Cars tiene 3 filas (Sedan-2, Truck-NULL, Minivan-1). Colors tiene Red=1, Gold=2.
A. 0
B. 2
C. 3 ✓ CORRECTA
D. 6
LEFT OUTER JOIN devuelve todas las filas de Cars (3), incluyendo Truck con NULL.

Pregunta 8: La tabla Products contiene ItemNumber, ItemName, ItemDescription y Price. ¿Qué


consulta aumentará un 6 por ciento el precio del artículo 1?
A. SET Price = Price * 1.06 FROM Products WHERE ItemNumber = 1;
B. ALTER Products SET Price = Price * 1.06 WHERE ItemNumber = 1;
C. USE Products SET Price = Price * 1.06 WHERE ItemNumber = 1;
D. UPDATE Products SET Price = Price * 1.06 WHERE ItemNumber = 1; ✓ CORRECTA

Pregunta 9: Se ejecuta: SELECT EmployeeID, FirstName, DepartmentName FROM Employee,


Department; ¿Qué tipo de operación se realizó?
A. Producto cartesiano ✓ CORRECTA
B. Combinación externa
C. Combinación de igualdad
D. Intersección
Al listar dos tablas en FROM sin condición JOIN se genera un producto cartesiano.

Pregunta 10: La tabla Customers tiene CustomerID, Address, Region y Country. Se necesita
una consulta SQL que devuelva el número de clientes en cada país que tenga menos de 50
clientes. ¿Qué consulta debe usar?
A. SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country HAVING
COUNT(CustomerID) < 50; ✓ CORRECTA
B. SELECT COUNT(CustomerID), Country FROM Customers HAVING COUNT(CustomerID) < 50
GROUP BY Country;
C. SELECT Country, CustomerID FROM Customers GROUP BY Country WHERE
COUNT(CustomerID) < 50;
D. SELECT Country, CustomerID FROM Customers WHERE COUNT(CustomerID) < 50 GROUP
BY Country;
HAVING siempre va después de GROUP BY. La opción A tiene el orden correcto.
Pregunta 11: Debe crear un informe que muestre la diferencia neta en la población estudiantil
para 2024-2025: estudiantes matriculados desde el 1 de junio de 2024 Y graduados en 2024,
ordenado por fecha de matrícula más reciente primero.
A. WHERE (enrollment_date >= '2024-06-01') OR (academic_status='Graduated' AND
graduation_date >= '2024-01-01') ORDER BY enrollment_date DESC;
B. WHERE (enrollment_date >= '2024-06-01') AND (academic_status='Graduated' OR
graduation_date >= '2024-01-01') ORDER BY enrollment_date;
C. WHERE (enrollment_date >= '2024-06-01') AND (academic_status='Graduated' AND
graduation_date >= '2024-01-01') ORDER BY enrollment_date ASC; ✓ CORRECTA
D. WHERE (enrollment_date >= '2024-06-01') OR (academic_status='Graduated' OR
graduation_date >= '2024-01-01') ORDER BY enrollment_date DESC;
Se necesita AND para ambas condiciones, y ASC es el orden predeterminado (más antigua primero = más
reciente al final, per requirements: 'apareciendo en primer lugar la fecha de matriculación más reciente' →
ORDER BY enrollment_date DESC sería más intuitivo, pero la respuesta marcada es C con ASC).

Pregunta 12: Escribe una serie de instrucciones SQL para una consulta larga y compleja que
envía resultados por correo. Quiere llamarlo manualmente cuando lo necesite. ¿Qué objeto de
base de datos puede utilizar para almacenar el código?
A. Procedimiento almacenado ✓ CORRECTA
B. Función
C. Vista
D. Desencadenador

Pregunta 13: ERD con tablas Machine (ID, Name, Model), Assignment (MachineID,
OperatorID, Role) y Operator (ID, Name, Experience). Se ejecuta: INSERT INTO
Assignment(MachineID, OperatorID) values (3, 4); y se recibe error de clave foránea
FK_Assignment_Machine. ¿Cuál es la causa?
A. La tabla Assignment tiene una fila existente que tiene un valor de MachineID de 3.
B. La tabla Machine no tiene filas que tengan un valor de ID de 3. ✓ CORRECTA
C. La tabla Operator no tiene filas que tengan un valor de ID de 4.
D. La tabla Assignment tiene una fila existente que tiene un valor de OperatorID de 4.
El error indica conflicto con FK_Assignment_Machine en la tabla Machine columna ID — no existe la máquina
con ID=3.

Pregunta 14: En su base de datos tiene una tabla Department y una tabla Employee. Debe
asegurarse de que un empleado se pueda asignar solo a un departamento existente. ¿Qué
debe aplicar a la tabla Employee?
A. Una clave externa ✓ CORRECTA
B. Una clave principal
C. Un índice
D. Un tipo de datos
E. Una restricción UNIQUE

Pregunta 15: Se ejecutan dos consultas con las tablas Machine, Operator y Assignment
(Machine ID=1,2,3; Assignment: MachineID=1,OperatorID=1 y MachineID=2,OperatorID=2;
Operator: ID=1,2,3).
Consulta 1: SELECT [Machine].[Name] AS Machine FROM [Machine] JOIN [Assignment] ON MachineID =
[Link];
Consulta 2: SELECT [Operator].[Name] AS Operator FROM [Operator] LEFT JOIN [Assignment] ON
OperatorID = [Link];
Primera consulta – filas devueltas. 2 (solo las máquinas que tienen asignación: ID 1 y 2) ✓
CORRECTA
Segunda consulta – filas devueltas. 3 (todos los operadores, con NULL donde no hay
asignación: Nina V no tiene asignación) ✓ CORRECTA

Pregunta 16: ¿Qué consulta devuelve correctamente un conjunto de resultados de todos los
pedidos en los que ship_state excluye Texas (TX) y Arizona (AZ)?
A. SELECT * FROM Orders WHERE NOT ship_state = 'TX' AND NOT ship_state = 'AZ';
B. SELECT * FROM Orders WHERE ship_state NOT = 'TX' OR ship_state NOT = 'AZ';
C. SELECT * FROM Orders WHERE ship_state NOT = 'TX' AND ship_state NOT = 'AZ'; ✓
CORRECTA
D. SELECT * FROM Orders WHERE NOT ship_state = 'TX' OR NOT ship_state = 'AZ';
Para excluir ambos estados se necesita NOT = con AND. La opción C es equivalente a <> 'TX' AND <> 'AZ'.

Pregunta 17: Va a escribir una instrucción SQL para crear una tabla. ¿Qué dos palabras clave
de SQL se pueden usar en una instrucción CREATE TABLE? (Elija dos respuestas)
A. PRIMARY KEY ✓ CORRECTA
B. INSERT INTO
C. CONSTRAINT ✓ CORRECTA
D. ORDER BY

Pregunta 18: ¿Qué instrucción debe utilizar para quitar una clave externa?
A. ALTER FOREIGN KEY;
B. DELETE FOREIGN KEY;
C. DELETE TABLE;
D. ALTER TABLE; ✓ CORRECTA
La sintaxis correcta es: ALTER TABLE nombre_tabla DROP FOREIGN KEY nombre_constraint;

Pregunta 19: La consulta tiene ORDER BY antes de GROUP BY y usa HAVING COUNT(*) =
1. Al ejecutarse muestra un error de sintaxis. ¿Qué debe hacer?
Consulta: SELECT Title FROM Movie WHERE Title = 'Sample Movie' ORDER BY Title GROUP BY Title
HAVING COUNT(*) = 1;
A. Quitar la cláusula ORDER BY.
B. Cambiar la cláusula HAVING a HAVING COUNT(1) = 1
C. Quitar la cláusula GROUP BY.
D. Cambiar la cláusula HAVING a HAVING COUNT(Title) = 1
Ninguna es marcada en la imagen (pregunta 19 sin selección visible). El error real es que ORDER BY está
antes de GROUP BY — el orden correcto es WHERE → GROUP BY → HAVING → ORDER BY. Quitar
ORDER BY (A) o moverlo al final corrige el error.

Pregunta 20: Misma consulta que pregunta 19 con ORDER BY antes de GROUP BY. ¿Qué
debe hacer para corregir el error de sintaxis?
Consulta: SELECT Title FROM Movie WHERE Title = 'Sample Movie' ORDER BY Title GROUP BY Title
HAVING COUNT(*) = 1;
A. Quitar la cláusula ORDER BY.
B. Cambiar la cláusula HAVING a HAVING COUNT(1) = 1
C. Quitar la cláusula GROUP BY. ✓ CORRECTA
D. Cambiar la cláusula HAVING a HAVING COUNT(Title) = 1
Al quitar GROUP BY, la consulta con WHERE ya filtra por una película específica y HAVING COUNT(*) = 1
puede funcionar sobre el conjunto. La respuesta marcada en la imagen es C.

También podría gustarte