0% encontró este documento útil (0 votos)
47 vistas

SQL Ii

Este documento resume los conceptos clave de DDL en SQL. Explica que DDL permite crear objetos como tablas, índices y vistas en una base de datos. Detalla cómo se crean estas estructuras de datos y también cubre restricciones de integridad como claves primarias, foráneas y dominio. Finalmente, presenta ejemplos de implementación de relaciones uno-a-uno, uno-a-muchos y herencia mediante supertipos y subtipos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
47 vistas

SQL Ii

Este documento resume los conceptos clave de DDL en SQL. Explica que DDL permite crear objetos como tablas, índices y vistas en una base de datos. Detalla cómo se crean estas estructuras de datos y también cubre restricciones de integridad como claves primarias, foráneas y dominio. Finalmente, presenta ejemplos de implementación de relaciones uno-a-uno, uno-a-muchos y herencia mediante supertipos y subtipos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 25

SQL - DDL

Andrés Henao Rosero


Universidad Tecnológica de Pereira

Tomado de:
Gloria Lucía Giraldo Gómez
Universidad Nacional de Colombia

Bases de Datos I Andres Henao Rosero - UTP 1


SQL:DDL
 DDL: Lenguaje de Definición de Datos
 Permite crear objetos en la Base de
Datos
Tipos de Objetos:
- Tablas
- Índices
- Vistas
- Otros
Bases de Datos I Andres Henao Rosero - UTP 2
SQL:DDL

Se pueden crear tablas con la instrucción


CREATE TABLE nombre_tabla
( atributos: cada uno con su tipo de datos y
restricciones
);
Se pueden crear índices así:
CREATE INDEX nombreindice ON tabla(columna(s));

Las vistas no son más que “consultas con nombres”


Ejemplo:
CREATE VIEW nombre_vista AS consulta;

Bases de Datos I Andres Henao Rosero - UTP 3


Restricciones de Integridad

Aseguran que los cambios realizados a una BD no provoquen


inconsistencia en la información.

 Restricciones de dominio: Conjunto de


valores y de operaciones permitidas sobre ellos.
Dominios base en SQL:
 CHAR(p): Cadena de caracteres de longitud fija p
(máxima longitud p)
 VARCHAR(p): Cadena de caracteres de longitud variable.
Máxima longitud p.
 NUMBER(p,s): Valor numérico de precisión p y escala s.
 DATE: Fechas válidas.

Bases de Datos I Andres Henao Rosero - UTP 4


Restricciones de Integridad

 Nulos: Un atributo puede o no admitir


nulos. En SQL se especifica mediante la
cláusula NOT NULL.
 Integridad Referencial: Garantiza la
existencia de las Claves Foráneas.
Para ello se utilizan las cláusulas
REFERENCES y FOREIGN KEY
 Clave Primaria: Garantiza la unicidad y
obligatoriedad del o los atributos definidos
como clave primaria. Para ello se utiliza la
cláusula PRIMARY KEY.
Bases de Datos I Andres Henao Rosero - UTP 5
Restricciones de Integridad

 Clave Alternativa: Garantiza la unicidad de los


atributos declarados como tal. Se utiliza la cláusula
UNIQUE.
Si se desea hacer obligatoria debe especificarse
adicionalmente NOT NULL.

 Las reglas CHECK para atributos:


Involucra condiciones de chequeo para uno o varios
atributos.
Sintaxis : CHECK ( condicion)

Bases de Datos I Andres Henao Rosero - UTP 6


Sea el modelo:

DEPARTAMENTO
# código
* nombre
* ciudad

el lugar de trabajo de

adscrito a

EMPLEADO
#cédula
el subordinado * nombre
de * salario
comisión
* cargo

el jefe de
Bases de Datos I Andres Henao Rosero - UTP 7
CREATE TABLE departamento
( codigo NUMBER(6) PRIMARY KEY,
nombre VARCHAR(6) NOT NULL UNIQUE,
ciudad VARCHAR(12) CHECK (ciudad IN
('Medellín', 'Bogotá', 'Cali')) NOT NULL
);
El atributo ciudad sólo admitirá 1 de estas 3
ciudades. Es necesario además colocarle la
restricción de no nulidad.

CREATE TABLE empleado


( cédula NUMBER(10) PRIMARY KEY,
nombre VARCHAR(30) NOT NULL,
jefe NUMBER(10) REFERENCES empleado,
salario NUMBER(10,2) NOT NULL, Clave foránea
comisión NUMBER(2) , sobre la
cargo VARCHAR(20) NOT NULL, misma tabla
depto NUMBER(6) NOT NULL REFERENCES departamento
);

Bases de Datos I Andres Henao Rosero - UTP Clave foránea8


Restricciones de Integridad
Ejemplos con la cláusula CHECK:
Puede especificarse
CREATE TABLE empleado el atributo hacia el
Cual se refiere la
( cédula NUMBER(10) PRIMARY KEY, clave foránea
nombre VARCHAR(30) NOT NULL,
jefe NUMBER(10) REFERENCES empleado(cédula),
salario NUMBER(10,2) NOT NULL CHECK (salario > 0 ) ,
comision NUMBER(3) CHECK (comision between 0 and 100),
cargo VARCHAR(20) NOT NULL,
depto NUMBER(6) NOT NULL REFERENCES departamento
);

Bases de Datos I Andres Henao Rosero - UTP 9


Restricciones de Integridad
Especificación de una clave primaria compuesta:

CREATE TABLE envio (


snro NUMBER(6),
pnro NUMBER(6),
cantidad NUMBER(6) NOT NULL,
PRIMARY KEY(snro,pnro)
);

Nota: Es incorrecto colocar PRIMARY KEY al


frente de snro y de pnro.

Bases de Datos I Andres Henao Rosero - UTP 10


Restricciones de Integridad
Clave foránea hacia una clave primaria
compuesta:

CREATE TABLE revision(


codrevision NUMBER(5) PRIMARY KEY,
cf_snro NUMBER(6) NOT NULL,
cf_pnro NUMBER(6) NOT NULL,
revisor VARCHAR(20)NOT NULL,
FOREIGN KEY(cf_snro,cf_pnro) REFERENCES envio
);
Cuando la clave primaria a la que se referencia
es compuesta se debe utilizar esta sintaxis.
Bases de Datos I Andres Henao Rosero - UTP 11
Restricciones de Integridad

 Se puede modificar la estructura de


una tabla con la instrucción ALTER
TABLE
Ej: ALTER TABLE mitabla
ADD nuevocampo NUMBER(3);

 Para destruir una tabla (estructura y


datos)
DROP TABLE nombre_tabla;
Bases de Datos I Andres Henao Rosero - UTP 12
Ingresando valores …
EJEMPLO:
CREATE TABLE t (
a number(3) PRIMARY KEY,
b date,
c varchar(3));

INSERT INTO t VALUES(10, CURRENT_DATE, 'hi');


INSERT INTO t(c,a) VALUES(‘bye’,20);

Se pueden especificar los campos a insertar…


Bases de Datos I ¿QuéHenao
Andres pasa con- UTP
Rosero el atributo b en este caso?
13
Eliminando valores …
 Para eliminar filas de una tabla:
DELETE
FROM tabla
[WHERE condicion];

Ej: DELETE
FROM envio
WHERE snro=34;
La condición puede incluir subconsultas…
Bases de Datos I Andres Henao Rosero - UTP 14
Actualizando valores …

 Para actualizar filas de una tabla:


UPDATE tabla
SET campo = nuevo_valor
[WHERE condicion];

- Se pueden actualizar varios campos al


mismo tiempo separándolos por comas
- La condición y nuevo_valor pueden incluir
subconsultas…

Bases de Datos I Andres Henao Rosero - UTP 15


Actualizando valores …

Ejemplo:

UPDATE envio
SET cantidad = cantidad - 5
WHERE snro = 10 AND pnro = 20;

Bases de Datos I Andres Henao Rosero - UTP 16


Implementación de un Arco

EMPLEADO
FACTURA # cédula
* nombre
# código * carné
* fecha

AUTO
# placa
* marca

Bases de Datos I Andres Henao Rosero - UTP 17


CREATE TABLE empleado(
cedula NUMBER(8) PRIMARY KEY,
nombre VARCHAR(25) NOT NULL,
carnet NUMBER(5) UNIQUE NOT NULL);
Clave
Alternativa
INSERT INTO empleado VALUES(10,'Dino',20);

CREATE TABLE auto(


placa VARCHAR(10) PRIMARY KEY,
marca VARCHAR(20) NOT NULL);

INSERT INTO auto VALUES('CTV 40','BMW');


Bases de Datos I Andres Henao Rosero - UTP 18
CREATE TABLE factura(
codigo NUMBER(6) PRIMARY KEY,
fecha DATE NOT NULL,
cedula NUMBER(8) REFERENCES empleado,
placa VARCHAR(10) REFERENCES auto,
CHECK ( (placa IS NULL AND cedula IS NOT NULL)
OR
(placa IS NOT NULL AND cedula IS NULL)
)
);
Por medio del CHECK se implementa
el arco ya que garantiza que si una
CF es nula,Andres
Bases de Datos I
la Henao
otraRosero
CF- es
UTP
no nula… 19
Genera la fecha
actual (en Oracle) En SQL standard es CURRENT DATE

 INSERT INTO factura VALUES(300,SYSDATE,10,NULL);

 INSERT INTO factura


VALUES(900,TO_DATE('28/12/04'),NULL,'CTV 40');
propia de Oracle, en el SQL estándar es CAST

Note que las dos siguientes inserciones fallan:

 INSERT INTO factura VALUES(500,SYSDATE,10,'CTV 40');

 INSERT INTO factura VALUES(600,SYSDATE,NULL,NULL);

Bases de Datos I Andres Henao Rosero - UTP 20


Implementación de
Supertipos/Subtipos

PERSONA
#cédula
*nombre

ESTUDIANTE
*promedio

PROFESOR
*registro
Bases de Datos I Andres Henao Rosero - UTP 21
SUPERTIPOS/SUBTIPOS

 Repasar la clase de Conversión


E-R a Relacional

 Veamos la alternativa 2 para


implementar supertipos y subtipos

Bases de Datos I Andres Henao Rosero - UTP 22


SUPERTIPOS/SUBTIPOS

 Se crea la tabla para el supertipo:

CREATE TABLE persona(


cedula NUMBER(8) PRIMARY KEY,
nombre VARCHAR(20) NOT NULL );

Bases de Datos I Andres Henao Rosero - UTP 23


SUPERTIPOS/SUBTIPOS
 Se crean tablas para cada uno de los
subtipos:
CREATE TABLE estudiante(
cedest NUMBER(8) PRIMARY KEY REFERENCES persona,
promedio NUMBER(3,2) );

3 dígitos: 1 entero, 2 decimales


CREATE TABLE profesor(
cedprof NUMBER(8) PRIMARY KEY REFERENCES persona,
registro NUMBER(5) );

Bases de Datos I Andres Henao Rosero - UTP 24


 En esta alternativa se debe validar
por programación que la cédula de
una persona no exista en ambas
tablas para garantizar la exclusividad

Bases de Datos I Andres Henao Rosero - UTP 25

También podría gustarte