Está en la página 1de 3

I.

Creación de tablas, tipos de datos y restricciones básicas


Las tablas son la unidad básica de almacenamiento en una base de datos en Oracle. Una tabla es un objeto de dos
dimensiones constituido por filas y columnas. El tipo más común de tabla en Oracle es una tabla relacional.

Ahora crearemos las tablas de la base de datos CANASTAWEB usando directamente código sql.

create table producto (


        codigo            varchar2(6) not null,
        descripcion varchar2(50) not null,
        precio_u        number(6,2) not null,
        constraint    producto_pk primary key (codigo)
)

create table proveedor(


        rfc            varchar2(13) not null,
        nombre varchar2(50) not null,
        direccion        varchar2(80) not null,
        constraint    proveedor_pk primary key (rfc)
)

create table provee (


        codigo          varchar2(6) not null,
        rfc              varchar2(13) not null
)

insert into Producto values ('DVD001','DVD Multi región Sony',800)


insert into Producto values ('TVP001','Televisión de Pantalla Plana',4500)
insert into Producto values ('HMO001','Horno de Microondas Daewoo',4500)

select * from producto

insert into proveedor values ('ABC010101XY','Comercializadora de la Frontera','Av. Juarez 435,


Ensenada B.C.')

select * from proveedor

select * from provee

insert into provee values ('DVD001','ABC010101XY')


insert into provee values ('HMO001','ABC010101XY')

delete from provee where codigo = 'HMO001'

select * from provee

alter table provee add constraint


"p_pk" primary key (codigo,rfc)

alter table provee add constraint "p_fk1"


foreign key (codigo)
references producto (codigo)on delete cascade

delete from producto where codigo = 'HMO001'

create table cliente (


      rfc varchar2(13),
      nombre varchar2(50) not null,
      direccion varchar2(80) not null,
      tel_primario varchar2(15) not null,
      tel_opc varchar2(15) null,
      correo varchar2(40) null,
      constraint cliente_pk primary key (rfc)
)

insert into cliente (rfc,nombre,direccion,tel_primario) values ('ABC010101AB','Juan García


Cortés','Paseo 5 de Mayo No. 345','951-8702230')

insert into cliente (rfc,nombre,direccion) values ('DEF010101AB','Juan García Cortés','Paseo 5 de


Mayo No. 345') (marcará error)

insert into cliente (rfc,nombre,direccion,tel_primario) values ('DEF010101AB','Carlos López


Salazar','Av. Insurgente 1001','983-8302230')

alter table cliente ADD CONSTRAINT cliente_unico1 UNIQUE (correo)

update cliente set correo = 'carlos@hotmail.com' where RFC = 'DEF010101AB'


update cliente set correo = 'carlos@hotmail.com' where RFC = 'ABC010101AB' (marcará error)

alter table cliente add (atributo varchar2(10) null)


alter table cliente drop column atributo

CREATE table canasta (


        identificador NUMBER(3,0),
        fcreacion          DATE NOT NULL,
        fpago                  DATE,
        fenvio                DATE
)

CREATE OR REPLACE TRIGGER    "T_canasta"


    before insert on "CANASTA"                             
    for each row   
begin     
        select "CANASTA_SEQ".nextval into :NEW.IDENTIFICADOR from dual;
end;

CREATE SEQUENCE "CANASTA_SEQ"    MINVALUE 1 MAXVALUE 999 INCREMENT BY 1


START WITH 1 CACHE 2 NOORDER NOCYCLE
alter table canasta add constraint canasta_pk primary key (identificador)

select    trigger_body from user_triggers      (para verificar el código del disparador)

insert into canasta (fcreacion) values ('19-05-2009')


insert into canasta (fcreacion) values (SYSTIMESTAMP)    (puede usar SYSDATE también)

create table asociado_a(


      rfc varchar2(13),
      identificador number(3,0),
      constraint asociado_pk primary key (rfc,identificador)
)

alter table asociado_a ADD CONSTRAINT asociado_fk1 foreign key (rfc) references cliente (rfc) ON
DELETE CASCADE

insert into asociado_a values ('ABC010101AB','1')


insert into asociado_a values ('ABC010101XX','1')    (error por integridad referencial)
insert into asociado_a values ('ABC010101AB','10') (la acepta aunque la canasta no exista)

delete * from asociado_a where identificador = 10

alter table asociado_a ADD CONSTRAINT asociado_fk2 foreign key (identificador) references
canasta (identificador)

insert into asociado_a values ('ABC010101AB',2)

delete from canasta where identificador = 2        (error por integridad referencial)

alter table asociado_a drop constraint asociado_fk2    (removemos la clave foránea)

delete from canasta where identificador = 2

create table contiene (


          identificador number(3,0),
          codigo                number(3,0),
          cantidad            number(2,0) default 1,
          constraint contiene_pk primary key (identificador,codigo)
)

update asociado_a set identificador = 3 where identificador = 2

alter table contiene modify (codigo varchar2(6) NOT NULL)        (cambiamos el tipo de dato)

insert into contiene (identificador,codigo) values (1,'DVD001')


insert into contiene (identificador,codigo) values (1,'TVP001')

También podría gustarte