Sei sulla pagina 1di 13

Implementacin de un Arco

FACTURA
# cdigo
* fecha

EMPLEADO
# cdula
* nombre
* carn

AUTO
# placa
* marca

CREATE TABLE empleado(


cedula
NUMBER(8) PRIMARY KEY,
nombre
VARCHAR(25) NOT NULL,
carnet
NUMBER(5) UNIQUE NOT NULL);
Clave
Alternativa

INSERT INTO empleado VALUES(10,'Dino',20);


CREATE TABLE auto(
placa VARCHAR(10) PRIMARY KEY,
marca
VARCHAR(20) NOT NULL);
INSERT INTO auto VALUES('CTV 40','BMW');

CREATE TABLE factura (


codigo NUMBER(6) PRIMARY KEY,
fecha DATE NOT NULL,
cedula NUMBER(8)
REFERENCES empleado,
placa VARCHAR(10) REFERENCES auto,
CHECK ( (placa IS NULL AND cedula IS NOT NULL)
OR
(placa IS NOT NULL AND cedula IS NULL)
)
Por medio del CHECK se implementa
);
el arco ya que garantiza que si una
CF es nula, la otra CF es no nula

Genera la fecha
actual (en Oracle) En SQL standard es CURRENT DATE

INSERT INTO factura VALUES(300,SYSDATE,10,NULL);

INSERT INTO factura VALUES(900,TO_DATE('28/12/04'),NULL,'CTV


40');
propia de Oracle, en el SQL estndar es CAST

Note que las dos siguientes inserciones fallan:


fallan


INSERT INTO factura VALUES(500,SYSDATE,10,'CTV 40');

INSERT INTO factura VALUES(600,SYSDATE,NULL,NULL);

CREACIN DE TABLAS, EJEMPLO 1.


CREATE TABLE tbAutos
(
matricula char(8)
char not null,
marca varchar(255),
varchar
modelo varchar(255),
varchar
color varchar(255)
not null,
varchar
numero_kilometros numeric(14,2)
default 0,
numeric
constraint PK_Coches primary key (matricula)
);

CREACIN DE TABLAS, EJEMPLO 2-1.


CREATE TABLE tbProveedor
(
id numeric(10) not null,
nombre varchar2(50) not null,
correo varchar2(50),
CONSTRAINT pk_tbProveedor
PRIMARY KEY (id, nombre)
);

CREACIN DE TABLAS, EJEMPLO 2-2.


CREATE TABLE tbProducto (
id numeric(10) not null,
tbProveedor_id numeric(10) not null,
tbProveedor_nombre varchar2(50) not null,
nombre varchar2(50) not null,
cantidad numeric(10) not null,
CONSTRAINT pk_tbProducto
PRIMARY KEY (id, tbProveedor_id,
tbProveedor_nombre),
CONSTRAINT fk_tbProducto_tbProveedor
FOREIGN KEY (tbProveedor_id,
tbProveedor_nombre)
REFERENCES tbProveedor(id, nombre) );

ALGUNAS ACLARACIONES


Despus de crear las tablas del ejemplo 2, cul


seria el orden de eliminacin?
DROP TABLE <nombre_tabla>;

Cul es la diferencia entre char, varchar, varchar2?




char(n): Se usa para almacenar cadenas de longitud fija.


Si la longitud de la cadena es menor que n, el espacio
restante NO es liberado.
varchar2(n): Se usa para almacenar cadenas de longitud
variable. Si la longitud de la cadena es menor que n, el
espacio restante es liberado.
varchar(n): funciona igual que varchar2; sin embargo, no
es recomendado usarlo, dado que Oracle lo tiene
reservado para usos futuros,

MODIFICACIN DE TABLAS, EJEMPLO 1.


-- Veamos los campos de la tabla tbProducto antes de
modificarla.
DESCRIBE tbProducto;
-- Se agregan dos campos:
ALTER TABLE tbProducto ADD calidad number(10) default 4;
ALTER TABLE tbProducto ADD calidad2 number(10) default
5;
-- Veamos los campos de la tabla tbProducto despues de
modificarla.
DESCRIBE tbProducto;

MODIFICACIN DE TABLAS, EJEMPLO 2.


-- Veamos los campos de la tabla tbProducto
antes de modificarla.
DESCRIBE tbProducto;
-- Se elimina un campo:
ALTER TABLE tbproducto DROP COLUMN calidad2;
-- Veamos los campos de la tabla tbProducto
despues de modificarla.
DESCRIBE tbProducto;

MODIFICACIN DE TABLAS, EJEMPLO 3.


-- Ahora se desea que el campo CALIDAD haga parte de la
clave primaria de la tabla Producto.
-- Consultar las columnas que pertenecen a la clave
primaria de la tabla TBPRODUCTO.
SELECT COLUMN_NAME FROM user_cons_columns ucc
JOIN user_constraints uc
ON ucc.constraint_name=uc.constraint_name
WHERE ucc.TABLE_NAME = 'TBPRODUCTO' AND
uc.CONSTRAINT_NAME = 'PK_TBPRODUCTO' ;
-- Las tablas en rojo son del sistema.

MODIFICACIN DE TABLAS, EJEMPLO 3.


-- Modificar la clave primaria de TBPRODUCTO.
ALTER TABLE tbproducto DROP CONSTRAINT PK_TBPRODUCTO;
ALTER TABLE tbProducto ADD CONSTRAINT pk_tbProducto
PRIMARY KEY (id, tbProveedor_id, tbProveedor_nombre,
calidad);
-- Se comprueba si efectivamente se hizo el cambio.
SELECT COLUMN_NAME FROM user_cons_columns ucc
JOIN user_constraints uc
ON ucc.constraint_name=uc.constraint_name
WHERE ucc.TABLE_NAME = 'TBPRODUCTO' AND
uc.CONSTRAINT_NAME = 'PK_TBPRODUCTO' ;

MODIFICACIN DE TABLAS, EJEMPLO 3.


En la siguiente direccin pueden encontrarse
ms ejemplos sobre el uso de ALTER.
http://www.techonthenet.com/sql/tables/alter_t
able.php
Por ejemplo, cambiar el nombre de un campo:
ALTER TABLE <table_name>
RENAME COLUMN <old_name> to
<new_name>;

Potrebbero piacerti anche