Sunteți pe pagina 1din 46

Lenguajes para

SGBD Relacionales

Tecnólogo en Informática, sede Paysandú


Bases de Datos 1
Lenguajes SGBDR
Temario
Presentación general
SQL
– Definición de datos (D.D.L)
– Manejo de datos (D.M.L)
– Consultas
– Actualización

Referencias:
– Fundamentals of Database Systems [E-N], 5ta. Edición, Cap. 8

Tecnólogo en Informática, Bases de Datos 1 2


Lenguajes SGBDR
Historia
Basado en las ideas de Codd (M. Relacional) → SEQUEL (Structural
English Query Language)

SEQUEL → IBM Research (D. Chamberlin, R. Boyce, 1974)

SQL (Structured Query Language) → Lenguaje de consulta estructurado

Oracle → primer producto comercial (1979)

Tecnólogo en Informática, Bases de Datos 1 3


Lenguajes SGBDR
Historia
ANSI e ISO estandarizan SQL → 1986 (SQL-86, SQL1)

Posteriormente se lanzaron otras revisiones


– SQL-92 (SQL2)
– SQL-1999
– SQL-2003
– ...

SQL es ahora el lenguaje estándar de los DBMS Relacionales comerciales

Tecnólogo en Informática, Bases de Datos 1 4


Lenguajes SGBDR
Historia

Tecnólogo en Informática, Bases de Datos 1 5


Lenguajes SGBDR
SQL
SQL proporciona una interfaz de lenguaje declarativo de alto nivel

El usuario sólo especifica lo que debe ser el resultado, dejando para el


DBMS el cómo

Internamente, el sistema gestiona la ejecución de las consultas

Tecnólogo en Informática, Bases de Datos 1 6


Lenguajes SGBDR
SQL
Es un lenguaje de bases de datos global, que permite:
– definir
– consultar
– actualizar datos

Además, permite especificar:


– seguridad y autorización
– restricciones de integridad
– controles de transacciones

Tecnólogo en Informática, Bases de Datos 1 7


Data Definition Language
(D.D.L)

Tecnólogo en Informática, Bases de Datos 1 8


Data Definition Language (DDL)
Concepto
DDL, Data Definition Language → Lenguaje de Definición de Datos

Se encarga de la modificación de la estructura de los elementos de la BD

Incluye sentencias para modificar, borrar o definir las tablas y bases de


datos en las que se almacenan los datos

Tecnólogo en Informática, Bases de Datos 1 9


Data Definition Language (DDL)
Operaciones
Las operaciones básicas:

Tecnólogo en Informática, Bases de Datos 1 10


Data Definition Language (DDL)
CREATE
CREATE DATABASE → Especificar una nueva base de datos, asignándole
un nombre, y otras propiedades iniciales

Sintaxis:

CREATE DATABASE <nombre_base_datos>;

CREATE DATABASE 'MiBaseDatos';


CREATE DATABASE 'MiBaseDatos' DEFAULT CHARACTER SET 'utf8';
→ Seteando el juego de caracteres soportados por la BD

Tecnólogo en Informática, Bases de Datos 1 11


Data Definition Language (DDL)
CREATE
CREATE TABLE → Especificar una nueva relación, asignándole un
nombre, atributos y restricciones iniciales

Sintaxis:

CREATE TABLE <nombre_relación>(


<nombre_atributo> <tipo_dato> [restricciones],
… );

Tecnólogo en Informática, Bases de Datos 1 12


Data Definition Language (DDL)
CREATE
Utilizando la base de datos creada anteriormente:

USE 'MiBaseDatos';

CREATE TABLE 'Empleados' (


'Dni' INT(8),
'Nombre' VARCHAR(30),
'Apellido' VARCHAR(30),
'FechaNac' DATE);

→ En este caso, la tabla formará parte del esquema 'MiBaseDatos'


→ Si no se no se indicase la BD, se obtendría un error 'no DB selected'

Tecnólogo en Informática, Bases de Datos 1 13


Data Definition Language (DDL)
CREATE
Mismo ejemplo, con algunas restricciones:

CREATE TABLE 'Empleados' (


'Dni' INT(8) UNSIGNED PRIMARY KEY,
'Nombre' VARCHAR(30),
'Apellido' VARCHAR(30),
'FechaNac' DATE NOT NULL);

– UNSIGNED → valores positivos (sin signo)


– NOT NULL → no puede ser nulo (obligatorio)
– PRIMARY KEY → clave primaria de la relación (identificador)

Tecnólogo en Informática, Bases de Datos 1 14


Data Definition Language (DDL)
ALTER
Permite cambiar la definición de una tabla o de otros elementos con
nombre del esquema

Por ejemplo, para una tabla se podría:


– agregar/eliminar columnas
– cambiar nombre de atributos
– agregar/eliminar restricciones, etc.

ALTER <tipo_elemento> <nombre_elemento> <modificaciones>;

Tecnólogo en Informática, Bases de Datos 1 15


Data Definition Language (DDL)
ALTER
Agregado de columna:
ALTER TABLE 'Empleados' ADD COLUMN 'Edad' INT(3);

Eliminado de una columna:


ALTER TABLE 'Empleados' DROP COLUMN 'Edad';

Agregado PK:
ALTER TABLE 'MiBaseDatos'.'Productos' ADD PRIMARY KEY ('Id');

Agregado de FK:
ALTER TABLE 'Productos' ADD FOREIGN KEY ('NroFab')
REFERENCES 'Fabricantes' ('NroFabricante');

Tecnólogo en Informática, Bases de Datos 1 16


Data Definition Language (DDL)
DROP
Se puede utilizar para eliminar los elementos con nombre del esquema,
como tablas, dominios o restricciones, o esquemas
Se eliminará tanto los datos como el esquema

Sintaxis:
DROP <tipo_elemento> <nombre_elemento>;
DROP TABLE 'Empleados';
DROP DATABASE 'MiBaseDatos';

Tecnólogo en Informática, Bases de Datos 1 17


Data Definition Language (DDL)
TRUNCATE
Borra todo el contenido de una tabla dada

Sintaxis:
TRUNCATE TABLE <nombre_tabla>;
TRUNCATE TABLE 'Empleados';

Tecnólogo en Informática, Bases de Datos 1 18


Data Manipulation Language
(D.M.L)

Tecnólogo en Informática, Bases de Datos 1 19


Data Manipulation Language (DML)
Concepto
DML, Data Manipulation Language → Lenguaje de Manipulación de Datos

Permite ejecutar consultas, agregar, eliminar y editar registros

Incluye sentencias como:

Tecnólogo en Informática, Bases de Datos 1 20


Data Manipulation Language (DML)
INSERT
Se utiliza para añadir tuplas a una relación

Se especifica el nombre de la relación y una lista de valores para la tupla

Los valores deben suministrarse en el mismo orden que aparecen en la tabla,


o, de lo contrario, especificándolo

INSERT INTO <nombre_tabla> (<lista_atributos>)


VALUES (<lista_valores>);

Tecnólogo en Informática, Bases de Datos 1 21


Data Manipulation Language (DML)
INSERT
Especificando valores directamente:
INSERT INTO 'Empleados'
VALUES (27875677, 'Carlos', 'Robles', '1962-03-17');

Especificando en diferente orden:


INSERT INTO 'Empleados' ('FechaNac', 'Dni', 'Apellido', 'Nombre') VALUES
('1962-03-17', 27875677, 'Robles', 'Carlos');

Múltiples tuplas:
INSERT INTO 'Empleados'
VALUES (27875677, 'Carlos', 'Robles', '1962-03-17'), (27875677, 'María',
'González', '1978-11-24');

Tecnólogo en Informática, Bases de Datos 1 22


Data Manipulation Language (DML)
DELETE
Permite eliminar una o más tuplas de una relación. Se especifica el nombre
de la relación afectada y alguna condición para elegir la tupla

Sintaxis:

DELETE FROM <nombre_tabla>;

Tecnólogo en Informática, Bases de Datos 1 23


Data Manipulation Language (DML)
DELETE
Importante:

La cláusula WHERE → seleccionar las tuplas que se van a eliminar a través de


expresiones condicionales

– Las tuplas que cumplan con la condición del WHERE, serán eliminadas, pudiendo
ser ninguna, una o varias, eliminadas por un solo comando DELETE

DELETE FROM <nombre_tabla>


WHERE <condición>; Verdadero o falso

WHERE también se puede utilizar en conjunto a otras expresiones que se verán a continuación

Tecnólogo en Informática, Bases de Datos 1 24


Data Manipulation Language (DML)
DELETE
Considerando por ejemplo: Productos(Id, Nombre, Precio, Descripción)

Eliminar todas las tuplas en la relación Productos:


DELETE FROM 'Productos';

Eliminar productos con precio = 100:


DELETE FROM 'Productos'
WHERE 'Precio' = 100;

Eliminar empleados de apellido Pereira:


DELETE FROM 'Empleados'
WHERE 'Apellido' = 'Pereira';

Tecnólogo en Informática, Bases de Datos 1 25


Data Manipulation Language (DML)
UPDATE
Se utiliza para modificar los valores de atributo de una o más tuplas
seleccionadas

Se indica la relación y atributo afectados, y el nuevo valor a asignar

UPDATE <nombre_tabla>
SET <nombre_columna> = <nuevo_valor>
WHERE <condición>;

Tecnólogo en Informática, Bases de Datos 1 26


Data Manipulation Language (DML)
UPDATE
Establecer el precio de todos los productos a $100:
UPDATE 'Productos'
SET 'Precio' = 100;

Actualizar el precio a $100 del producto con Id = 284:


UPDATE 'Productos'
SET 'Precio' = 100
WHERE 'Id' = 284;

Tecnólogo en Informática, Bases de Datos 1 27


Data Manipulation Language (DML)
SELECT
Permite consultar los datos almacenados en una tabla de la base de datos

SELECT <lista_de_atributos>
FROM <lista_de_tablas>
WHERE <condiciones>;

– <lista_de_atributos> → atributos cuyos valores serán recuperados por


la consulta
– <lista_de_tablas> → relaciones necesarias para procesar la consulta
– <condiciones> → expresiones condicionales (booleanas) para
seleccionar las tuplas que la consulta recuperará

Tecnólogo en Informática, Bases de Datos 1 28


Data Manipulation Language (DML)
SELECT
Mostrar el nombre de todos los productos:
SELECT 'Nombre'
FROM 'Productos';

Retornar el nombre y precio del producto nro. 284:


SELECT 'Nombre', 'Precio'
FROM 'Productos'
WHERE 'Id' = 284;

Tecnólogo en Informática, Bases de Datos 1 29


Data Manipulation Language (DML)
SELECT
ORDER BY
– permite ordenar el resultado de una consulta, a partir de algún atributo
– se ubica luego del FROM o WHERE (si aplica)

… ORDER BY <nombre_atributo> ASC|DESC;

Retornar los nombres de productos, ordenados en forma descendente:


SELECT 'Nombre'
FROM 'Productos'
ORDER BY 'Nombre' DESC;

Tecnólogo en Informática, Bases de Datos 1 30


Data Manipulation Language (DML)
SELECT
DISTINCT
– permite obtener los diferentes valores de atributos en el resultado de
una consulta (evitando redundancias)

SELECT DISTINCT <nombre_atributo> ...

Retornar todos los nombres de productos distintos:


SELECT DISTINCT 'Nombre'
FROM 'Productos';

Tecnólogo en Informática, Bases de Datos 1 31


Data Manipulation Language (DML)
SELECT
Alias de tablas
– sirve para renombrar temporalmente una tabla dentro de una consulta

… FROM <nombre_tabla> AS <nuevo_nombre_tabla> ...

Retornar nombre y precio de productos:


SELECT 'P'.'Nombre', 'P'.'Precio'
FROM 'Productos' AS 'P';

Tecnólogo en Informática, Bases de Datos 1 32


Data Manipulation Language (DML)
SELECT
Alias de columnas
– permite cambiar el nombre con que se muestran las columnas en el
resultado de una consulta

… SELECT <nombre_columna> AS <nuevo_nombre_columna> ...

Retornar Id de productos, renombrándolo a 'Identificador de producto':


SELECT 'Id' AS 'Identificador de producto'
FROM 'Productos';

Tecnólogo en Informática, Bases de Datos 1 33


Data Manipulation Language (DML)
Condicionales
LIKE, NOT LIKE
– permite comparar cadenas con un patrón determinado
– se utiliza como condición luego del WHERE

… WHERE <nombre_atributo> [NOT] LIKE <patrón> ...

→ Símbolo porcentual (%): significa cualquier número de caracteres


→ Guión bajo (_): significa exactamente un carácter

Tecnólogo en Informática, Bases de Datos 1 34


Data Manipulation Language (DML)
Condicionales
LIKE, NOT LIKE

Retornar nombre de productos, tales que terminen con 's':


SELECT 'Nombre'
FROM 'Productos'
WHERE 'Nombre' LIKE '%s';

Retornar nombre de productos, tales que la anteúltima letra no es 'a':


SELECT 'Nombre'
FROM 'Productos'
WHERE 'Nombre' NOT LIKE '%a_';

Tecnólogo en Informática, Bases de Datos 1 35


Data Manipulation Language (DML)
Condicionales
Comparación con NULL
– permite comparar el valor de un atributo, para saber si es NULL (o no)

… WHERE <nombre_atributo> IS [NOT] NULL ...

Retornar nombre de productos, tales que el mismo no sea nulo:


SELECT 'Nombre'
FROM 'Productos'
WHERE 'Nombre' IS NOT NULL;

Tecnólogo en Informática, Bases de Datos 1 36


Data Manipulation Language (DML)
Condicionales
BETWEEN
– permite comparar el valor de un atributo con un rango de valores

… WHERE <nombre_atributo> BETWEEN <valor1> AND <valor2> …


→ equivalente a: valor1<=atributo<=valor2

Retornar nombre de productos con Id entre 50 y 100:


SELECT 'Nombre'
FROM 'Productos'
WHERE 'Id' BETWEEN 51 AND 99;

Tecnólogo en Informática, Bases de Datos 1 37


Data Manipulation Language (DML)
Funciones
SQL incluye funciones que pueden resultar muy útiles

Las hay de dos tipos:


→ Funciones Agregadas
→ Funciones Escalares

Veremos algunas de ellas a continuación

Tecnólogo en Informática, Bases de Datos 1 38


Data Manipulation Language (DML)
Funciones
Funciones Agregadas
– Son funciones incluidas en SQL, y que devuelven un único valor, a
partir de valores de una columna

Algunos ejemplos:
AVG(<atributo>)→ promedio
SUM(<atributo>) → sumatoria
MIN(<atributo>) → valor mínimo
MAX(<atributo>) → valor máximo
COUNT(*) → conteo de tuplas

Tecnólogo en Informática, Bases de Datos 1 39


Data Manipulation Language (DML)
Funciones
Funciones Agregadas
Retornar el precio del producto más caro:
SELECT MAX('Precio')
FROM 'Productos';

Retornar el promedio de precios de todos los productos:


SELECT AVG('Precio')
FROM 'Productos';

Retornar la cantidad total de productos:


SELECT COUNT(*)
FROM 'Productos';

Tecnólogo en Informática, Bases de Datos 1 40


Data Manipulation Language (DML)
Funciones
Funciones Escalares
– Son funciones incluidas en SQL, y que devuelven un único valor, a
partir de un valor de entrada

Algunos ejemplos:
LOWER(<atributo>)→ convertir cadena de caracteres a minúsculas
UPPER(<atributo>) → convertir cadena de caracteres a mayúsculas

Tecnólogo en Informática, Bases de Datos 1 41


Data Manipulation Language (DML)
Funciones
Funciones Escalares

Mostrar el Id de los productos, y en mayúsculas el nombre de cada uno:


SELECT 'Id', UPPER('Nombre')
FROM 'Productos';

Tecnólogo en Informática, Bases de Datos 1 42


Data Manipulation Language (DML)
Join
¿Qué sucede cuando se necesitan datos de más de una relación?

– Habrá que incluir esas relaciones en el FROM

– Buscar alguna correspondencia entre las tuplas de las tablas

– Se puede establecer una condición que nos permita lograrlo

Tecnólogo en Informática, Bases de Datos 1 43


Data Manipulation Language (DML)
Join
Sintaxis:
Atributos de alguna de las tablas

SELECT <lista_atributos>
FROM <tabla_1>, <tabla_2>, … Tablas involucradas
WHERE <condición>;

Selección de las tuplas, correspondencia

Tecnólogo en Informática, Bases de Datos 1 44


Data Manipulation Language (DML)
Join
Considerando:
– Empleados(CI, Nombre, Dirección, IdProy)
– Proyectos(Id, Nombre) Es FK de Proyectos.Id

Dar un listado con todos los datos de empleados y proyectos donde trabajan:

SELECT *
FROM 'Empleados', 'Proyectos'
WHERE 'Empleados'.'IdProy'='Proyectos'.'Id';

Tecnólogo en Informática, Bases de Datos 1 45


Data Manipulation Language (DML)
Join
Dar un listado con todos los datos de empleados y proyectos donde trabajan:

SELECT * Si se omite la condición...

FROM 'Empleados', 'Proyectos'


WHERE 'Empleados'.'IdProy'='Proyectos'.'Id';

El resultado de la consulta retornará todas las combinaciones posibles de las


tuplas → producto cartesiano

Tecnólogo en Informática, Bases de Datos 1 46

S-ar putea să vă placă și