BASE DE DATOS

Base de Datos

Lenguaje de Definición de Datos
Introducción
INGENIERÍA DE SISTEMAS

BASE DE DATOS

Agenda
● ● ● ● ● ● ● ●

Introducción. SQL DDL. Creación de Base de Datos. Eliminación de Base de Datos. Restricciones de integridad. Creación de Tablas. Modificación de Tablas. Eliminación de Tablas.

INGENIERÍA DE SISTEMAS

BASE DE DATOS

Agenda
● ● ● ● ●

Implementación de Restricciones. Creación de índices. Eliminación de índices. Creación de vistas. Modificación de vistas.
– – –

Primary Key. Foreign key. Check.

INGENIERÍA DE SISTEMAS

BASE DE DATOS

Agenda
● ● ● ● ● ●

Eliminación de vistas. Creación de secuencias. Implementación de secuencias. Modificación de secuencia. Eliminación de secuencia. Resumen.

INGENIERÍA DE SISTEMAS

BASE DE DATOS

Introducción

SQL – lenguaje de consulta estructurado.

Es un sublenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones. Es un lenguaje informático de cuarta generación (4GL).

INGENIERÍA DE SISTEMAS

es el que se encarga de la creación y modificación de la estructura de los objetos de la base de datos.BASE DE DATOS Introducción ● Lenguajes del SQL: – Lenguaje de definición de datos (DDL): El Data Definition Language. INGENIERÍA DE SISTEMAS .

Procedimientos. Índices.BASE DE DATOS SQL DDL ● Permite crear y modificar objetos en la Base de Datos Tipos de Objetos: – – – – – – ● Tablas. Secuencias. etc. INGENIERÍA DE SISTEMAS . Vistas. Disparadores.

BASE DE DATOS Creación de Bases de Datos CREATE DATABASE nombre_base_datos CREATE DATABASE Sistemas INGENIERÍA DE SISTEMAS .

BASE DE DATOS Creación de Bases de Datos Database Tablespace Data file Logical Segment Physical Extent Oracle block INGENIERÍA DE SISTEMAS OS block .

BASE DE DATOS Creación de Bases de Datos CREATE DATABASE Test LOGFILE GROUP 1 ('/u01/oradata/test/redolog1a. '/u02/oradata/test/redolog3b. GROUP 2 ('/u01/oradata/test/redolog2a.dbf' SIZE 300M AUTOEXTEND ON NEXT 16M MAXSIZE UNLIMITED UNDO TABLESPACE ts_undo DATAFILE '/u02/oradata/test/undo01. '/u02/oradata/test/redolog1b.dbf' ) SIZE 10M DEFAULT TABLESPACE system DATAFILE '/u02/oradata/test/system01.dbf'.dbf' ) SIZE 10M.dbf' SIZE 50M AUTOEXTEND ON NEXT 16M MAXSIZE UNLIMITED DEFAULT TEMPORARY TABLESPACE ts_temp TEMPFILE '/u02/oradata/test/temp01.dbf' SIZE 50M AUTOEXTEND ON NEXT 50M MAXSIZE 300M / INGENIERÍA DE SISTEMAS . GROUP 3 ('/u01/oradata/test/redolog3a.dbf' SIZE 400M AUTOEXTEND ON NEXT 16M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL TABLESPACE sysaux DATAFILE '/u02/oradata/test/sysaux01.dbf'.dbf'.dbf' ) SIZE 10M. '/u02/oradata/test/redolog2b.

BASE DE DATOS Eliminación de Bases de Datos ● DROP DATABASE DROP DATABASE Sistemas INGENIERÍA DE SISTEMAS .

BASE DE DATOS Restricciones de Integridad ● Aseguran que los cambios realizados a una BD no provoquen inconsistencia en la información. Integridad referencial. – – – – – – Restricción de dominio. Restriccón de unicidad. Restricción de chequeo. Restricción de datos. Integridad de entidad. INGENIERÍA DE SISTEMAS .

DATE: Fechas válidas. INGENIERÍA DE SISTEMAS . NUMBER(p. – Dominios base en SQL: ● ● ● ● CHAR(p): Cadena de caracteres de longitud fija p (máxima longitud p) VARCHAR2(p): Cadena de caracteres de longitud variable.s): Valor numérico de precisión p y escala s.BASE DE DATOS Restricciones de Integridad ● Restricciones de dominio: Conjunto de valores y de operaciones permitidas sobre ellos. Máxima longitud p.

BASE DE DATOS Restricciones de Integridad ● Restricción de datos – Nulos: Un atributo puede o no admitir nulos. ● Integridad de entidad – INGENIERÍA DE SISTEMAS . En SQL se especifica mediante la cláusula NOT NULL. Clave Primaria: Garantiza la unicidad y obligatoriedad del o los atributos definidos como clave primaria. Para ello se utiliza la cláusula PRIMARY KEY.

● Para ello se utilizan las cláusulas REFERENCES y FOREIGN KEY ● Restricción de Unicidad – Clave Alternativa: Garantiza la unicidad de los atributos declarados como tal.BASE DE DATOS Restricciones de Integridad ● Integridad Referencial – Garantiza la existencia de las Claves Foráneas. Se utiliza la cláusula UNIQUE. Si se desea hacer obligatoria debe especificarse adicionalmente NOT NULL. – INGENIERÍA DE SISTEMAS .

BASE DE DATOS Restricciones de Integridad ● Restricción de Chequeo – Las reglas CHECK para atributos: ● Involucra condiciones de chequeo para uno o varios atributos. – Sintaxis : CHECK ( condición ) INGENIERÍA DE SISTEMAS .

BASE DE DATOS Creación de Tablas ● Se pueden crear tablas con la instrucción CREATE [GLOBAL TEMPORARY] TABLE [schema.]nombre_tabla ( columna tipo_dato [NOT NULL]. {CONSTRAINT nombre_clave_primaria PRIMARY KEY (columnas_clave) } {CONSTRAINT nombre_clave_foránea FOREIGN KEY(columnas_clave) REFERENCES tabla_detalle( columnas_clave ) {ON DELETE | CASCADE} } ) INGENIERÍA DE SISTEMAS . columna tipo_dato [NOT NULL].

description VARCHAR2(100) ). day_hour DATE NOT NULL. INGENIERÍA DE SISTEMAS .BASE DE DATOS Creación de Tablas ● CREATE TABLE CREATE TABLE schedule ( schedule_id NUMBER NOT NULL. end_hour DATE NOT NULL.

start_day DATE DEFAULT sysdate ). INGENIERÍA DE SISTEMAS .BASE DE DATOS Creación de Tablas ● CREATE TABLE – Incluyendo DEFAULT CREATE TABLE employee_schedule ( employee_id NUMBER NOT NULL. schedule_id NUMBER NOT NULL.

BASE DE DATOS Modificación de Tablas ● Se puede modificar la estructura de una tabla con la instrucción ALTER TABLE. INGENIERÍA DE SISTEMAS . ALTER TABLE [schema.]nombre_tabla ADD columna tipo_dato. ALTER TABLE employee_schedule ADD end_day DATE.

BASE DE DATOS Eliminación de Tablas ● DROP TABLE DROP TABLE [schema.]nombre_tabla DROP TABLE training INGENIERÍA DE SISTEMAS .

training_name VARCHAR2(30) NULL.BASE DE DATOS Implementación de Restricciones ● PRIMARY KEY CREATE TABLE training ( training_id NUMBER NOT NULL. description VARCHAR2(100) ). INGENIERÍA DE SISTEMAS .

BASE DE DATOS Implementación de Restricciones ● PRIMARY KEY ALTER TABLE training ADD CONSTRAINT training_pk PRIMARY KEY (training_id). INGENIERÍA DE SISTEMAS .

KEY.BASE DE DATOS Implementación de Restricciones ● PRIMARY KEY CREATE CREATE TABLE TABLE training training ( ( training_id training_id NUMBER NUMBER PRIMARY PRIMARY training_name (30) training_name VARCHAR2 VARCHAR2 (30) description (100) description VARCHAR2 VARCHAR2 (100) ). ). KEY. INGENIERÍA DE SISTEMAS . NULL . NULL .

NULL. (employee_id. training_id training_id NUMBER NUMBER NOT NOT NULL. INGENIERÍA DE SISTEMAS . training_id) training_id) ). CONSTRAINT CONSTRAINT employee_training_pk employee_training_pk PRIMARY PRIMARY KEY KEY (employee_id. ). NULL.BASE DE DATOS Implementación de Restricciones ● PRIMARY KEY CREATE CREATE TABLE TABLE employee_training employee_training ( ( employee_id employee_id NUMBER NUMBER NOT NOT NULL.

KEY. ). day day DATE DATE NOT NOT NULL NULL ).BASE DE DATOS Implementación de Restricciones ● FOREIGN KEY CREATE CREATE TABLE TABLE absence absence ( ( absence_id absence_id NUMBER NUMBER PRIMARY PRIMARY KEY. REFERENCES employees employees (employee_id). INGENIERÍA DE SISTEMAS . employee_id employee_id NUMBER NUMBER NOT NOT NULL NULL REFERENCES (employee_id).

BASE DE DATOS Implementación de Restricciones ● FOREIGN KEY CREATE TABLE absence ( absence_id NUMBER PRIMARY KEY. employee_id NUMBER NOT NULL. INGENIERÍA DE SISTEMAS . day DATE NOT NULL. CONSTRAINT absence_fk FOREIGN KEY (employee_id) REFERENCES employees(employee_id) ).

BASE DE DATOS Implementación de Restricciones ● FOREIGN KEY ALTER ALTER TABLE TABLE employee_training employee_training ADD ADD CONSTRAINT CONSTRAINT employee_training_fk employee_training_fk FOREIGN FOREIGN KEY KEY (training_id) (training_id) REFERENCES REFERENCES training training (training_id). (training_id). (employee_id). ALTER ALTER TABLE TABLE employee_training employee_training ADD ADD CONSTRAINT CONSTRAINT training_employee_fk training_employee_fk FOREIGN FOREIGN KEY KEY (employee_id) (employee_id) REFERENCES REFERENCES employees employees (employee_id). INGENIERÍA DE SISTEMAS .

BASE DE DATOS Implementación de Restricciones ● CHECK CREATE CREATE TABLE TABLE bonuses bonuses ( ( employee_id . description (100) description VARCHAR2 VARCHAR2 (100) ). employee_id NUMBER NUMBER PRIMARY PRIMARY KEY KEY . bonus bonus NUMBER NUMBER DEFAULT DEFAULT 0 0 CONSTRAINT CONSTRAINT limit_bonus limit_bonus CHECK CHECK (bonus (bonus BETWEEN BETWEEN 0 0 AND AND 10000). INGENIERÍA DE SISTEMAS . ). 10000).

bonus . bonus NUMBER NUMBER DEFAULT DEFAULT 0 0 . ). description VARCHAR2 VARCHAR2 (100). INGENIERÍA DE SISTEMAS .BASE DE DATOS Implementación de Restricciones ● CHECK CREATE CREATE TABLE TABLE bonuses bonuses ( ( employee_id . description (100). employee_id NUMBER NUMBER PRIMARY PRIMARY KEY KEY . CONSTRAINT CONSTRAINT limit_bonus limit_bonus CHECK CHECK (bonus (bonus BETWEEN BETWEEN 0 0 AND AND 10000) 10000) ).

BASE DE DATOS Implementación de Restricciones DEPARTAMENTO # código * nombre * localización el lugar de trabajo de adscrito a EMPLEADO el subordinado de #dni * nombre * salario * comisión * cargo el jefe de INGENIERÍA DE SISTEMAS .

). nombre (20) . ciudad (20) ciudad VARCHAR2 VARCHAR2 (20) CHECK CHECK (ciudad (ciudad IN IN ('Lima'.BASE DE DATOS Implementación de Restricciones CREATE CREATE TABLE TABLE Departamento Departamento ( (6) . 'Arequipa'. ( codigo codigo NUMBER NUMBER (6) PRIMARY PRIMARY KEY KEY . El atributo ciudad sólo admitirá 1 de estas 3 ciudades. 'Trujillo')) 'Trujillo')) ). Es necesario además colocarle la restricción de no nulidad. INGENIERÍA DE SISTEMAS . 'Arequipa'. nombre VARCHAR2 VARCHAR2 (20) NOT NOT NULL NULL UNIQUE UNIQUE . ('Lima'.

dpto (6) dpto NUMBER NUMBER (6) NOT NOT NULL NULL REFERENCES REFERENCES departamento departamento ). jefe CHAR (8) jefe CHAR (8) REFERENCES REFERENCES empleado. cargo VARCHAR2 (20) NOT NOT NULL NULL . cargo VARCHAR2 (20) . nombre VARCHAR2 VARCHAR2 (30) NOT NOT NULL NULL . ( dni dni CHAR (8) PRIMARY PRIMARY KEY KEY . salario NUMBER NUMBER (10. salario (10.2) NOT NOT NULL NULL . ).2) . empleado. comisión (2) comisión NUMBER NUMBER (2) .BASE DE DATOS Implementación de Restricciones Clave foránea sobre la misma tabla CREATE CREATE TABLE TABLE Empleado Empleado ( CHAR (8) . nombre (30) . . Clave foránea INGENIERÍA DE SISTEMAS .

0).2) (salario salario NUMBER NUMBER (10. empleado(dni). INGENIERÍA DE SISTEMAS . cargo VARCHAR2 (20) . cargo VARCHAR2 (20) NOT NOT NULL NULL . nombre (30) . jefe CHAR (8) jefe CHAR (8) REFERENCES REFERENCES empleado(dni). comision (3) comision NUMBER NUMBER (3) CHECK CHECK (comision (comision BETWEEN BETWEEN 0 0 AND AND 100).2) NOT NOT NULL NULL CHECK CHECK (salario > > 0).BASE DE DATOS Implementación de Restricciones Puede especificarse el atributo hacia el cual se refiere la clave foránea CREATE CREATE TABLE TABLE empleado empleado ( ( dni CHAR (8) . depto (6) depto NUMBER NUMBER (6) NOT NOT NULL NULL REFERENCES REFERENCES departamento departamento ). 100). ). salario (10. dni CHAR (8) PRIMARY PRIMARY KEY KEY . nombre VARCHAR2 VARCHAR2 (30) NOT NOT NULL NULL .

cantidad (6) . Es incorrecto colocar PRIMARY KEY al frente de snro y de pnro. cantidad NUMBER NUMBER (6) NOT NOT NULL NULL .BASE DE DATOS Implementación de Restricciones CREATE CREATE TABLE TABLE envio envio ( ( snro NUMBER (6).pnro) ). ). snro NUMBER (6). pnro NUMBER (6). INGENIERÍA DE SISTEMAS .pnro) PRIMARY KEY KEY (snro. pnro NUMBER (6). PRIMARY (snro.

BASE DE DATOS Implementación de Restricciones CREATE CREATE TABLE TABLE revision( revision( codrevision (5) . cf_pnro (6) . revisor (20) NOT . cf_pnro NUMBER NUMBER (6) NOT NOT NULL NULL . Cuando la clave primaria a la que se referencia es compuesta se debe utilizar esta sintaxis.cf_pnro) FOREIGN KEY KEY (cf_snro. codrevision NUMBER NUMBER (5) PRIMARY PRIMARY KEY KEY . revisor VARCHAR2 VARCHAR2 (20) NOT NULL NULL . cf_snro (6) . cf_snro NUMBER NUMBER (6) NOT NOT NULL NULL .cf_pnro) REFERENCES REFERENCES envio envio ). INGENIERÍA DE SISTEMAS . ). FOREIGN (cf_snro.

BASE DE DATOS Implementación de Restricciones FACTURA # numero * fecha EMPLEADO # dni * nombre * salario AUTO # placa * marca INGENIERÍA DE SISTEMAS .

). CREATE CREATE TABLE TABLE Auto Auto ( ( placa (10) placa VARCHAR2 VARCHAR2 (10) marca (20) marca VARCHAR2 VARCHAR2 (20) ). PRIMARY KEY KEY .2) NOT NOT NULL NULL ).BASE DE DATOS Implementación de Restricciones CREATE CREATE TABLE TABLE Empleado Empleado ( ( dni NUMBER (8) . nombre (25) . salario (8. NOT NOT NULL NULL . dni NUMBER (8) PRIMARY PRIMARY KEY KEY .2) salario NUMBER NUMBER (8. INGENIERÍA DE SISTEMAS PRIMARY . nombre VARCHAR2 VARCHAR2 (25) UNIQUE UNIQUE NOT NOT NULL NULL . ).

CHECK ) CHECK ((placa ((placa IS IS NULL NULL AND AND dni dni IS IS NOT NOT NULL NULL ) OR )) OR (placa (placa IS IS NOT NOT NULL NULL AND AND dni dni IS IS NULL NULL )) ). ). dni NUMBER (8) dni NUMBER (8) REFERENCES REFERENCES empleado. Por medio del CHECK se implementa se garantiza que si placa y dni no sean nulos ala vez. numero NUMBER NUMBER (6) PRIMARY PRIMARY KEY KEY . INGENIERÍA DE SISTEMAS . auto. fecha DATE DATE NOT NOT NULL NULL . fecha . placa (10) placa VARCHAR2 VARCHAR2 (10) REFERENCES REFERENCES auto. empleado.BASE DE DATOS Implementación de Restricciones CREATE CREATE TABLE TABLE factura factura ( ( numero (6) .

BASE DE DATOS Implementación de Restricciones ● Implementación de Supertipos/Subtipos PERSONA #cédula *nombre ESTUDIANTE *promedio PROFESOR *registro INGENIERÍA DE SISTEMAS .

BASE DE DATOS Implementación de Restricciones ● Implementación de un supertipo. dni NUMBER (8) PRIMARY PRIMARY KEY KEY . CREATE CREATE TABLE TABLE Persona Persona ( ( dni NUMBER (8) . nombre (20) nombre VARCHAR2 VARCHAR2 (20) NOT NOT NULL NULL ) ) INGENIERÍA DE SISTEMAS .

persona. Persona.BASE DE DATOS Implementación de Restricciones ● Implementación de un subtipos. CREATE CREATE TABLE TABLE Estudiante Estudiante ( ( cedest (8) cedest NUMBER NUMBER (8) PRIMARY PRIMARY KEY KEY REFERENCES REFERENCES Persona. promedio (3.2) ) ) CREATE CREATE TABLE TABLE Profesor Profesor ( ( cedprof (8) cedprof NUMBER NUMBER (8) PRIMARY PRIMARY KEY KEY REFERENCES REFERENCES persona. registro (5) registro NUMBER NUMBER (5) ) ) INGENIERÍA DE SISTEMAS .2) promedio NUMBER NUMBER (3.

n][ ASC | DESC ]) INGENIERÍA DE SISTEMAS .....]nombre_indice ON ASC | DESC ]) ON nombre_tabla nombre_tabla (column_name (column_name [.n][ [.]nombre_indice [schema...BASE DE DATOS Creación de Índices ● CREATE INDEX CREATE CREATE [UNIQUE] [UNIQUE] INDEX INDEX [schema.

BASE DE DATOS Creación de Índices CREATE CREATE INDEX INDEX ind_empleado ind_empleado ON ON Empleado( Empleado( salario salario ). CREATE CREATE INDEX INDEX indice_factura indice_factura ON ON factura( factura( placa placa ) ) TABLESPACE TABLESPACE example example STORAGE ( STORAGE ( INITIAL INITIAL 500K 500K NEXT NEXT 500K 500K ) ) INGENIERÍA DE SISTEMAS . ).

.nombre_indice [schema.n .BASE DE DATOS Eliminación de Índices ● DROP INDEX DROP DROP INDEX INDEX [schema.]nombre_tabla...]nombre_tabla.n ] ] DROP DROP INDEX INDEX ind_empleado ind_empleado INGENIERÍA DE SISTEMAS ....nombre_indice [ [ .

BASE DE DATOS Creación de Vistas ● Las vistas no son más que “consultas con nombres”.]nombre_vista AS AS Subconsulta Subconsulta INGENIERÍA DE SISTEMAS .]nombre_vista [schema. CREATE CREATE {OR {OR REPLACE} REPLACE} {FORCE} {FORCE} VIEW VIEW [schema.

BASE DE DATOS Creación de Vistas ● CREATE VIEW CREATE CREATE OR OR REPLACE REPLACE AS AS SELECT SELECT * * FROM FROM FORCE FORCE VIEW VIEW vista_incorrecta vista_incorrecta factura factura CREATE CREATE OR OR REPLACE REPLACE VIEW VIEW factura_cliente factura_cliente AS AS SELECT SELECT * * FROM FROM factura factura WHERE WHERE numero numero <= <= 50 50 INGENIERÍA DE SISTEMAS .

BASE DE DATOS Modificación de Vistas ● ALTER VIEW. ALTER VIEW [schema.]nombre_vista opciones ALTER VIEW factura_cliente ADD numero > 10 INGENIERÍA DE SISTEMAS .

]nombre_tabla DROP VIEW factura_cliente INGENIERÍA DE SISTEMAS .BASE DE DATOS Eliminación de Vista ● DROP VIEW DROP VIEW [schema.

BASE DE DATOS Creación de una secuencia ● CREATE SEQUENCE CREATE SEQUENCE nombre_secuencia {START WITH entero} {INCREMENT BY entero} {MAXVALUE entero } {MINVALUE entero } {CYCLE | NOCYCLE} INGENIERÍA DE SISTEMAS .

BASE DE DATOS Creación de una secuencia ● CREATE SEQUENCE CREATE SEQUENCE cod_cliente INCREMENT BY 10 CREATE SEQUENCE cod_pais INCREMENT BY 10 MAXVALUE 5000 CYCLE INGENIERÍA DE SISTEMAS .

NEXTVAL. nombre VARCHAR2(30) NOT NULL ) CREATE SEQUENCE secuencia_departamento START WITH 1 INCREMENT BY 1 MAXVALUE 999999 MINVALUE 1.BASE DE DATOS Implementación de una secuencia CREATE TABLE Departamento ( codigo NUMERIC(6) NOT NULL. INSERT INTO Departamento VALUES(secuencia_departamento.'Sistemas') INGENIERÍA DE SISTEMAS .

ALTER SEQUENCE [schema.]nombre_vista opciones ALTER SEQUENCE secuencia_departamento CYCLE INGENIERÍA DE SISTEMAS .BASE DE DATOS Modificación de Secuencia ● ALTER SEQUENCE.

BASE DE DATOS Eliminación de secuencia ● DROP SEQUENCE DROP DROP SEQUENCE SEQUENCE [schema.]nombre_secuencia [schema.]nombre_secuencia DROP DROP SEQUENCE SEQUENCE secuencia_departamento secuencia_departamento INGENIERÍA DE SISTEMAS .

Además se puede crear: – – – – – ● Schema Package Function Role User. INGENIERÍA DE SISTEMAS . etc.BASE DE DATOS Resumen ● El SQL DDL (lenguaje de definición de datos) permite la creación de diversos objetos de la base de datos.

Sign up to vote on this title
UsefulNot useful