1. ¿Cómo se ha creado la siguiente tabla? (2 puntos):
Proveedor | |
ID | RUC |
Nombre | DESCRIPTOR |
a. CREATE TYPE RUC FROM NVARCHAR(11) PRIMARY KEY;
CREATE TYPE DESCRIPTOR FROM NVARCHAR(32);
CREATE TABLE Proveedor (ID RUC, Nombre DESCRIPTOR);
CREATE TYPE DESCRIPTOR FROM NVARCHAR(32);
CREATE TABLE Proveedor (ID RUC, Nombre DESCRIPTOR);
b. CREATE TYPE RUC AS NVARCHAR(11);
CREATE TYPE DESCRIPTOR AS NVARCHAR(128);
CREATE TABLE Proveedor (RUC ID, DESCRIPTOR Nombre);
CREATE TYPE DESCRIPTOR AS NVARCHAR(128);
CREATE TABLE Proveedor (RUC ID, DESCRIPTOR Nombre);
c. CREATE TYPE RUC FROM NVARCHAR(11);
CREATE TYPE DESCRIPTOR FROM NVARCHAR(64);
CREATE TABLE Proveedor (ID RUC, Nombre DESCRIPTOR);
CREATE TYPE DESCRIPTOR FROM NVARCHAR(64);
CREATE TABLE Proveedor (ID RUC, Nombre DESCRIPTOR);
d. CREATE TYPE RUC AS INT IDENTITY(10000000000, 1);
CREATE TYPE DESCRIPTOR AS VARCHAR(92);
CREATE TABLE Proveedor (RUC ID, DESCRIPTOR Nombre);
CREATE TYPE DESCRIPTOR AS VARCHAR(92);
CREATE TABLE Proveedor (RUC ID, DESCRIPTOR Nombre);
2. ¿Cómo recupero el valor que genera una columna IDENTITY? (1 punto):
a. Antes de hacer el INSERT, consigo el siguiente valor mediante la variable @@IDENTITY.
b. Después de hacer el INSERT, recupero el valor generado mediante la función GET_IDENTITY().
c. Después de hacer el INSERT, consigo el valor generado mediante la función SCOPE_IDENTITY() con el nombre de la tabla como parámetro.
d. Antes de ejecutar el INSERT, obtengo el siguiente valor a generar mediante la función GET_IDENTITY().
e. Luego de ejecutar el INSERT, consigo el valor generado mediante la función SCOPE_IDENTITY().
f. Luego de ejecutar el INSERT, recupero el valor generado mediante la función CURRENT_IDENTITY().
3. Mostrar los nombres de clientes y saldo actual, solo si tienen un saldo mayor a S/. 500.00 (2 puntos):
|
|
|
a. SELECT c.Nombre, sum(m.Importe) from Cliente c
INNER JOIN Cuenta x on c.ID = x.ClienteID
INNER JOIN Movimiento m ON x.ID = m.CuentaID
GROUP BY c.Nombre HAVING sum(m.Importe) > 500.00;
INNER JOIN Cuenta x on c.ID = x.ClienteID
INNER JOIN Movimiento m ON x.ID = m.CuentaID
GROUP BY c.Nombre HAVING sum(m.Importe) > 500.00;
b. SELECT c.Nombre, sum(m.Importe) from Cliente c
INNER JOIN Cuenta x on c.ID = x.ClienteID
INNER JOIN Movimiento m ON x.ID = m.CuentaID
GROUP BY c.Nombre WHERE sum(m.Importe) > 500.00;
INNER JOIN Cuenta x on c.ID = x.ClienteID
INNER JOIN Movimiento m ON x.ID = m.CuentaID
GROUP BY c.Nombre WHERE sum(m.Importe) > 500.00;
c. SELECT c.Nombre, sum(m.Importe) from Cliente c
INNER JOIN Cuenta x on c.ID = x.ClienteID
INNER JOIN Movimiento m ON x.ID = m.CuentaID
HAVING sum(m.Importe) > 500.00 GROUP BY c.Nombre;
INNER JOIN Cuenta x on c.ID = x.ClienteID
INNER JOIN Movimiento m ON x.ID = m.CuentaID
HAVING sum(m.Importe) > 500.00 GROUP BY c.Nombre;
d. SELECT c.Nombre, sum(m.Importe) from Cliente c
INNER JOIN Cuenta x on c.ID = x.ClienteID
INNER JOIN Movimiento m ON x.ID = m.CuentaID
WHERE sum(m.Importe) > 500.00 GROUP BY c.Nombre;
INNER JOIN Cuenta x on c.ID = x.ClienteID
INNER JOIN Movimiento m ON x.ID = m.CuentaID
WHERE sum(m.Importe) > 500.00 GROUP BY c.Nombre;
4. De la siguiente tabla, quitar la columna Descuento (que contiene los porcentajes de descuento aplicable al precio), no sin antes aplicar el descuento respectivo al precio. (2 puntos):
Motor | |
ID | INT |
Nombre | NVARCHAR(64) |
Precio | DECIMAL(19, 5) |
Descuento | DECIMAL(4, 2) |
a. UPDATE Motor SET Precio -= (Precio * Descuento / 100.00);
ALTER TABLE Motor DELETE COLUMN Descuento;
ALTER TABLE Motor DELETE COLUMN Descuento;
b. UPDATE Motor SET Precio = Precio * Descuento / 100.00;
DROP COLUMN Descuento FROM Motor;
DROP COLUMN Descuento FROM Motor;
c. UPDATE Motor SET Precio = Precio * (100.00 – Descuento) / 100.00;
ALTER TABLE Motor DROP COLUMN Descuento;
ALTER TABLE Motor DROP COLUMN Descuento;
d. UPDATE Motor SET Precio = Precio * (100.00 + Descuento) / 100.00;
ALTER TABLE Motor DELETE COLUMN Descuento;
ALTER TABLE Motor DELETE COLUMN Descuento;
e. UPDATE Motor SET Precio = Precio * (Descuento – 100.00) / 100.00;
DROP COLUMN Descuento FROM Motor;
DROP COLUMN Descuento FROM Motor;
5. Asumiendo que “Nombre” es una columna de la tabla “Alumno”, ¿Qué consulta muestra los tres primeros caracteres del nombre? (2 puntos):
a. SELECT Nombre CHAR(3) FROM Alumno;
b. SELECT LEFT(Nombre, 0, 3) FROM Alumno;
c. SELECT SUBSTRING(Nombre, 0 , 3) FROM Alumno;
d. SELECT RIGHT(Nombre, 3) FROM Alumno;
e. SELECT SUBSTRING(Nombre, 1, 3) FROM Alumno;
f. SELECT LEFT(Nombre, LEN(Nombre) – 3) FROM Alumno;
g. SELECT SUBSTRING(Nombre, 3, 1) FROM Alumno;
h. SELECT SUBSTRING(Nombre, 3, 0) FROM Alumno;
i. SELECT EXTRACT(Nombre, 3 CHARS) FROM Alumno;
6. En la siguiente tabla, la columna Nota no debe permitir valores nulos y tener una restricción que evite valores incorrectos, es decir la nota debe estar entre 0 y 20 (2 puntos):
Examen | ||
CursoID (PK) | NVARCHAR(32) | NOT NULL |
AlumnoID (PK) | NVARCHAR(32) | NOT NULL |
Nota | INT | NULL |
a. ALTER TABLE Examen UPDATE COLUMN Nota INT NOT NULL;
CREATE CONSTRAINT CHK_Nota
CHECK(Nota >= 0 and Nota =< 20);
CREATE CONSTRAINT CHK_Nota
CHECK(Nota >= 0 and Nota =< 20);
b. ALTER TABLE Examen ALTER COLUMN Nota SHORT NOT NULL;
ALTER TABLE Examen ADD CONSTRAINT CHK_Nota
CHECK(Nota in (0, 20));
ALTER TABLE Examen ADD CONSTRAINT CHK_Nota
CHECK(Nota in (0, 20));
c. ALTER TABLE Examen ALTER COLUMN Nota INT NOT NULL,
ALTER TABLE Examen ADD CONSTRAINT CHK_Nota
CHECK(Nota >= 0 and Nota =< 20);
ALTER TABLE Examen ADD CONSTRAINT CHK_Nota
CHECK(Nota >= 0 and Nota =< 20);
d. ALTER TABLE Examen UPDATE COLUMN Nota INT NOT NULL;
ALTER TABLE Examen ADD CHECK CHK_Nota
RESTRICTION(Nota IN (0 TO 20));
ALTER TABLE Examen ADD CHECK CHK_Nota
RESTRICTION(Nota IN (0 TO 20));
e. ALTER TABLE Examen ALTER COLUMN Nota INT NOT NULL;
CREATE CONSTRAINT CHK_Nota
CHECK(Nota <= 0 and Nota >= 20);
CREATE CONSTRAINT CHK_Nota
CHECK(Nota <= 0 and Nota >= 20);
7. ¿Que valor devuelve el script mostrado? (2 puntos):
DECLARE @numero INT = 0;
SELECT @numero = @numero + 1;
DECLARE @numero INT = 0;
SELECT @numero = @numero + 1;
a. Muestra una columna llamada @numero con el valor 0.
b. Muestra una columna llamada @numero con el valor 1.
c. Muestra una columna sin nombre con el valor 1.
d. No devuelve resultados, estamos usando SELECT como un SET.
e. No devuelve resultados, una variable no permite realizar un SELECT.
f. No devuelve resultados, SELECT no devuelve datos cuando el script tiene variables inicializadas.
8. Crea una base de datos llamada SISE de manera rápida (1 punto):
a. NEW DATABASE [SISE];
b. CREATE DATA BASE [SISE];
c. ALTER DATABASE [SISE];
d. NEW CATALOG [SISE];
e. CREATE DATABASE [SISE];
f. NEW DB [SISE];
g. CREATE CATALOG [SISE];
9. ¿Cómo obtengo resultados en formato XML para las consultas? (1 punto):
a. Con la cláusula GET XML al final de la consulta.
b. Con la cláusula SHOW XML al final de la consulta.
c. Con la clausula FOR XML al inicio de la consulta.
d. Con la clausula SHOW XML al inicio de la consulta.
e. Con la cláusula FOR XML al final de la consulta.
f. Con la clausula SET RESULTS TO XML al final de la consulta.
10.¿Qué valores tienen las variables @a y @b luego de ejecutar el procedimiento almacenado? (2 puntos):
CREATE PROCEDURE Calcular_Bono
@clase INT = 1 OUTPUT,
@bono MONEY OUTPUT
AS BEGIN
IF @clase = 0
SET @clase = 3;
IF @clase = 1
SET @bono = 500.00;
ELSE IF @clase = 2
SET @bono = 300.00;
ELSE IF @clase = 3
SET @bono = 100.00;
ELSE
SET @bono = 25.00;
END
GO
CREATE PROCEDURE Calcular_Bono
@clase INT = 1 OUTPUT,
@bono MONEY OUTPUT
AS BEGIN
IF @clase = 0
SET @clase = 3;
IF @clase = 1
SET @bono = 500.00;
ELSE IF @clase = 2
SET @bono = 300.00;
ELSE IF @clase = 3
SET @bono = 100.00;
ELSE
SET @bono = 25.00;
END
GO
DECLARE @a INT = NULL;
DECLARE @b MONEY = 0;
EXECUTE Calcular_Bono @a OUTPUT, @b OUTPUT;
DECLARE @b MONEY = 0;
EXECUTE Calcular_Bono @a OUTPUT, @b OUTPUT;
a. @a = 1 y @b = 0.00
b. @a = NULL y @b = 25.00
c. @a = 3 y @b = 100.00
d. @a = NULL y @b = 100.00
e. @a = 1 y @b = 500.00
f. @a = 3 y @b = 25.00
g. @a y @b no cambian de valor
11. De la tabla siguiente, mostrar los códigos de artículos únicos (1 punto):
DetalleVenta | |
ID (PK) | INT |
VentaID (FK) | INT |
ArticuloID (FK) | NVARCHAR(32) |
Cantidad | INT |
Precio | MONEY |
PorcentajeDescuento | MONEY |
a. SELECT TOP 1 ArticuloID FROM DetalleVenta;
b. SELECT DISTINCT ArticuloID FROM DetalleVenta;
c. SELECT UNIQUE VALUES ArticuloID FROM DetalleVenta;
d. SELECT DISTINCT ID, ArticuloID FROM DetalleVenta;
e. SELECT NO REPEAT ArticuloID FROM DetalleVenta;
12.Utilizando la tabla de la pregunta N° 6, mostrar el código de detalle y el total generado por cada artículo (2 puntos).
a. SELECT ID, (Cantidad * Precio * PorcentajeDescuento) / 100.00 AS Total FROMDetalleVenta;
b. SELECT ID, (Cantidad * Precio * 100.00 – PorcentajeDescuento / 100.00) AS Total FROMDetalleVenta;
c. SELECT ID, (Cantidad * Precio * (100.00 – PorcentajeDescuento) / 100.00) AS Total FROMDetalleVenta;
d. SELECT ID, (Cantidad * Precio * (PorcentajeDescuento – 100.00) / 100.00) AS Total FROM DetalleVenta;
Eso es todo.
No hay comentarios:
Publicar un comentario