n) NOTA:
y LOS EJERCICIOS QUE NO SE ENCUENTRAN RESUELTOS, YA NO SE RESOLVERAN, SI TIENEN DUDA RESOLVERLOS Y PONERLOS EN COMENTARIOS, DONDE TODOS PODRAN APORTAR PARA RESOLVER DUDAS Y CORREGIR. GRACIAS.
iI Indique que opciones se reflejan en la b.D.______________________________
AA) Insert
BB) Update
C)) Delete
D)) Drop
E E) Delete
F F) Rollback
G) Drop
HH) Update
I)I) Rolback
JJ ) Insert
KK ) Commit
LL ) Delete
M ) Exit
Se cuenta con las siguientes tablas las cuales ya contienen información(registros):
Tabla Carrera
|
Tabla Alumno
|
Tabla Falta
|
Cve_Carr Number(3)
Nombre_Carr varchar2(30)
Director_Carr varchar2(30)
Duracion_Carr number(1)
|
Matricula number(4)
Cve_carr number(3)
Curp_Al number
Nombre varchar2(30)
Apellido varchar2(30)
Fecha_Nac date
Fecha_ing date
Sexo_Al varchar2(1)
Estatus varchar2(2) *
Beca number(6,2)
|
ID_Falta number(2)
Matricula number(4)
Fecha date
Estatus_Fal varchar2(1) **
|
- Cree la tabla Alumno con las restricciones necesarias para la siguiente información:
· matricula, único, no nulo y es parte de la llave primaria.
· CURP único, no nulo es parte de la llave primaria.
· Nombre con una extensión máxima de 30 caracteres, no nulo.
· Apellido con una extensión máxima de 30 caracteres, no nulo
· Clave_c No nulo, Fk con la tabla carrea (ya existe)
· Fecha ingreso
· Sexo carácter de 1, no nulo y solamente podrán tomar los valores de F y M.
· Estatus A- Activo, B- BAJA, E- Espera, T-terminado, A- Atrasado)
Subrayar la integridad de dominio e indicar para que sirve
Tachar la integridad referencial e indicar su uso
Encerrar en un circulo la integridad de entidad e indicar su uso.
3. 3. De la sintaxis para :
a) Agregue a la tabla carrera el campo fecha_inicio que no permita valores nulos, para este punto suponer que la tabla NO tiene registros.
b) Agregue a la tabla alumno el campo Promedio que no permita valores nulos, para este punto suponer que la tabla YA tiene registros, validar que solo pueda tener promedio entre 50 y 100, con dos decimales.
c) Modifique el campo de nombre alumno ampliándolo para que quepan 5 caracteres mas.
d) Elimine el campo fecha_inicio de la tabla carrera
e) Modificar la validación del promedio, ahora solo permitirá valores de 5 a 10, recordar que la tabla YA tiene valores.
f) Elimine el constraint que valida los valores permitidos para el estatus del alumno de la tabla ALUMNO (no conoce el nombre del constraint, poner todos los pasos para encontrar el nombre del constraint XXX201)
BUSCAR EN EL DICCIONARIO DE DATOS EL NOMBRE DEL CONSTRAINT ASOCIADO A LA TABLA : SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, SEARCH_CONDITIONS, TABLE_NAME
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = &NOMTABLA;
ALTER TABLE ALUMNO DROP CONSTRAINT XXX201
BUSCAR EN EL DICCIONARIO DE DATOS EL NOMBRE DEL CONSTRAINT ASOCIADO A LA TABLA : SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, SEARCH_CONDITIONS, TABLE_NAME
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = &NOMTABLA;
ALTER TABLE ALUMNO DROP CONSTRAINT XXX201
4. 4.Cree los siguientes objetos:
a. Cree la tabla Alumno_RES con la estructura y la matricula, carrera y promedio de la tabla ALUMNO mas un campo extra con la fecha del respaldo. En un solo paso.
CREATE TABEL ALUMNO_RES AS
SELECT MATRICULA, CVE_C, PROMEDIO, SYSDATE FECHA_RES
FROM ALUMNO
CREATE TABEL ALUMNO_RES AS
SELECT MATRICULA, CVE_C, PROMEDIO, SYSDATE FECHA_RES
FROM ALUMNO
b. Crear el objeto necesarios para hacer único el CURP (no usar constraint)
CREATE UNIQUE INDEX IUNICOCURP ON ALUMNO(CURP)
CREATE UNIQUE INDEX IUNICOCURP ON ALUMNO(CURP)
c. Crear un objeto para agilizar la búsqueda en la tabla ALUMNO considerando como representativa la siguiente consulta:
Select nom_A, ape_a, cve_carrera, estatus
From ALUMNO
Where cve_c in (1,2,3)
And (estatus =’B’
Or promedio <7)
RECORDANDO QUE EN EL SELECT SE RESTRINGEN LOS CAMPOS A DESPLEGAR Y EN EL WHERE LOS REGISTROS, ES DECIR EL WHERE CONTIENE LOS CRITEREIOS DE BUSQUEDA, LA SINTAXIS QUEDARIA DE LA SIGUIENTE MANERA:
CREATE INDEX XINDICE ON ALUMNO (CVE_C, ESTATUS, PROMEDIO)
RECORDANDO QUE EN EL SELECT SE RESTRINGEN LOS CAMPOS A DESPLEGAR Y EN EL WHERE LOS REGISTROS, ES DECIR EL WHERE CONTIENE LOS CRITEREIOS DE BUSQUEDA, LA SINTAXIS QUEDARIA DE LA SIGUIENTE MANERA:
CREATE INDEX XINDICE ON ALUMNO (CVE_C, ESTATUS, PROMEDIO)
d. Cree un objeto que muestre el nombre de la carrera, el nombre completo del alumno, el estatus y fecha de ingreso, de los alumnos con estatus B y BT.
CREATE VIEW VISTA1 AS
SELECT C.NOM_CARR, A.NOM_ALUMNO, A.APELLIDO, A.ESTATUS,
A.FECHA_ING
FROM CARRERA C, ALUMNO A
WHERE C.CVE_CARR = A.CVE_CARR
AND A.ESTATUS IN ('B','BT')
CREATE VIEW VISTA1 AS
SELECT C.NOM_CARR, A.NOM_ALUMNO, A.APELLIDO, A.ESTATUS,
A.FECHA_ING
FROM CARRERA C, ALUMNO A
WHERE C.CVE_CARR = A.CVE_CARR
AND A.ESTATUS IN ('B','BT')
e. Cree un objeto para que la tabla de FALTA se pueda acceder con el nombre de INICID_ALUM
CREATE SYNONYM INCID_ALUM FOR FALTA
CREATE SYNONYM INCID_ALUM FOR FALTA
f. Cree un objeto para que el usuario X01 y todos los demás usuarios puedan ver la tabla ALUMNO que pertenece al usuario DZBC032 con el nombre ALUMNO
CREATE PUBLIC SYNONYM ALUMNO FOR DZBC032.ALUMNO
CREATE PUBLIC SYNONYM ALUMNO FOR DZBC032.ALUMNO
5. 5. Cree los siguientes procedimientos:
a) Cree un procedimiento que haga un respaldo a la tabla de ALUMNO_RES ( la tabla ya existe), insertando los datos de la tabla Alumno_RES mas un campo extra con la fecha en la que se esta haciendo el respaldo.
CREATE PROCEDURE RESPALDO
AS
BEGIN
DELETE ALUMNO_RES;
INSERT INTO ALUMNO_RES (MATRICULA, CVE_Carr, PROMEDIO, FECHA_RES )
SELECT matricula, cve_carr, promedio, sysdate
from alumno;
COMMIT; -- PARA GUARDAR LA INFORMACION EN LA BD
END;
CREATE PROCEDURE RESPALDO
AS
BEGIN
DELETE ALUMNO_RES;
INSERT INTO ALUMNO_RES (MATRICULA, CVE_Carr, PROMEDIO, FECHA_RES )
SELECT matricula, cve_carr, promedio, sysdate
from alumno;
COMMIT; -- PARA GUARDAR LA INFORMACION EN LA BD
END;
b) Cree un procedimiento que inserte información en la tabla carrera.
CREATE PROCEDURE AGREGA (PCve_C IN Number,PNom_C IN varchar2,
BEGIN
INSERT INTO CARRERA (Cve_Carr, Nombre_Carr, Director_Carr, Duracion_Carr )
VALUES(PCve_C ,PNom_C ,PDir , PDur );
COMMIT; -- PARA GUARDAR LA INFORMACION EN LA BD
END;
CREATE PROCEDURE AGREGA (PCve_C IN Number,PNom_C IN varchar2,
PDir IN varchar2, PDur IN NUMBER)
ASBEGIN
INSERT INTO CARRERA (Cve_Carr, Nombre_Carr, Director_Carr, Duracion_Carr )
VALUES(PCve_C ,PNom_C ,PDir , PDur );
COMMIT; -- PARA GUARDAR LA INFORMACION EN LA BD
END;
c) Cree un procedimiento que permita eliminar al director de una carrera especifica.
CREATE PROCEDURE ELIMDIR( PCVE_C IN NUMBER)
AS
BEGIN
UPDATE CARRERA
SET DIRECTOR = NULL
WHERE CVE_C = PCVE_C;
END;
CREATE PROCEDURE ELIMDIR( PCVE_C IN NUMBER)
AS
BEGIN
UPDATE CARRERA
SET DIRECTOR = NULL
WHERE CVE_C = PCVE_C;
END;
d) Cree un procedimiento que actualice el promedio y la beca de un alumno especifico, siempre y cuando se encuentre activo.
CREATE PROCEDURE ACTUAL (PPROMEDIO IN NUMBER, PBECA IN NUMBER, PMAT IN NUMBER) AS
BEGIN
UPDATE ALUMNO
SET PROEMEDIO = PPROMEDIO, BECA = PBECA
WHERE ESTATUS = 'A'
AND MAT = PMAT;
END;
CREATE PROCEDURE ACTUAL (PPROMEDIO IN NUMBER, PBECA IN NUMBER, PMAT IN NUMBER) AS
BEGIN
UPDATE ALUMNO
SET PROEMEDIO = PPROMEDIO, BECA = PBECA
WHERE ESTATUS = 'A'
AND MAT = PMAT;
END;
e) Cree un procedimiento que elimine todas las faltas con estatus justificado cometidas en el mes anterior.
CREATE PROCEDURE ELIMINA
AS
BEGIN
DELETE INCIDENCIA
WHERE TIPO IN ('FJ','FI')
AND TO_CHAR( FECHA, 'MM')= TO_CHAR(ADD_MONTHS(SYSDATE,-1), 'MM');
END;
CREATE PROCEDURE ELIMINA
AS
BEGIN
DELETE INCIDENCIA
WHERE TIPO IN ('FJ','FI')
AND TO_CHAR( FECHA, 'MM')= TO_CHAR(ADD_MONTHS(SYSDATE,-1), 'MM');
END;
6. Haga las siguientes consultas:
a) Desplegar toda la información de la tabla ALUMNO siempre y cuando el nombre del alumno tenga una a en la segunda posición.
SELECT *
FROM ALUMNO
WHERE NOM_A LIKE '%A%';
SELECT *
FROM ALUMNO
WHERE NOM_A LIKE '%A%';
AQUI PODRAN RESOLVER LOS EJERCICIOS FALTANTES, PONER EL NUMERO DEL EJERCICIO Y LA LETRA QUE LO IDENTIFICA, ASI COMO EN QUE TIENE DUDA O QUE NO PUDO RESOLVER
ResponderEliminarProfesora porque en el ejercicio 5 inciso A, se muestra el select solo? y porque se tiene que borrar antes los registros de la tabla, así como porque se utiliza la función into y no el select para hacer el respaldo, porque no se utiliza la función sysdate en fecha.
ResponderEliminarSaludos!
En el ejercicio 5 A, se muestra el select solo porque ya no termine de hacerlo, lo deje como boceto:
ResponderEliminarINSERT INTO ALUMNO_RES (MATRICULA, CVE_Carr, PROMEDIO, FECHA_RES )
SELECT matricula, promedio, sysdate
from alumno;
Into no es una funcion, es una palabra reservada propia del insert
INSERT INTO Nom_tabla.....