Вы находитесь на странице: 1из 44

CREACIÓN DE

TABLAS, INDICES
Y
REFERENCIAS
21/02/2018 Ing. Alexis Rojas Cordero
OBJETIVOS

Al finalizar la clase, el alumno debe ser capaz de:

•Definir cláramente los tipos de datos de una tabla más


usuales.
•Crear una tabla simple
•Entender como se crean los constrains
•Crear Indices y tablas con o sin Indices.
•Alterar la definición de una tabla.
•Ejecutar el DROP, RENAME y TRUNCATE DE UNA
TABLA.

21/02/2018 Ing. Alexis Rojas Cordero


Ing. Alexis Rojas Cordero
Plataforma de BD para Internet
Clientes

browsers Mail-cliente ftp cliente

Development tools
Internet applications
System management

SQL
Business logic Presentation and
and data business logic
PL/SQL

Databases Application
servers Java

Network services

21/02/2018
Ing. Alexis Rojas Cordero
Diferentes medios de almacenar datos

Electronic Database
spreadsheet Filing cabinet
21/02/2018
Ing. Alexis Rojas Cordero
Comunicación con un RDBMS
Usando SQL

Una instrucción SQL es La instrucción es enviada


ingresada. al Servidor de BD.
SELECT department_name
FROM departments;
Oracle
server

21/02/2018
Ing. Alexis Rojas Cordero
Instrucciones SQL
•SELECT
•INSERT
•UPDATE Data manipulation language (DML)
•DELETE
•MERGE

•CREATE
•ALTER
•DROP
•RENAME Data definition language (DDL)
•TRUNCATE
•COMMENT

•GRANT Data control language (DCL)


•REVOKE

•COMMIT
•ROLLBACK Transaction control
•SAVEPOINT

21/02/2018
Ing. Alexis Rojas Cordero
CREACIÓN Y MANEJO DE TABLAS E INDICES.

INSTRUCCIONES

DDL
Ing. Alexis Rojas Cordero
CUALES SON LOS
OBJETOS DE UNA BD ?

Objeto Descripción

Table Unidad básica de almacenamiento


compuesta de filas
View Representación lógica de un subconjunto de
datos de una o varias tablas

Sequence Genera valores numéricos

Index Elemento que provee rendimiento en el


proceso de búsqueda
Synonym Provee nombres alternos o alias a los objetos

21/02/2018 Ing. Alexis Rojas Cordero


REGLAS BÁSICAS PARA LA
CREACION DE TABLAS

Nombres de tablas y nombres de columnas:

1. Deben empezar con una letra


2. Pueden ser de 1–30 carácteres de largo
3. Sólo debe contener A-Z, a-z, 0–9, _, $, y #
4. No debe llamarse con el nombre de otro
objeto de propiedad del el mismo usuario.

5. No debe ser una palabra reservada de Oracle

21/02/2018
Ing. Alexis Rojas Cordero
DECLARACION CREATE (DDL)

Qué debe tener su usuario para poder crear


tablas ?
1. Privilegios
2. Un área definida en el table space para crear datos.

Qué debe especificar el usuario ?


1. El nombre de la tabla
2. El nombre de las columnas, el tipo de dato de cada
columna y el tamaño del campo.
CREATE TABLE CIUDADES (cod_ciudad number (04),
nom_ciudad varchar2(20));

21/02/2018
Ing. Alexis Rojas Cordero
SINTAXIS DEL CREATE (DDL)

CREATE [GLOBAL TEMPORARY] TABLE


[schema.]table
(column datatype [DEFAULT expr][, ...]);

GLOBAL TEMPORARY. Es una tabla temporal vista solamente


por el usuario dueño de la sesión y se autodestruye cuando se
cierra la sesión.

schema. Corresponde al nombre de la estancia propietaria del


conglomerado de tablas del proyecto. Ejemplo. Cartera.

DEFAULT expr. Si al momento de hacer el insert de los datos no se


declara un valor, entonces se asigna el valor por defecto.

datatype. Corresponde a la longitud y typo de dato de la columna


21/02/2018
Ing. Alexis Rojas Cordero
CUANDO USAMOS EL SCHEMA?

Usamos es esquema para referenciar tablas que pertenecen a otros


usuarios no están en el esquema del usuario.

El usuario que requiere consultar tablas de otro usuario, debe usar el


nombre del dueño como un prefijo a esas tablas.

USUARIO AHORROS USUARIO CARTERA


SELECT * SELECT *
FROM cartera.clientes; FROM ahorros.tarjetas;

21/02/2018
Ing. Alexis Rojas Cordero
TIPOS DE DATOS
TIPO DE DATO DESCRIPCION
VARCHAR2(size) se usa para especificar cadenas de caractéres de
tamaño variable. Hasta 2000 bytes
CHAR(size) se usa para especificar cadenas de caracteres de
tamaño fijo. Hasta 255 bytes
NUMBER(p,s) se usa para especificar valores numéricos, donde p,
representa la longitud y s corresponde a los
decimales. Ejemplo: precio number(12,2), significa
que el campo tiene 12 bytes de longitud donde 10 so
enteros y dos son decimales
DATE Para valores de fecha y tiempo
LONG Variable alfabética (hasta 2 GB). Un solo capo de este
tipo por tabla.
CLOB Variable para objetos de gran tamaño (hasta 4 GB).
Almancena una gran cantidad de datos tales como un
archivo gráfico o un documento de texto.
21/02/2018
Ing. Alexis Rojas Cordero
CONSTRAINS
(RESTRICCIONES)

QUE ES UN CONSTRAINT ?

1. Es una declaración que se utiliza para crear o


eliminar restricciones

2. de integridad en las tablas de la base de datos.

3. Los CONSTRAINS dan fuerza a las reglas de


integridad a nivel de tabla.

4. Previenen el borrado de una tabla cuando hay


dependencias.

21/02/2018
Ing. Alexis Rojas Cordero
CONSTRAINS
(RESTRICCIONES)
CUANDO Y COMO SE CREAN LOS CROSTRAINS?

1. Se puede crear un CONSTRAIN al mismo tiempo que


se crea la tabla, o se puede agregar a la tabla después.

2. Hay dos niveles donde se define una restricción:


 Nivel de columna
 Nivel de tabla

3. Hay dos tipos de cláusulas CONSTRAINS:


 Una para crear una restricción en único campo
 Otra para crear una restricción en más de un
campo.

21/02/2018
Ing. Alexis Rojas Cordero
CONSTRAINS
(RESTRICCIONES)

ABREVIACIONES DE LOS TIPOS DE CONSTRAINTS

Los siguientes tipos de CONSTRAINS son


válidos:

Primary Key pk
Foreign Key fk
Unique uk
Check ck
Not Null nn

21/02/2018
Ing. Alexis Rojas Cordero
CONSTRAINT PK_tClientes primary key (codigo);

SINTAXIS DEL CONSTRAINT


Sintaxis
CREATE TABLE [schema.]tabla
(column datatype [DEFAULT expr]
[column_constraint],
...
[table_constraint][,...]);

Constaint a nivel de columna


column datatype constraint_type constraint_type
id_empleado NUMBER(6) not null primay key,

Constraint a nivel de tabla

column,...
[CONSTRAINT constraint_name] constraint_type
(column, ...),
CONSTRAINT PK_empleado primary key (id_empleado),
21/02/2018
Ing. Alexis Rojas Cordero
EJEMPLOS DEL CONSTRAINT
(A nivel de llaves)

– Constraint a nivel de columna:


CREATE TABLE empleados(
id_empleado NUMBER(6) not null
CONSTRAINT emp_d_pk PRIMARY KEY,
primer_nombre VARCHAR2(20),
...); 1

– Constraint a nivel de tabla:


CREATE TABLE empleados(
id_empeldado NUMBER(6),
primer_nombre VARCHAR2(20),
...
tipo_trabajo VARCHAR2(10) NOT NULL,
2
CONSTRAINT emp_emp_id_pk
PRIMARY KEY (id_empleado));

21/02/2018
Ing. Alexis Rojas Cordero
CREACION DE CAMPOS
POR DEFECTO
La asignación de tipos por defecto se pueden hacer en el momento de
la creación de una tabla o en el momento de insertar un valor.

El tipo de dato de todas formas debe ser del mismo tipo del especificado
para el campo.

Ejemplo: Si asignamos a un campo fecha, el default debe corresponder.


Si creamos una tabla y deseamos crearle el campo fecha de creación y
por defecto que le asigne la fecha del sistema, se deben respetar los
tipos. Veamos:

CREATE TABLE fecha_creacion


(identificacion NUMBER(8) not null primary key,
fec_creacion DATE DEFAULT SYSDATE);
Table created.

SYSDATE: Función que extrae la fecha del sistema


21/02/2018
Ing. Alexis Rojas Cordero
CREACION DE CAMPOS
POR DEFECTO
CREAR LA TABLA DEPARTAMENTO

CREATE TABLE departamento


(deptno NUMBER(2) not null primary key,
dname VARCHAR2(14),
loc VARCHAR2(13),
create_date DATE DEFAULT SYSDATE);
Table created.

Como confirmamos si quedó creada ?.

Usamos el comando DESCribe departamento;

21/02/2018
Ing. Alexis Rojas Cordero
CONSTRAINT como un CHECK

– Define una condición que cada fila debe


satisfacer.
– Las siguientes expresiones no son permitidas:
• Llamadas a funciones tales como sysdate, user.
• Consultas que se refieran a otros valores en otras
filas.
Ejemplo:
..., salario NUMBER(2)
CONSTRAINT dept_deptid_cc
CONSTRAINT emp_salary_min
CHECK (salary > 0),...

CONSTRAINT DEP-CC CHECK((emp_hijos >=0) and (emp_hijos <= 99)),

21/02/2018
Ing. Alexis Rojas Cordero
CONSTRAINT REG. ÚNICO

CREATE TABLE cliente


(
codigo NUMBER(6) NOT NULL primary Key,
nombre VARCHAR2(25),
apellido VARCHAR2(25),
email VARCHAR2(100),
...
);

ALTER TABLE cliente ADD


CONSTRAINT clie_nombre_uk UNIQUE(email));

21/02/2018
Ing. Alexis Rojas Cordero
CONSTRAINT con Not Null

El campo cod_dpto, no tiene contstraint de


restricción, por eso se permitieron campos en null.

CODIGO NOMBRE APELLID TELEFONO FAC_NA CARGO SUE CON_DPTO

CONSTRAINT CONSTRAINT SIN CONSTRAINT


NOT NULL NOT NULL NOT NULL

21/02/2018
Ing. Alexis Rojas Cordero
CONSTRAINT atributo único

Si declaramos el segundo apellido como llave


Llave única

Codigo Nombre appellido

INSERTAR EL REGISTO

100 King Hadman

El constraint no permite la inserción del registro porque


el registro el atributo nombre con contenido King ya existe.

21/02/2018
Ing. Alexis Rojas Cordero
CONSTRAINT DE LLAVE PRIMARIA

Restricciones que se ejecutan al momento de la inserción de un registro


que tiene constraint de Llave primaria

DEPARTAMENTO
PRIMARY KEY

ID_DPTO NOMBRE_DPTO ID_JEFE COD_CIUDAD


No permitido INSERT INTO
(null value)

No permitido
(50 already exists)
21/02/2018
Ing. Alexis Rojas Cordero
Entity Relationship Model

– Crear un diagrama entidad relación de las


especificaciones del negocio:

EMPLOYEE DEPARTMENT
assigned to
#* number #* number
* name * name
o job title composed of o location

– Scenario
• Un empleado pertenece a un solo departamento
• En un deparatamento trabajan muchos empleado

21/02/2018 Ing. Alexis Rojas Cordero


CONSTRAINT DE LLAVE FORANEA

DEPARTAMENTO
ID_DPTO NOMBRE_DPTO ID_JEFE COD_CIUDAD

PRIMARY
KEY

EMPLEADO
CEDULA APELLIDOS ID_DPTO FOREIGN
KEY

… No permitido
INSERT INTO (9 no existe)

Permitido
21/02/2018
Ing. Alexis Rojas Cordero
CREAR PRIMERO LA TABLA PADRE

CREATE TABLE departamento


(
d_codigo NUMBER(6) NOT NULL primary Key,
d_nombre VARCHAR2(25) NOT NULL,
d_location VARCHAR2(50)
);

Se crea la table padre de primera.

La localizacion para este caso se deja como un campo solo


informativo, puede tener o no información, por tal razón no
se le coloca el constraint de NOT NULL

21/02/2018
Ing. Alexis Rojas Cordero
CONSTRAINT DE LLAVE FORANEA

Ejemplo concreto de creación de la tabla empelado con constraints de


llave foránea. TABLA HIJA DE DEPARTAMENTO
CREATE TABLE empleado
(
e_cedula NUMBER(6) NOT NULL
, e _nombre VARCHAR2(25) NOT NULL
, e_apellido VARCHAR2(25) NOT NULL
, e_email VARCHAR2(25)
, e_salario NUMBER(8,2)
, e_porc_comision NUMBER(2,2)
, e_fecha_nac DATE NOT NULL
, e_id_dpto NUMBER(4)
, CONSTRAINT celula_pk PRIMARY KEY(e_cedula)
, CONSTRAINT emp_dep_fk FOREIGN KEY (e_id_dpto)
REFERENCES departamento(e_id_dpto)
, CONSTRAINT emp_email_uk UNIQUE(e_email)
);
21/02/2018
Ing. Alexis Rojas Cordero
VIOLACION DE CONSTRAINTS

– Ejemplos:

No se puede borrar un registro con llave primaria que es


llave foránea en otra tabla.

DELETE FROM departamentos


WHERE department_id = 60;

DELETE FROM departamentos


*
ERROR at line xxx:
ORA-02292: integrity constraint (EMP_DEPT_FK)
violated - child record found
21/02/2018
Ing. Alexis Rojas Cordero
CREACION DE TABLAS
Describe table

SQL> CREATE TABLE PAGOS


2 (pago_id varchar2(4),
3 nombre varchar2(20),
4 cod_trabajo char(2), DESCRIBE pagos;
5 fecha_inico date,
Despliega la estructrua
6 salario number(9,2),
de la tabla.
7 bonos number(5));

Table created.

SQL> DESCRIBE pagos;


Name Null? Type
------------------------------- -------- ----
PAGO_ID VARCHAR2(4)
NOMBRE VARCHAR2(20)
COD_TRABAJO CHAR(2)
FECHA_INCIO DATE
SALARIO NUMBER(9,2)
BONOS NUMBER(5)
INSERTANDO DATOS
RESULTADOS DE UN INSERT - INTO

SQL> INSERT INTO pagos


2 VALUES('2222','John Davidson','IN','25-SEP-92',40000.00,1500);

1 row created.

SQL> INSERT INTO pagos


2 VALUES('3333','Susan Ash','AP','05-FEB-00',25000.00,500);

1 row created.

SQL> INSERT INTO pagos


2 VALUES('4444','Stephen York','CM','03-JUL-97',42000.00,2000);

SQL> SELECT * FROM pagos;

PAG_ NOMBRE CT FECHA_INI SALARIO BONOS


---- -------------------- -- --------- --------- ---------
1111 Linda Costa CI 15-JAN-97 45000 1000
2222 John Davidson IN 25-SEP-92 40000 1500
3333 Susan Ash AP 05-FEB-00 25000 500
4444 Stephen York CM 03-JUL-97 42000 2000
VIOLACION DE CONSTRAINTS

– Ejemplos:

No se puede borrar un registro con llave primaria que es


llave foránea en otra tabla.

DELETE FROM departamentos


WHERE department_id = 60;

DELETE FROM departamentos


*
ERROR at line xxx:
ORA-02292: integrity constraint (EMP_DEPT_FK) violated - child
record found

21/02/2018
Ing. Alexis Rojas Cordero
VIOLACION DE CONSTRAINTS

UPDATE empleado
SET id_dpto = 55
WHERE id_dpto = 110;

UPDATE empleado
*
ERROR at line 1:
ORA-02291: integrity constraint (EMP_DEP_FK)
violated - parent key not found

No existe el dpto 55, luego no se puede actualizar

21/02/2018
Ing. Alexis Rojas Cordero
CREACION DE UNA TABLA USANDO SUBQUERIES

Se crea usando la declaración CREATE TABLE con la opción AS


subquery CREATE TABLE table
[(column, column...)]
Sintaxis.
AS subquery;

CREATE TABLE epleados_uno


AS
SELECT cedula, nombre,
salario*12 SALANUAL,
fecha_nac
FROM empleados
WHERE id_dpto = 100;
Table created.

DESCRIBE empleados_uno

21/02/2018
Ing. Alexis Rojas Cordero
CREACION DE UNA TABLA
USANDO SUBQUERIES

CREATE TABLE epleados_uno


AS
SELECT cedula, nombre,
salario*12 SALANUAL,
fecha_nac
FROM empleados
WHERE id_dpto = 100;
Table created.

DESCRIBE empleados_uno

MUESTRA AHORA LOS CAMPOS DE LA TABLA EMPLEADOS_UNO

21/02/2018
Ing. Alexis Rojas Cordero
USANDO ALTER TABLE

EL USO DEL ALTER TABLE PERMITE:

•Adicionar una nueva columna


•Modificar una columna existente
•Definir un valor por defecto para la nueva columna
•Eliminar una columna.

Ejemplos:
ALTER TABLE empleados
ADD numero_hijos number(10,2) ;

ALTER TABLE EMPLEADOS


MODIFY (numero_hijos number(2));

ALTER TABLE empleados


MODIFY (numero_hijos default 0);

21/02/2018
Ing. Alexis Rojas Cordero
ELIMINAR UNA TABLA

Todos los datos y las estructuras son borradas.


Todos los índices son eliminados
Todos los constraints son eliminados
No se puede hacer rollback a una tabla eliminada.
Cualquier transacción en curso es grabada antes del
DROP.

Sintaxis : DROP TABLE <nombre de la tabla>;


DROP TABLE empleados_uno;

Table dropped

21/02/2018
Ing. Alexis Rojas Cordero
EJERCICIOS

21/02/2018
Ing. Alexis Rojas Cordero
EJERCICIOS

Consideremos una base de datos que contiene información correspondiente a una sencilla de proce-
Samiento de pedidos para una pequeña empresa de distribución. Consta de 5 tablas:

CLIENTES (num_clie, empesa, rep_clie, lim_credito).


Ejemplo: 2101, ‘quesos delveccio’, 106, 100000).

REPVENTAS (num_empl, nombre_empl, edad_empl, oficina_rep, titulo, contrato, director, cuota, ventas)
Ejemplo: 105, PEDRO PEREZ, 30, 13, ‘REPRESENTANTE DE VENTAS’, 20050101, 104, 120.000,oo,
155.425,36.

OFICINAS (cod_oficina, cod_ciudad, region, direccion, objetivo, ventas)


Ejemplo: 11, 01, ‘costa atlantica’, ‘cl 120 # 10 – 04’, 500.000.000,oo, 350.425.837,53

PRODUCTOS (id_fab, id_producto, descripción, precio, existencias) todos los campos son obligatorios.
Ejemplo: ‘QDV’, ‘4501’, ‘Queso Crema’, 4.000,oo, 1000

PEDIDOS (num_pedido, fecha_pedido, clie, rep, fab, producto, cantidad, importe)


Ejemplo: 110036, ‘2007-09-15’, 2101, 105, ‘QDV’, ‘4501’, 500, 50.000,oo

CREAR LAS TABLAS CON SUS RESPECTIVOS CAMPOS, ASINGANDO LOS CONSTRAINTS DE LLAVE
PRIMARIA, LLAVES FORÁNEAS SI EXISTEN, ASIGNAR EL TIPO DE CAMPO DE ACUERDO AL EJEMPLO
Y HACER EL DESCRIBE DE CADA TABLA.

21/02/2018
Ing. Alexis Rojas Cordero
DIAGRAMA E-R

21/02/2018
Ing. Alexis Rojas Cordero
REFERENCIAS

1. http://www.techonthenet.com/oracle/foreign_keys/foreign_keys.php

1. http://www.um.es/atica/dba---particionamiento

21/02/2018 44

Вам также может понравиться