Vous êtes sur la page 1sur 27

GESTIÓN DE BASES DE DATOS

SQL – PARTE I
MSc. Jimena Adriana Timaná Peña
INTRODUCCIÓN
• SQL (Structure Query Language) o Lenguaje de Consulta Estructurado

• Lenguaje con el que se interactuará en un SGBD

• SQL es un lenguaje de dominio específico con el que podemos realizar: inserción, consulta,
actualización, borrado y control de acceso a los datos. Además permite la creación y
modificación del esquema de una BD.
INTRODUCCIÓN

DDL: Data Definition Language o Lenguaje de Definición de Datos

SQL DML: Data Manipulation Language o Lenguaje de Manipulación de Datos

DCL: Data Control Language o Lenguaje de Control de Datos


DDL – Data Definition Language
Es el encargado de la definición-modificación de la estructura de los objetos de la base de
datos. Sus instrucciones permiten:

• Definir, Modificar y Eliminar esquemas de las relaciones


• Crear índices
• Definir vistas
• Especificar restricciones de integridad

Instrucciones:
CREATE / ALTER / DROP / RENAME / TRUNCATE
DDL – Data Definition Language

CREATE

Esta sentencia permite la creación de objetos de datos, como bases de


datos, tablas, vistas, índices, procedimientos almacenados, entre otros.
DDL – Data Definition Language
CREATE TABLE Profesor
CREATE (
profId integer not null primary key,
Para crear una tabla: profNombre varchar2(20) not null,
profApellido varchar2(20) not null,
profGenero char
CREATE TABLE table_name );
(
column_name1 data_type,
column_name2 data_type(size),
column_name3 data_type(size),
… CREATE TABLE Profesor
… (
); id integer not null primary key,
nombre varchar2(20) not null,
apellido varchar2(20) not null,
data_type deben revisarse de genero char
acuerdo al DBMS a utilizar );
DDL – Data Definition Language
data_type o Tipos de datos soportados:
char(n):
• Tienen una longitud fija. 1 a 2000 bytes o caracteres.
• Si se introduce una cadena de menos longitud que la definida se rellenará con blancos a la derecha
hasta quedar completa.
• Si se introduce una cadena de mayor longitud que la fijada producirá un error.

varchar(n) / varchar2(n):
• Almacena cadenas de longitud variable. 1 a 4000 bytes o caracteres.
• Si se introduce una cadena de menor longitud que la que esta definida, se almacena con esa
longitud y no se rellenará.
• Si se introduce una cadena de mayor longitud que la fijada, producirá un error.
Tenga en cuenta que los valores alfanuméricos van encerrados entre comilla simple
DDL – Data Definition Language
data_type o Tipos de datos soportados:
• date: Es una fecha del calendario, que contiene año (4 dígitos), mes y día. Las fechas van
encerradas entre comilla simple.

• time: Es la hora del día, expresada en horas, minutos y segundos

• timestamp: tipo de datos incluyen un valor que consta de siete partes (año, mes, día, hora, minuto,
segundo y microsegundo.

• int: Es un entero con signo de 32 bits, que tenga un rango de -2147483647 a 2147483647.
También se puede utilizar la palabra integer.

• smallint: Entero pequeño


DDL – Data Definition Language
data_type o Tipos de datos soportados:
number(p,d):
• es un número en coma flotante.
• p dígitos (más el signo), de esos p dígitos, d
pertenecen a la parte decimal.
real, double precision:
• Números en coma flotante y en coma flotante
de doble precisión, con precisión dependiente
de la máquina.
DDL – Data Definition Language
data_type o Tipos de datos soportados:
Tipos de datos LOB:
• Permiten almacenar grandes cantidades de datos de hasta 4Gb, tales como texto , gráficos, audio y
video.
• CLOB o Character Large OBject: Almacenan texto que contiene grandes cantidades de bytes.
Reemplaza al tipo de dato LONG.
• BLOB: almacena información multimedia dentro de la base de datos.
• BFILE (similar al BLOB que almacenan información multimedia pero el contenido es almacenado
físicamente en el sistema operativo, por dicha razón los BFILES solo se pueden acceder en modo lectura
es decir no podemos hacer modificaciones o cambios al contenido.
DDL – Data Definition Language
CREATE
• Sobre los campos de las tablas se pueden aplicar diferentes tipos de CONSTRAINT o restricciones.
• Una restricción es una condición de cumplimiento obligado para una o más columnas de la tabla.
• A cada restricción se le pone un nombre, en el caso de no poner un nombre (algo poco
recomendable) entonces el propio Oracle le coloca el nombre que es un mnemotécnico con el
nombre de tabla, columna y tipo de restricción.
• Los nombres de restricción no se pueden repetir para el mismo esquema, por lo que es buena idea
incluir de algún modo el nombre de la tabla, los campos involucrados y el tipo de restricción en el
nombre de la misma.
• NOT NULL / DEFAULT
• PK_ PRIMARY KEY
• FK_ FOREIGN KEY
Anteponer al campo a que le va aplicar la restricción
• CKC_ o CHK_ CHECK (validación)
• UQ_ UNIQUE
DDL – Data Definition Language

CREATE
• Toda tabla generalmente tiene una restricción de clave primaria o PRIMARY KEY.
• La restricción PRIMARY KEY identifica de forma exclusiva cada registro de una tabla de base de
datos.
• Las claves primarias deben contener valores únicos.
• Una columna de clave principal no puede contener valores nulos.
CREATE TABLE Profesor CREATE TABLE Profesor
( (
profId integer not null PRIMARY KEY, profId integer not null,
profNombre varchar2(20) not null, profNombre varchar2(20) not null,
profApellido varchar2(20) not null, profApellido varchar2(20) not null,
profGenero char default 'f' profGenero char,
); CONSTRAINT pk_Profesor PRIMARY KEY (profId)
);

Clave primaria con múltiples columnas: CONSTRAINT pk_Profesor PRIMARY KEY (profId, profApellido)
DDL – Data Definition Language

CREATE
• Una llave foránea o FOREIGN KEY en una tabla apunta a la llave primaria de otra tabla.
• Un CHECK se utiliza para limitar el rango de valores que puede ser colocado en una columna
CREATE TABLE Profesor
(
profId integer not null,
profNombre varchar2(20) not null,
profApellido varchar2(20) not null,
profGenero char,
deptCodigo integer not null,
CONSTRAINT pk_Profesor PRIMARY KEY (profId),
CONSTRAINT fk_deptProf FOREIGN KEY (deptCodigo) REFERENCES Departamento (deptCodigo),
CONSTRAINT ckc_profGenero CHECK (profGenero in ('f', 'm')),
CONSTRAINT ckc_profId CHECK (profId >0)
);

CONSTRAINT ckc_profId CHECK (profId between 1 and 5)


DDL – Data Definition Language
CREATE
• La restricción UNIQUE también permite identificar de forma exclusiva cada registro en una tabla de la
base de datos.
• Ambas restricciones UNIQUE y PRIMARY KEY garantizan la unicidad para una columna o conjunto de
columnas.
• Una restricción PRIMARY KEY tiene automáticamente una restricción UNIQUE definida en el mismo.
• Tenga en cuenta que usted puede tener muchas restricciones UNIQUE por tabla, pero sólo una
restricción PRIMARY KEY por tabla.
CREATE TABLE Estudiante
(
estCod integer not null,
estId integer not null,
estNombre varchar2(20) not null,
estApellido varchar2(20) not null,
estGenero char,
CONSTRAINT pk_Profesor PRIMARY KEY (estCod),
CONSTRAINT uq_ProfesorID UNIQUE (estId)
);
DDL – Data Definition Language

CREATE

En SQL, una Vista es una tabla virtual basada en el


“conjunto de datos resultante” de una sentencia SQL.
CREATE VIEW view_name AS Una vista contiene filas y columnas, tal como una tabla
SELECT column_name(s) real. Los campos en una vista son campos de una o más
FROM table_name tablas reales en la base de datos.
WHERE condition
DDL – Data Definition Language

CREATE
En SQL, un Índice es un objeto de la BD diseñado para
encontrar datos rápida y eficientemente sin necesidad
de leer la tabla o vista completa.

Los usuarios no pueden ver los índices, sólo se utilizan


para acelerar las búsquedas / consultas.
CREATE INDEX index_name
ON table_name (column_name)
Valores duplicados son permitidos

CREATE UNIQUE INDEX index_name


ON table_name (column_name)
Valores duplicados NO son permitidos
DDL – Data Definition Language
ALTER
Permite la modificación de la estructura de una tabla u otro objeto. Se pueden adicionar o eliminar campos
a una tabla, modificar el tipo de un campo, adicionar o eliminar índices a una tabla, entre otros.
CREATE TABLE Departamento
(
deptCodigo integer not null,
profNombre integer,
CONSTRAINT pk_Departamento PRIMARY KEY (deptCodigo )
);

• Para cambiar el nombre de una columna que escribimos mal:


alter table table_name rename column old_column_name to new_column_name
• Ejemplo:
alter table Departamento rename column profNombre to deptNombre
DDL – Data Definition Language

ALTER
CREATE TABLE Departamento
(
deptCodigo integer not null,
deptNombre integer,
CONSTRAINT pk_Departamento PRIMARY KEY (deptCodigo )
);

• Para cambiar el tipo de dato de un campo y/o colocar null/not null:


alter table table_name modify column_name data_type null/not null
• Ejemplo:
alter table Departamento modify deptNombre varchar2(50) not null
alter table Departamento modify deptNombre DEFAULT ‘Sistemas'
DDL – Data Definition Language

ALTER
• Para adicionar una nueva columna a la Tabla:
alter table Departamento add deptFCreacion date not null

• Para eliminar una columna de la Tabla:


alter table Departamento drop column deptFCreacion

• Si se quieren adicionar varias columnas


alter table Departamento add (deptDireccion varchar2(50) null, deptFCreacion date not null)
DDL – Data Definition Language

ALTER
• Para adicionar una restricción CHECK a la Tabla:
alter table Departamento add constraint ckc_DeptId CHECK (deptCodigo>0)
• Para adicionar una restricción PRIMARY KEY a la Tabla(SI NO LA TIENE):
alter table Departamento add constraint pk_Departamento PRIMARY KEY(deptCodigo)
• Para adicionar una restricción FOREIGN KEY a la Tabla:

alter table Departamento add constraint fk_FacDept FOREIGN KEY (facId) REFERENCES Facultad (facId)
DDL – Data Definition Language
DROP
Esta sentencia elimina un objeto de la base de datos. Puede ser una tabla, vista, índice o cualquier objeto
que soporte el motor de la base de datos.
• Para borrar una base de datos:
drop database database_name
• Para borrar una tabla:
drop table table_name
Para forzar el borrado de una tabla: Puede afectar la integridad referencial de la
drop table table_name cascade constraint base de datos, ya que se elimina todas las
tuplas, las restricciones, los índices y la tabla.
• Para borrar un índice de una tabla:
drop index index_name
• Para borrar una vista:
drop view view_name
DDL – Data Definition Language

Integridad Referencial:
Es una herramienta imprescindible de las bases de datos relacionales. Pero provoca varios problemas
si no se controla adecuadamente.
Por ejemplo, ¿qué pasa si borramos un registro de una tabla el cual tiene un campo PK que está
relacionado con otra tabla o tablas, es decir, es foránea en dicha(s) tabla(s)?
Pues ocurrirá una excepción, advirtiendo que no es posible hacer el borrado. Sin embargo, si
forzáramos a borrar el registro o incluso toda la tabla ocurrirá un fallo de integridad (habrá claves
secundarios refiriéndose a una clave principal que ya no existe).
DDL – Data Definition Language

Integridad Referencial:
Por ello se nos pueden ofrecer soluciones que se añaden tras la cláusula REFERENCES. Estas son:
ON DELETE SET NULL. Coloca nulos todas las claves secundarias relacionadas con la borrada.
ON DELETE CASCADE. Borra todos los registros cuya clave secundaria es igual que la clave del
registro borrado.
ON DELETE SET DEFAULT. Coloca en el registro relacionado el valor por defecto en la columna
relacionada
ON DELETE NOTHING. No hace nada.
DDL – Data Definition Language
Integridad Referencial:
En el caso explicado se aplicarían las cláusulas cuando se eliminen filas de la clave principal relacionada
con la clave secundaria. En esas cuatro cláusulas se podría sustituir la palabra DELETE por la palabra
UPDATE, haciendo que el funcionamiento se refiera a cuando se modifica un registro de la tabla principal;
en muchas bases de datos se admite el uso tanto de ON DELETE como de ON UPDATE.
En Oracle sólo se permite utilizar ON DELETE SET NULL u ON DELETE CASCADE. No se admite el uso de ON
UPDATE en ningún caso.

CREATE TABLE Alquiler


(
dni VARCHAR2(9),
cod_pelicula NUMBER(5),
CONSTRAINT pk_Alquiler PRIMARY KEY(dni,cod_pelicula),
CONSTRAINT fk_dni FOREIGN KEY (dni) REFERENCES Cliente(dni) ON DELETE SET NULL,
CONSTRAINT fk_pelicula FOREIGN KEY (cod_pelicula) REFERENCES Pelicula(cod_pelicula) ON DELETE CASCADE
);
DDL – Data Definition Language

DROP
• Para borrar una PRIMARY KEY de una tabla:
alter table table_name drop constraint pk_name
• Para borrar una FOREIGN KEY de una tabla:
alter table table_name drop constraint fk_name
• Para borrar un CHECK de una tabla:
alter table table_name drop constraint ckc_name
Para borrar un DEFAULT de una columna de una tabla:

alter table table_name alter column column_name drop default


DDL – Data Definition Language

TRUNCATE
• Si solo se desea borrar los datos de la tabla y no la tabla en si misma:
truncate table table_name

RENAME
• Si se quiere renombrar la tabla:
alter table old_table_name rename to new_table_name
• Si se quiere renombrar el nombre de una columna:
alter table table_name rename column old_column_name to new_column_name
• Si se quiere renombrar un índice:
rename index old_index-name to new_index_name
PRIMERA PRÁCTICA SQL

Utilización de sentencias DDL

• 1. Crear la tabla Estudante con los nombres para las columnas, tipos de datos y restricciones
proporcionados:
• estId entero no nulo.
• estNombre entero nulo
• estApelido varchar2 de 50 no nulo.
• estId es la clave primaria de la tabla

• 2. Aplicar los cambios indicados por la docente

Vous aimerez peut-être aussi