1. Pag. 1
TABLAS
CREAR TABLAS
Los requisitos de la cláusula CREATE TABLE son:
Nombre de la tabla
Nombre de la columna
Tipo de datos de la columna
Sintaxis:
CREATE TABLE [usuario.]tabla ({columna1 tipo_dato [DEFAULT exp][constraint_columna]},
{columna2 tipo_dato [DEFAULT exp][constraint_columna]}…)
Reglas de nomenclatura:
El nombre debe tener como longitud de 1 a 30 caracteres con el primer carácter alfabético:
A-Z,a-z,0-9
$ y # también son válidos pero no se sugieren
No debe ser una palabra reservada en Oracle
No debe ser igual al nombre de otro objeto dentro del mismo usuario de oracle
Ejemplo:
SQL> CREATE TABLE departamento
2 (iddepa number(2),
3 nombre varchar2(14),
4 ubicacion varchar2(13));
Borrar tablas
Sintaxis:
DROP TABLE nombre_tabla
Ejemplo:
SQL>DROP TABLE departamento;
Crear una tabla a partir de un select.
Se pueden crear tablas a partir de una sentencia SELECT utilizando la cláusula AS.
Sintaxis:
CREATE TABLE nombre_tabla [(columna1,columna2,…)]
AS sentencia_select;
Ejemplo:
CREATE TABLE dept AS SELECT * FROM departamento;
Mostrar estructura.
Listar registros.
Restricciones de Columnas
2. La siguiente tabla muestra los diferentes restricciones manejadas por oracle.
CONSTRAINT USO
PRIMARY KEY Identifica de manera única a cada fila de la tabla
CHECK Especifica una condición que cada fila debe
satisfacer en la tabla.
FOREING KEY (nombre_columna) Designa una columna o combinación de
columnas como la clave foránea
REFERENCES(nombre_columna) Establece y obliga una relación entre esta
columna de la clave primaria de la tabla
referenciada.
[NOT] NULL Especifica que esta columna no puede contener
un valor nulo.
UNIQUE Especifica que una o más columnas deben
tener valores únicos través de todas las filas.
Oracle crea un índice único para asegurar este
constraint.
ON DELETE CASCADE Especifica que Oracle mantendrá la integridad
automáticamente removiendo los valores de la
clave foránea dependiente si se remueven los
valores de la clave primaria o única.
Ejemplo:
Diseño de una tabla identificando sus restricciones principales:
Crear una tabla que utilice los diferentes tipos de constraints.
Campo Tipo de dato longitud restriccción
codigo Number 4 PK
Nombre Varachar2 10 UNICO
Cargo Varachar2 9 NO NULO
Jefe Number 4 NULO
ingreso Date Fecha del sistema por defecto
Salario Number 7,2 Salario>=0
Comisión Number 7,2 Comisión>=0
departamento Number 2 Solo acepta10 o 20
SQL> CREATE TABLE emp1
2 (codigo NUMBER(4) PRIMARY KEY,
3 nombre VARCHAR2(10) UNIQUE,
4 trabajo VARCHAR2(9) NOT NULL,
5 jefe NUMBER(4) NULL,
6 ingreso DATE DEFAULT SYSDATE,
7 salario NUMBER(7,2) DEFAULT 0 CHECK(salario>=0),
8 comision NUMBER(7,2) DEFAULT 0 CHECK(comision>=0),
9 departamento NUMBER(2) CHECK(departamento IN (10,20));
3. OPERACIONES BÁSICAS
Modificar tablas
Cláusula ALTER TABLE
Se utiliza para alterar la definición de uan tabla:
Añadiendo o eliminando columnas o restricciones
Modificando definiciones de columnas (tipo de datos, NotNull, etc.)
Ejemplo:
Agregue la columna teléfono a la tabla emp1.
SQL> ALTER TABLE emp1
ADD telefono1 CHAR(8);
Ejemplo:
La comisión debe ser menor o igual que el salario.
SQL>ALTER TABLE emp1
ADD CHECK(comision<=salario);
Ejemplo:
Cambie el tipo de dato de la columna trabajo de CHAR(9) a CHAR(10).
SQL> ALTER TABLE emp1
MODIFY trabajo CHAR(10);
Ejemplo:
Borrar la clave primaria de la tabla emp1.
SQL> ALTER TABLE emp1
DROP PRIMARY KEY;
Ejemplo
Agregar el atributo DNI con la restricción UNIQUE.
SQL> ALTER TABLE emp1
ADD dni char(8)
CONSTRAINT u_dni UNIQUE
Eliminar Columnas
Sintaxis:
ALTER TABLE nombre_tabla DROP COLUMN nombre_columna;
Ejemplo:
Elimine la columna teléfono de la tabla emp1;
SQL> ALTER TABLE emp1 DROP COLUMN telefono;
4. Renombrar una tabla
El comando RENAME permite renombrar una tabla.
Sintaxis;
RENAME nombre_tabla TO nombre_nuevo
Ejemplo:
SQL> RENAME departamento TO dpto1;
Renombrar una columna
De la tabla emp1 modificar el nombre del atributo departamento por dpto.
sp_rename ‘nombre_tabla.campo ‘,’nombre_tabla.nuevo_nombre’
créate cr
Ejemplo 1
Previamente conectarseconel usuario administrador SYS
Creamos el usuario
CREATE USER COMPRAS IDENTIFIED BY PS02
Asignarle privilegios
GRANT CONNECT, RESOURCE TO COMPRAS
Creamos Los Tablespace
Create tablespace ts_compras
Datafile ‘F:practicaoraclets_comp.ora’
Size 3 m
Extent management local autoallocate;
*Nota: debe existir la carpeta practicaoracle.
Nos conectamos al esquema factura
Connect COMPRAS /PS02
Procedemos a crear tablas
CREATE TABLE TIPO_DOCUMENTO (
Codigo_Tipo_Documento CHAR(8) NOT NULL,
nombre VARCHAR2(50) NOT NULL)
5. tablespace ts_compras;
CREATE TABLE MARCA (
Codigo_Marca number(8) NOTNULL,
nombre VARCHAR2(50) CONSTRAINT NOM_MAR NOT NULL,
CONSTRAINT NOM_UNI UNIQUE(NOMBRE))
tablespace ts_compras;
CREATE TABLE CATEGORIA (
Codigo_Categoria CHAR(8) NOTNULL,
nombre VARCHAR2(50) CONSTRAINT NOM_CAT UNIQUE,
constraint CAT_NOM check(NOMBRE in ('A','B','C','D')))
tablespace ts_compras;
CREATE TABLE PRODUCTO (
Codigo_Producto CHAR(8) NOT NULL,
NOMBRE VARCHAR2(50) NOT NULL,
Modelo VARCHAR2(50) NOT NULL,
Plataforma VARCHAR2(50) NULL,
Precio NUMBER(8,2) NOT NULL,
Stock NUMBER(8,2) NOT NULL,
Codigo_Categoria CHAR(8) NOTNULL,
Codigo_Marca number(8) NOTNULL,
CONSTRAINT NOM_PROD UNIQUE(NOMBRE),
CONSTRAINT PRE_STOCK CHECK (STOCK>=0 and STOCK<=100))
tablespace ts_compras;
CREATE TABLE CLIENTE (
Codigo_Cliente CHAR(8) NOT NULL,
Razon_Social VARCHAR2(50) NOT NULL,
Direccion VARCHAR2(50) NULL,
Telefono VARCHAR2(25) NULL,
RUC VARCHAR2(11) NULL,
DNI VARCHAR2(8) NULL)
tablespace ts_compras;
CREATE TABLE USUARIO (
CODIGO_USUARIO CHAR(8) NOTNULL,
NOMBRES VARCHAR2(50) NOT NULL,
APELLIDOS VARCHAR2(50) NOT NULL,
DIRECCION VARCHAR2(50) NULL,
SEXO CHAR(1) NULL,
CLAVE VARCHAR2(4) NULL,
CONSTRAINT US_APE_NOM UNIQUE(NOMBRES,APELLIDOS),
CONSTRAINT US_SEXO CHECK (SEXO IN ('M','F'))
TABLESPACE ts_compras;
CREATE TABLE ENCABEZADO_DOCUMENTO (
Codigo_Encabezado_Documento CHAR(8) NOT NULL,
6. Fecha_emision DATE DEFAULT SYSDATE,
Importe_Bruto NUMBER(8,2) NOT NULL,
Descuento NUMBER(8,2) NOT NULL,
Recargo NUMBER(8,2) NOT NULL,
Importe_Neto NUMBER(8,2) NOT NULL,
IGV NUMBER(8,2) NOT NULL,
Total_Pagar NUMBER(8,2) NOT NULL,
Codigo_Cliente CHAR(8) NOTNULL,
Codigo_Tipo_Documento CHAR(8) NOT NULL,
Serie_Documento CHAR(3) NOT NULL,
Numero_Documento CHAR(10) NOT NULL)
tablespace ts_compras;
CREATE TABLE DETALLE_DOCUMENTO (
Codigo_Detalle_Documento CHAR(8) NOT NULL,
Codigo_Encabezado_Documento CHAR(8) NOT NULL,
Codigo_Producto CHAR(8) NOT NULL,
Cantidad NUMBER(8,2) NOT NULL,
Precio NUMBER(8,2) NOT NULL,
Importe NUMBER(8,2) NOT NULL)
tablespace ts_compras;
Anadiendo columnas a una table
alter table cliente
add
(direccion varchar2(50),
direccion2 varchar2(20));
modificando la definición de una columna existente
alter table cliente
modify
(direccion2 varchar2(50));
Eliminando columnas
alter table cliente
drop column direccion2;
Eliminando Tablas
drop table cliente
ALTER TABLE TIPO_DOCUMENTO
7. Add Constraint PK_Tipo_Documento
Primary Key (Codigo_Tipo_Documento)
ALTER TABLE USUARIO
Add Constraint PK_Usuario
Primary Key (Codigo_Usuario)
ALTER TABLE MARCA
Add Constraint PK_Marca
Primary Key (Codigo_Marca)
ALTER TABLE CATEGORIA
Add Constraint PK_categoria
Primary Key (Codigo_Categoria)
ALTER TABLE PRODUCTO
Add Constraint PK_producto
Primary Key (Codigo_Producto)
ALTER TABLE CLIENTE
Add Constraint PK_Cliente
Primary Key (Codigo_Cliente)
ALTER TABLE ENCABEZADO_DOCUMENTO
Add Constraint PK_Encabezado_Documento
Primary Key (Codigo_Encabezado_Documento)
ALTER TABLE DETALLE_DOCUMENTO
Add Constraint PK_Detalle_Documento
Primary Key (Codigo_Detalle_Documento)
---------------------------------------------------------------------------------------------------
ALTER TABLE PRODUCTO
ADD CONSTRAINT FK_Categoria
FOREIGN KEY (Codigo_Categoria)
REFERENCES CATEGORIA
ALTER TABLE PRODUCTO
ADD CONSTRAINT FK_Marca
FOREIGN KEY (Codigo_Marca)
REFERENCES MARCA
ALTER TABLE ENCABEZADO_DOCUMENTO
ADD CONSTRAINT FK_Cliente
FOREIGN KEY (Codigo_Cliente)
REFERENCES CLIENTE
8. ALTER TABLE ENCABEZADO_DOCUMENTO
ADD CONSTRAINT FK_Tipo_Documento
FOREIGN KEY (Codigo_Tipo_Documento)
REFERENCES TIPO_DOCUMENTO
ALTER TABLE DETALLE_DOCUMENTO
ADD CONSTRAINT FK_Encabezado_Documento
FOREIGN KEY (CODIGO_ENCABEZADO_DOCUMENTO)
REFERENCES ENCABEZADO_DOCUMENTO
ALTER TABLE DETALLE_DOCUMENTO
ADD CONSTRAINT FK_Producto
FOREIGN KEY (Codigo_Producto)
REFERENCES PRODUCTO
SENTENCIAS
CREATE SEQUENCE MARCA_ID
INCREMENT BY 10
START WITH 8010
MINVALUE 0
MAXVALUE 999999
NOCYCLE
NOCACHE
ALTER SEQUENCE MARCA_ID
INCREMENT BY 20
DROP SEQUENCE MARCA_ID
INSERT INTO CLIENTE VALUES ('CL001', 'usb','Los Sauces 545',
'534-3898','89898989', '09900222')
INSERT INTO CLIENTE VALUES ('CL002', 'usb','Los Sauces 545',
'534-3898','89898989', '09900222')
INSERT INTO CLIENTE VALUES ('CL003', 'usb','Los Sauces 545',
'534-3898','89898989', '09900222')
INSERT INTO CLIENTE VALUES ('CL004', 'usb','Los Sauces 545',
'534-3898','89898989', '09900222')
INSERT INTO CLIENTE VALUES ('CL005', 'usb','Los Sauces 545',
'534-3898','89898989', '09900222')
INSERT INTO CLIENTE VALUES ('CL006', 'usb','Los Sauces 545',
'534-3898','89898989', '09900222')
COMMIT
9. INSERT INTO CATEGORIA VALUES ('C00001','A');
INSERT INTO CATEGORIA VALUES ('C00002','B');
INSERT INTO CATEGORIA VALUES ('C00003','C');
INSERT INTO CATEGORIA VALUES ('C00004','D')
COMMIT
INSERT INTO MARCA VALUES (marca_id.NEXTVAL,'SAGA');
INSERT INTO MARCA VALUES (marca_id.NEXTVAL,'RYPLEI');
INSERT INTO MARCA VALUES (marca_id.NEXTVAL ,'SANDOR');
INSERT INTO MARCA VALUES (marca_id.NEXTVAL ,'ABC')
COMMIT
INSERT INTO PRODUCTO VALUES ('PR000001',
'silla','giratoria','PLATAF',123,99,'C00001',8010);
INSERT INTO PRODUCTO VALUES ('PR000002',
'mesa','giratoria','PLATAF',123,99,'C00001',8010);
INSERT INTO PRODUCTO VALUES ('PR000003',
'cama','giratoria','PLATAF',123,99,'C00001',8010);
INSERT INTO PRODUCTO VALUES ('PR000004',
'estante','vertical','PLATAF',123,99,'C00001',8010);
COMMIT
INSERT INTO TIPO_DOCUMENTO VALUES ('TIPDOC01','OFICIO');
INSERT INTO TIPO_DOCUMENTO VALUES ('TIPDOC02','MEMO');
INSERT INTO TIPO_DOCUMENTO VALUES ('TIPDOC03','SOLICITUD');
INSERT INTO TIPO_DOCUMENTO VALUES ('TIPDOC04','CARTA')
COMMIT
INSERT INTO ENCABEZADO_DOCUMENTO VALUES
('ENCDOC01','15/03/2010',1000,10,200,1000,100,1900,'CL001','TIPDOC01','S01','001'
);
INSERT INTO DETALLE_DOCUMENTO VALUES
('DETDOC01','ENCDOC01','PR000002',1000,100,2000);
COMMIT
INSERT INTO ENCABEZADO_DOCUMENTO VALUES
('ENCDOC02','15/03/2010',1000,10,200,1000,100,1900,'CL001','TIPDOC01','S01','001'
);
10. INSERT INTO DETALLE_DOCUMENTO VALUES
('DETDOC02','ENCDOC02','PR000001',1000,100,2000);
COMMIT
INSERT INTO ENCABEZADO_DOCUMENTO VALUES
('ENCDOC03','15/03/2010',1000,10,200,1000,100,1900,'CL001','TIPDOC01','S01','001'
);
INSERT INTO DETALLE_DOCUMENTO VALUES
('DETDOC03','ENCDOC03','PR000004',1000,100,2000);
COMMIT