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>;