Documentos de Académico
Documentos de Profesional
Documentos de Cultura
9-2
Objetos de la Base de Datos
Objeto Descripción
Tabla Unidad básica de almacenamiento;
compuesta de registros y columnas
9-3
Reglas de Nomenclatura
9-4
La sentencia CREATE TABLE
• Se debe tener :
– Privilegio de CREATE TABLE
– Un área de almacenamiento
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr][, ...]);
• Se debe especificar:
– El nombre de la tabla
– Nombre, tipo de dato y tamaño de la columna
9-5
Haciendo referencia a
tablas de otros Usuarios
USERA USERB
SELECT * SELECT *
FROM userB.employees; FROM userA.employees;
9-6
La opción DEFAULT
• Específica un valor por defecto para una columna
durante un INSERT.
9-7
Creando Tablas
• Crear la Tabla.
CREATE TABLE dept
(deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13),
create_date DATE DEFAULT SYSDATE);
Table created.
9-8
Tablas en la BD de Oracle
• Tablas de Usuario:
– Son una colección de tablas creadas y mantenidas
por el usuario
– Contienen información del usuario
• Diccionario de Datos:
– Es una colección de tablas creadas y mantenidas
por el servidor de Oracle
– Contienen información de la base de datos
9-9
Tipos de Datos
Tipos de Datos Descripción
VARCHAR2(size) Tipo Carácter de tamaño variable
CHAR(size) Tipo Carácter de tamaño fijo
NUMBER(p,s) Tipo numérico de tamaño variable
DATE Valores Tipo Fecha y hora
LONG Tipo Carácter de tamaño variable de
hasta 2 gigabytes
CLOB Tipo Carácter de hasta de 4
gigabytes
RAW y LONG RAW Dato Binario de Registro
BLOB Dato Binario de hasta 4 gigabytes
BFILE Dato Binario almacenado en un archivo
externo; de hasta 4 gigabytes
ROWID Número de sistema en base 64 que
representa la dirección única de un
registro en la tabla.
9-10
Tipo de datos Fecha Hora
9-12
Tipo de datos Fecha Hora
TIMESTAMP[(fractional_seconds_precision)]
9-13
Tipo de Dato TIMESTAMP WITH TIME ZONE
TIMESTAMP[(fractional_seconds_precision)]
WITH TIME ZONE
9-14
Tipo de Dato TIMESTAMP WITH LOCAL TIME
9-15
Tipo de Dato INTERVAL YEAR TO MONTH
9-16
Tipo de Dato INTERVAL DAY TO SECOND
• INTERVAL DAY TO SECOND almacena un periodo
de tiempo en termino de días, horas, minutos y
segundos.
INTERVAL DAY [(day_precision)]
TO SECOND [(fractional_seconds_precision)]
9-17
Incluyendo Restricciones
(Constraints
Constraints))
9-18
Directrices de las Restricciones
9-19
Definiendo Restricciones
Sintaxis:
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr]
[column_constraint],
...
[table_constraint][,...]);
9-20
Definiendo Restricciones
9-21
La restricción NOT NULL
9-22
La restricción NOT NULL
9-23
La restricción UNIQUE
Restricción UNIQUE
EMPLOYEES
…
INSERT INTO
Permitida
No permitida:
ya existe
9-24
La restricción UNIQUE
9-25
La restricción PRIMARY KEY
9-26
La restricción PRIMARY KEY
DEPARTMENTS
PRIMARY KEY
No permitido
(Ya existe el 50)
9-27
La restricción FOREIGN KEY
DEPARTMENTS
PRIMARY
KEY
…
EMPLOYEES
FOREIGN
KEY
… No permitido
INSERT INTO (9 No Existe)
Permitido
9-28
La restricción FOREIGN KEY
9-29
Palabras Clave de la
restricción FOREIGN KEY
9-30
La restricción CHECK
9-31
CREATE TABLE: Ejemplo
CREATE TABLE employees
( employee_id NUMBER(6)
CONSTRAINT emp_employee_id PRIMARY KEY
, first_name VARCHAR2(20)
, last_name VARCHAR2(25)
CONSTRAINT emp_last_name_nn NOT NULL
, email VARCHAR2(25)
CONSTRAINT emp_email_nn NOT NULL
CONSTRAINT emp_email_uk UNIQUE
, phone_number VARCHAR2(20)
, hire_date DATE
CONSTRAINT emp_hire_date_nn NOT NULL
, job_id VARCHAR2(10)
CONSTRAINT emp_job_nn NOT NULL
, salary NUMBER(8,2)
CONSTRAINT emp_salary_ck CHECK (salary>0)
, commission_pct NUMBER(2,2)
, manager_id NUMBER(6)
, department_id NUMBER(4)
CONSTRAINT emp_dept_fk REFERENCES
departments (department_id));
9-32
Violando Constraints
UPDATE employees
SET department_id = 55
WHERE department_id = 110;
UPDATE employees
*
ERROR at line 1:
ORA-02291: integrity constraint (HR.EMP_DEPT_FK)
violated - parent key not found
9-33
Violando Constraints
9-34
Creando una Tabla
Usando la Sintaxis de una Subconsulta
9-35
Creando una Tabla Usando una
Subconsulta
CREATE TABLE dept80
AS
SELECT employee_id, last_name,
salary*12 ANNSAL,
hire_date
FROM employees
WHERE department_id = 80;
Table created.
DESCRIBE dept80
9-36
La sentencia ALTER TABLE
9-37
Eliminando una Tabla
9-38
Resumen
9-39
Practica 9 Visión General
9-40