Está en la página 1de 25

FUNDAMENTOS DDL Y DML EN BASES DE DATOS

Alexis Rojas Cordero


(Profesor)
CREACIÓN Y MANEJO DE TABLAS E INDICES.

INSTRUCCIONES
DDL
(Data Definition Language)

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

09/11/2019 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 caractéres 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

09/11/2019
Ing. Alexis Rojas Cordero
DECLARACION CREATE (DDL)

Qué debe tener su usuario para poder crear


tablas ?
1. Privilegios
2. Un área definida en el tablespace 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));

09/11/2019
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 auto-destruye 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 tipo de dato de la columna

09/11/2019
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;

09/11/2019
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 caractéres 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 longitude, donde 10 son enteros y dos son decimales
DATE Para valores de fecha y tiempo

09/11/2019
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.

09/11/2019
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.

09/11/2019
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

09/11/2019
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),
09/11/2019
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));

09/11/2019
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.

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


09/11/2019
Ing. Alexis Rojas Cordero
Modelo Entidad Relación
• 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

09/11/2019 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;

09/11/2019
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)
09/11/2019
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:
..., salary NUMBER(2)
CONSTRAINT
CONSTRAINT emp_salary_min
dept_deptid_cc
CHECK (salary > 0),...

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

09/11/2019
Ing. Alexis Rojas Cordero
CONSTRAINT DE LLAVE FORANEA

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


foránea. LA TABLA EMPLEADO ES HIJA DE LA TABLA 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 sueldo_ck CHECK (e_salario > 0)
, CONSTRAINT cedula_pk PRIMARY KEY(e_cedula)
, CONSTRAINT emp_dep_fk FOREIGN KEY (e_id_dpto)
REFERENCES departamento(deptno)
, CONSTRAINT emp_email_uk UNIQUE(e_email)
);
09/11/2019
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
09/11/2019
Ing. Alexis Rojas Cordero
CONSTRAINT DE LLAVE ÚNICA DESPUÉS DE CREADA LA TABLA

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

09/11/2019
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
09/11/2019
Ing. Alexis Rojas Cordero
OTROS EJEMPLOS DE 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)
GRACIAS
09/11/2019 25

También podría gustarte