sábado, 26 de abril de 2014

Tarea #4

--Crear secuencia
create SEQUENCE seq_id_equipo
increment by 1
start with 200
maxvalue 1000
nocache
nocycle;

--Necesario para permitir valores mas grandes
ALTER TABLE EQUIPO MODIFY id_equipo2 number(38);
--Agrego una linea utilizando la secuencia
INSERT INTO EQUIPO VALUES (seq_id_equipo.NEXTVAL, 'PC','Dell','D630','Video1');
INSERT INTO EQUIPO VALUES (seq_id_equipo.NEXTVAL, 'PC','Dell','D630','Video2');
INSERT INTO EQUIPO VALUES (seq_id_equipo.NEXTVAL, 'PC','Dell','D630','Video3');
INSERT INTO EQUIPO VALUES (seq_id_equipo.NEXTVAL, 'PC','Dell','D630','Video4');

-- Reviso el valor agregado
select * from EQUIPO

-- Consulto valor actual de la secuencia
select seq_id_equipo.CURRVAL FROM dual;

-- Modifico secuencia para que incremente de 1 en 1
drop SEQUENCE seq_id_equipo;
create SEQUENCE seq_id_equipo
increment by 1
start with 300
maxvalue 1000
nocache
nocycle;

--inserto nuevos registros para probar modificacion de secuencia
INSERT INTO EQUIPO VALUES (seq_id_equipo.NEXTVAL, 'PC','Dell','D630','Video5');
INSERT INTO EQUIPO VALUES (seq_id_equipo.NEXTVAL, 'PC','Dell','D630','Video6');
INSERT INTO EQUIPO VALUES (seq_id_equipo.NEXTVAL, 'PC','Dell','D630','Video7');
INSERT INTO EQUIPO VALUES (seq_id_equipo.NEXTVAL, 'PC','Dell','D630','Video8');

--Indices, crea indice sobre la columna TIPO_EQUIPO--
create index index_tipo_equipo on equipo(TIPO_EQUIPO);

--Elimino indice--
drop index index_tipo_equipo;

--Crear sinonimos--
create synonym marca for MARCA_EQUIPO;
--Eliminar sinonimo
drop synonym marca;

--Resultados
sequence SEQ_ID_EQUIPO creado.
table EQUIPO alterado.
1 filas insertadas.
1 filas insertadas.
1 filas insertadas.
1 filas insertadas.
>>Query Run In:Resultado de la Consulta
sequence SEQ_ID_EQUIPO borrado.
sequence SEQ_ID_EQUIPO creado.
1 filas insertadas.
1 filas insertadas.
1 filas insertadas.
1 filas insertadas.
index INDEX_TIPO_EQUIPO creado.
index INDEX_TIPO_EQUIPO borrado.
synonym MARCA creado.
synonym MARCA borrado.

sábado, 19 de abril de 2014

Tarea 3

-- Creación de una vista simple //total de desktop
CREATE VIEW totdesk
AS SELECT id_equipo2, marca_equipo, modelo_equipo
FROM equipo
WHERE tipo_equipo='Desktop';

desc totdesk
select * from totdesk;

-- Creación de una vista compleja
CREATE VIEW userlap
(usuario, marca, modelo)
AS SELECT a.nom_analista ||' '|| a.ap_analista, b.marca_equipo, b.modelo_equipo
FROM analista a, equipo b
WHERE a.id_equipo = b.id_equipo2;

desc userlap
select * from userlap;

-- Creación de una vista con restricción de comprobación //total de desktop READ ONLY
CREATE VIEW totdesk
AS SELECT id_equipo2, marca_equipo, modelo_equipo
FROM equipo
WHERE tipo_equipo='Desktop'
WITH READ ONLY;

desc totdesk
select * from totdesk;

-- Intento de modificar datos de la vista
DELETE FROM totdesk
WHERE marca_equipo = 'Asus';

## Resultado ##
Error que empieza en la línea: 72 del comando -
DELETE FROM totdesk
WHERE marca_equipo = 'Asus'
Error en la línea de comandos : 72 Columna : 13
Informe de error -
Error SQL: ORA-42399: cannot perform a DML operation on a read-only view
###############

-- Eliminación de vistas
drop view totdesk
drop view userlap

[Tarea 1 - Corregida]

drop table equipo cascade constraint;
drop table analista cascade constraint;

CREATE TABLE equipo
(
id_equipo2 NUMBER(2) NOT NULl,
tipo_equipo VARCHAR2(22) NOT NULL,
marca_equipo VARCHAR2(22) NOT NULL,
modelo_equipo VARCHAR2(22) NOT NULL,
falla_equipo VARCHAR2(45) NOT NULL,
 CONSTRAINT equip_id_equip_PK PRIMARY KEY (id_equipo2)
);

CREATE TABLE analista
(
id_analista NUMBER(2) NOT NULL,
nom_analista VARCHAR2(22) NOT NULL,
ap_analista VARCHAR2(22) NOT NULL,
id_equipo NUMBER(2) NOT NULL,
CONSTRAINT analis_id_analis_PK PRIMARY KEY (id_analista),
CONSTRAINT anali_id_equip_FK FOREIGN KEY (id_equipo) REFERENCES EQUIPO(id_equipo2)
);

-- poblamos la tabla Equipo

INSERT INTO EQUIPO VALUES (10, 'Laptop','Toshiba','Convertible','Pantalla');
INSERT INTO EQUIPO VALUES (11, 'Desktop','Acer','5050','SO');
INSERT INTO EQUIPO VALUES (12, 'Laptop','Sony','Vaio','Placa madre');
INSERT INTO EQUIPO VALUES (13, 'Laptop','Asus','J520','SO');


-- poblamos la tabla Analista

INSERT INTO ANALISTA VALUES (01, 'Cristopher','Canales',10);
INSERT INTO ANALISTA VALUES (02, 'Gabriel','Lois',11);
INSERT INTO ANALISTA VALUES (03, 'Mario','Contreras',12);
INSERT INTO ANALISTA VALUES (04, 'Jose','Gonzalez',13);

desc analista

select * from analista;
select * from equipo;

viernes, 11 de abril de 2014

Tarea 2

ALTER TABLE

Con la sentencia ALTER TABLE podemos modificar la estructura de una tabla existente,
según queramos podemos, añadir/eliminar columnas. Otra función de esta sentencia es
crear o borrar restricciones.

Sintaxis:
ALTER TABLE [esquema.]tabla {ADD|MODIFY|DROP}...



Agregar Columna:
ALTER TABLE ANALISTA ADD email VARCHAR2(35);

Modificar Columna:
ALTER TABLE ANALISTA MODIFY email VARCHAR2(50);

Eliminar Columna:
ALTER TABLE ANALISTA DROP COLUMN email;





Agregar Constraint:
ALTER TABLE ANALISTA ADD CONSTRAINT analis_email_UK UNIQUE (email);


Modificar Constraint:
ALTER TABLE ANALISTA DISABLE CONSTRAINT analis_email_UK;

Eliminar Constraint:
ALTER TABLE ANALISTA DROP CONSTRAINT analis_email_UK;

sábado, 5 de abril de 2014

Tarea 1

//se crea la tabla Analista
==============================================
CREATE TABLE analista
    (
    id_analista  integer     NOT NULL,
    nom_analista varchar(22) NOT NULL,
    ap_analista  varchar(22) NOT NULL,
    id_equipo integer     NOT NULL,
   
    CONSTRAINT id_analista_PK  PRIMARY KEY,
    CONSTRAINT id_equipo_FK FOREIGN KEY,
    );
==============================================
//se crea tabla Equipo
CREATE TABLE equipo
  (
    id_equipo     integer     NOT NULL,
    tipo_equipo   varchar(22) NOT NULL,
    marca_equipo  varchar(22) NOT NULL,
    modelo_equipo varchar(22) NOT NULL,
    falla_equipo  varchar(45) NOT NULL,
   
    CONSTRAINT id_equipo_PK PRIMARY KEY,
 
   );


==============================================
//poblamos la tabla Analista

INSERT INTO ANALISTA VALUES (200, 'Cristopher' 'Canales''0003');
INSERT INTO ANALISTA VALUES (201, 'Gabriel' 'Lois''0002');
INSERT INTO ANALISTA VALUES (202, 'Mario' 'Contreras''0001');
===============================================
//poblamos la tabla Equipo
INSERT INTO EQUIPO VALUES (0001, 'Laptop' 'Toshiba' 'Convertible' 'Pantalla');
INSERT INTO EQUIPO VALUES (0002, 'Desktop' 'Acer' '5050' 'SO');
INSERT INTO EQUIPO VALUES (0003, 'Laptop' 'Sony' 'Vaio' 'Placa madre');