FACULTAD DE INGENIERIA INDUSTRIAL, SISTEMAS E INFORMATICA ESCUELA ACADEMICO PROFESIONAL DE INGENIERIA INFORMATICA CURSO ADMINISTRACION DE BASE DE DATOS SEPARATA N 02 TABLAS Y RESTRICCIONES DOCENTE ING. CIP EDWIN IVAN FARRO PACIFICO HUACHO-LIMA PERU Universidad Nacional Jos Faustino Snchez Carrin Ing. CIP Edwin Ivn Farro Pacfico Ing. CIP Edwin Ivn Farro Pacfico Pag 2 TABLAS CREAR TABLAS Los requisitos de l clusula 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 carcter alfabtico: A-Z,a-z,0-9 $ y # tambin son vlidos pero no se sugieren No debeser 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 clusula AS. Sintaxis: CREATE TABLE nombre_tabla [(columna1,columna2,)] AS sentencia_select; Ejemplo: CREATE TABLE departamento AS SELECT * FROM dept; Mostrar estructura. Listar registros. Universidad Nacional Jos Faustino Snchez Carrin Ing. CIP Edwin Ivn Farro Pacfico Ing. CIP Edwin Ivn Farro Pacfico Pag 3 Restricciones de Columnas 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 condicin que cada fila debe satisfacer en la tabla. FOREING KEY (nombre_columna) Designa una columna o combinacin de columnas como la clave fornea REFERENCES(nombre_columna) Establece y obliga una relacin 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 ms columnas deben tener valores nicos travs de todas las filas. Oracle crea un ndice nico para asegurar este constraint. ON DELETE CASCADE Especifica que Oracle mantendr la integridad automticamente removiendo los valores de la clave fornea dependiente si se remueven los valores de la clave primaria o nica. Ejemplo: Crear una tabla que utilice los diferentes tipos de constraints. 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))); Modificar tablas Clusula ALTER TABLE Se utiliza para alterar la definicin de uan tabla: Aadiendo o eliminando columnas o restricciones Modificando definiciones de columnas (tipo de datos, Not Null, etc.) Ejemplo: Agregue la columna telfono a la tabla emp1. SQL> ALTER TABLE emp1 ADD telefono CHAR(8); Ejemplo: La comisin debe ser menor o igual que el salario. Universidad Nacional Jos Faustino Snchez Carrin Ing. CIP Edwin Ivn Farro Pacfico Ing. CIP Edwin Ivn Farro Pacfico Pag 4 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 restriccin 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 telfono de la tabla emp1; SQL> ALTER TABLE emp1 DROP COLUMN telefono; 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 Universidad Nacional Jos Faustino Snchez Carrin Ing. CIP Edwin Ivn Farro Pacfico Ing. CIP Edwin Ivn Farro Pacfico Pag 5 Ejercicio 01 Crear la siguiente estructura de tablas de acuerdo a las restricciones que indique el profesor ALUMNO Campo Tipo de dato Longitud Restricciones Idalumno Varchar2 5 Nombalum Varchar2 50 No nulo fingalum date Fecha del sistema CURSO Campo Tipo de dato Longitud Restricciones Idcurso Varchar2 5 nombcurs Varchar2 50 No nulo MATRICULA Campo Tipo de dato Longitud Restricciones Idmatricula Varchar2 5 Idalumno Varchar2 5 No nulo Idcurso Varchar2 5 No nulo Nota1 Interger Valor por defecto 0 Nota2 Integer Valor por defecto 0 Nota3 Integer Valor por defecto 0 prom Integer Valor por defecto 0 Crear la tabla Alumno SQL> CREATE TABLE ALUMNO (idalumno varchar2(5) primary key, nombalum varchar2(50) not null, fingalum date default sysdate) Crear la tabla Curso SQL> CREATE TABLE CURSO (idcurso varchar2(5) primary key, nombcurs varchar2(50) not null) Universidad Nacional Jos Faustino Snchez Carrin Ing. CIP Edwin Ivn Farro Pacfico Ing. CIP Edwin Ivn Farro Pacfico Pag 6 Crear la tabla Matricula SQL> CREATE TABLE MATRICULA (idmatricula varchar2(4) primary key, idalumno varchar2(5) not null, idcurso varchar2(5) not null, nota1 integer default 0, nota2 integer default 0, nota3 integer default 0, prom integer default 0, CONSTRAINT ck_nota1 CHECK(nota1>=0), CONSTRAINT ck_nota2 CHECK(nota2>=0), CONSTRAINT ck_nota3 CHECK(nota3>=0), CONSTRAINT ck_prom CHECK(prom>=0), CONSTRAINT fk_idalumno Foreign Key (idalumno) References alumno(idalumno), CONSTRAINT fk_idcurso Foreign Key (idcurso) References curso(idcurso)) Ejercicio 02 MODELO #idmodelo descmode precmode CONTRATO # idcontrato fechcont totacont iniccont saldcont (#)idcliente INGRESO_MES #idingreso total inicial saldo CLIENTE # idcliente nombclie apatclie amatclie direclie telfclie (#)idrecomendo 1,n 1 DETA_CONTRATO #idcontrato #idmodelo descdeta fentrdeta cantdeta precmode 1 1 1 Universidad Nacional Jos Faustino Snchez Carrin Ing. CIP Edwin Ivn Farro Pacfico Ing. CIP Edwin Ivn Farro Pacfico Pag 7 CLIENTE Campo Tipo de dato Longitud Restricciones idcliente Varchar2 5 PK nombclie Varchar2 50 No nulo apatclie Varchar2 30 No nulo amatclie Varchar2 30 No nulo direclie Varchar2 50 No nulo telfclie Varchar2 8 idrecomendado Varchar2 5 MODELO Campo Tipo de dato Longitud Restricciones Idmodelo Varchar2 5 PK descmode Varchar2 50 No nulo Precmode Number 10,2 >=0 CONTRATO Campo Tipo de dato Longitud Restricciones Idcontrato Varchar2 5 PK fechcont Date Fecha del sistema Totacont Number 10,2 >=0 saldcont Number 10,2 >=0 Iniccont Number 10,2 >=0 idcliente Varchar2 5 DETA_CONTRATO Campo Tipo de dato Longitud Restricciones Idmodelo Varchar2 5 PK idcontrato Varchar2 5 PK Descdeta Varchar2 50 Fentdeta Varchar2 Date Precmode Number 10,2 >=0 cantidad Number 10 >=0