Sei sulla pagina 1di 33

LENGUAJES DE BASES DE

DATOS: SQL

Edgar Humberto Angel Millan


Instructor Teleinformática (ADSI) CEET
Edgar.angelm@misena.edu.co

11/02/2020 Curso Bases de Datos 1


SQL: Structured Query Language
 Permite la definición y manipulación de los
datos de una BD relacional
 Versión original: San Jose Research
Laboratory de IBM, mediados de los 70’s
 Implementado por primera vez en un
prototipo de IBM llamado System R
 El American National Standard Institute
(ANSI) publicó el estándar SQL en 1986
 Se ha convertido en el lenguaje estándar
de los SGBDR

11/02/2020 Curso Bases de Datos 2


SQL: Structured Query
Language
 Es el lenguaje estándar internacional
que se utiliza casi universalmente con
las bases de datos relacionales para
realizar consultas (es decir, para
solicitar información que satisfaga
ciertos criterios y para manipular
datos).

11/02/2020 Curso Bases de Datos 3


SQL: Structured Query Language

 Es un lenguaje declarativo
 Se puede utilizar de manera
interactiva en asociación con
interfaces gráficas o lenguajes de
programación (C, java, PHP)
 Permite interrogar una BD
relacional sin preocuparse por la
representación física de los datos

11/02/2020 Curso Bases de Datos 4


SQL: Structured Query
Language

 DDL: Data Definition Language

SQL  DML: Data Manipulation Language


 DCL: Data Control Language

11/02/2020 Curso Bases de Datos 5


Operadores de SQL
 Lógicos:
AND : Es el “y” lógico. Evalúa dos Condiciones
devuelve un valor de verdad solo si Ambas son
ciertas.

OR :Es el “o” lógico. Evalúa dos Condiciones y


devuelve un valor de verdad si alguna de las dos
es cierta.

NOT : Negación Lógica. Devuelve el valor


contrario de la expresión.
11/02/2020 Curso Bases de Datos 6
 Operadores de Comparación:
Operador Uso
< Menor que
> Mayor que
<> Distinto de
<= Menor ó igual que
>= Mayor o igual que
= Igual que
BETWEEN Usado para especificar un intervalo de
valores
LIKE Usado en la comparación de un modelo
IN Usado para especificar registros de una lista
11/02/2020 de datos
Curso Bases de Datos 7
DDL : Lenguaje de Definición de
Datos
 conjunto de instrucciones que
permiten
 definir, modificar y eliminar esquemas
de relaciones
 crear índices
 definir vistas
 especificar restricciones de integridad

 Ejemplo: CREATE, ALTER, DROP, …

11/02/2020 Curso Bases de Datos 8


DML: Lenguaje de manipulación
de datos
 conjunto de instrucciones que permite
 Consultar, actualizar y eliminar los elementos
creados con el DDL, como tablas, índices, etc.
 Esta basado en álgebra y cálculo relacional

 Ejemplos: SELECT, INSERT, UPDATE,


DELETE, …

11/02/2020 Curso Bases de Datos 9


DCL: Lenguaje de control de
datos
 conjunto de instrucciones que
permiten
 definir permisos de acceso a la base de
datos

 Ejemplos: GRANT, REVOKE

11/02/2020 Curso Bases de Datos 10


Lenguaje de manipulación de
datos

DML

11/02/2020 Curso Bases de Datos 11


COMANDOS

 INSERT: Utilizado para cargar lotes de datos


en la base de datos en una única operación.
 UPDATE: Utilizado para modificar los valores
de los campos y registros especificados.
 DELETE: Utilizado para eliminar registros de
una tabla de una base de datos
 SELECT: Utilizado para consultar registros de
la base de datos que satisfagan un criterio
determinado.

11/02/2020 Curso Bases de Datos 12


Extracción de datos: SELECT

En su forma básica tiene 3 elementos principales:


select, from, where

SELECT A1, A2, A3, ... , An Lista de atributos

FROM R1, R2, R3, ... , Rm Lista de relaciones (tablas)

WHERE condición;
La condición se hace sobre los
atributos de las tablas indicadas
en la cláusula FROM
11/02/2020 Curso Bases de Datos 13
Extracción de datos: SELECT
 SELECT:
 corresponde a la operación de Proyección
 Permite listar los atributos que se desean en el resultado
de la consulta
 FROM:
 Especifica los nombres de la(s) tabla(s) de donde los
datos serán seleccionados
 Cuando son varias tablas las que aparecen en el FROM el
sistema ejecuta una operación de Producto Cartesiano o
de join
 WHERE:
 corresponde a la operación de Selección
 La condición se hace sobre los atributos de las tablas del
FROM
11/02/2020 Curso Bases de Datos 14
EJEMPLO

 Supongamos Código Nombre Edad Depto


la relación 1 Jorge Campos 33 1
EMPLEADO 2 Enrique Muñoz 25 1
así: 3 Esteban Paz 21 1
8 Jorge Arias 30 2
10 Juan Martínez 19 2
12 Anselmo Rodas 28 6

 Sea la consulta:
SELECT nombre, edad
FROM empleado
WHERE edad >= 28

11/02/2020 Curso Bases de Datos 15


EJEMPLO
Nombre Edad
 La respuesta es también Jorge Campos 33
una relación, así: Jorge Arias 30
Anselmo Rodas 28

 Los operadores de comparación permitidos


son:
= (igual), != ó <> (diferente),
> (mayor que), < (menor que),
>= (mayor o igual que), <= (menor o igual que)
NOTA: también se pueden comparar cadenas de caracteres
con operadores como >= y <=
11/02/2020 Curso Bases de Datos 16
EJEMPLO
 Se permiten consultas tan complejas como sea
necesario, usando conectores AND, OR, NOT
Ej: SELECT *
FROM empleado
WHERE edad < 28 AND depto = 1

 Se puede usar un operador especial denominado


BETWEEN, para especificar un rango de valores
sobre el cual puede variar el dominio de un atributo,
ejemplo:
Ej: SELECT *
FROM empleado
WHERE edad BETWEEN 18 AND 30

11/02/2020 Curso Bases de Datos 17


EJEMPLO
 Se puede expresar una lista de valores de dominio
específicos con el operador IN:
SELECT *
FROM empleado
WHERE nombre IN (‘Jorge Campos’, ‘Esteban Paz’)

 El WHERE anterior equivale a:

nombre=‘Jorge Campos’OR nombre=‘Esteban Paz’

 IN y BETWEEN se pueden negar con NOT


 BETWEEN puede lograrse por medio de <= y >=

11/02/2020 Curso Bases de Datos 18


Operador LIKE
 En las condiciones se puede usar para realizar
comparaciones especiales de cadenas de caracteres
aparte de la igualdad(=) y el diferente(<>) así:
 El carácter % remplaza cualquier subcadena
 El carácter _ remplaza un carácter

 Ejemplos:
 atributo LIKE ‘Ing%’ : todo lo que comience por
Ing
 atributo LIKE ‘%eniería%’ : todo lo que contenga
eniería
 atributo LIKE ‘_ _ _%’ : todo lo que tenga al
menos 3 letras
11/02/2020 Curso Bases de Datos 19
DISTINCT Vs ALL
 Se pueden eliminar tuplas duplicadas en
una consulta colocando explícitamente
DISTINCT después de SELECT.
 Nota: SQL NO es cerrado relacionalmente ya que
puede producir tuplas repetidas

 Si explícitamente se quieren ver los


duplicados, se coloca ALL después de
SELECT.
 Nota: ALL es la opción por defecto, rara vez se usa !!!

11/02/2020 Curso Bases de Datos 20


Supongamos estas dos relaciones:

Empleado
Código Nombre Edad Depto Departamento
1 Jorge Campos 33 1
2 Enrique Muñoz 25 1 Depto Descripción
3 Esteban Paz 21 1 1 Administración
8 Jorge Arias 30 2 2 Producción
10 Juan Martínez 19 2 3 Ventas
12 Anselmo Rodas 28 6 4 Finanzas

11/02/2020 Curso Bases de Datos 21


JOINS
 Mediante la cláusula INNER JOIN combinada
con ON
SELECT * FROM empleado
INNER JOIN departamento
ON empleado.depto =
departamento.depto

 Otra forma es utilizando la cláusula NATURAL


JOIN
SELECT * FROM empleado
NATURAL JOIN departamento

11/02/2020 Curso Bases de Datos 22


JOINS

 Otra forma es comparando los atributos


que realizan el join en la cláusula WHERE

SELECT * FROM empleado, departamento


WHERE empleado.depto = departamento.depto

11/02/2020 Curso Bases de Datos 23


Renombramiento con AS

 Se puede emplear la cláusula AS para generar


alias en las diferentes tablas.

SELECT *
FROM empleado AS e, departamento AS d
WHERE e.depto = d.depto

Nota: El SQL estándar exige siempre el uso de


AS, aunque algunos SGBD como Oracle y
Access lo suprimen…

11/02/2020 Curso Bases de Datos 24


EJERCICIO

 socio (codsocio, nombre, direccion,


telefono)
 pelicula (codpeli, titulo, genero)
 copia (codcopia, codpeli)
 prestamo (codsocio, codcopia, fecha,
pres_dev)
 lista_espera (codsocio, codpeli, fecha)

11/02/2020 Curso Bases de Datos 25


Anidamiento de consultas
 Con IN, y con otros operadores como
EXISTS, se pueden anidar consultas
 Ej: Presentar el título de las películas que
nunca se han prestado:

SELECT DISTINCT pel.titulo


FROM pelicula AS pel
WHERE pel.titulo NOT IN (
SELECT pel.titulo
FROM pelicula AS pel, prestamo AS pr, copia AS co
WHERE pr.codcopia=co.codcopia AND
co.codpeli=pel.codpeli
)
11/02/2020 Curso Bases de Datos 26
Otra manera …
 Otra manera de realizar la anterior
consulta, que evita la realización de uno
de los joins es:

SELECT DISTINCT pel.titulo


FROM pelicula AS pel
WHERE pel.codpeli NOT IN (
SELECT co.codpeli
FROM prestamo AS pr, copia AS co
WHERE pr.codcopia=co.codcopia
)

11/02/2020 Curso Bases de Datos 27


Funciones de agregación:
 SUM(atributo) : Sumatoria del atributo.
 MAX(atributo) : Valor máximo del atributo.
 MIN(atributo) : Valor mínimo del atributo.
 AVG(atributo) : Valor promedio del atributo.
 COUNT(atributo | *) : Conteo de tuplas.

 Se puede usar GROUP BY con estas funciones para


consolidar por grupos comunes (operador Ģ del
álgebra)

 Se puede usar HAVING para establecer condiciones


para los grupos (HAVING es lo que el WHERE es
para las tuplas)

11/02/2020 Curso Bases de Datos 28


Ejemplo

Calcular el número de veces que se ha


prestado la película más prestada.
SELECT MAX(cuenta) AS numero_veces
FROM
( SELECT DISTINCT COUNT(*) AS cuenta
FROM pelicula AS pe, prestamo AS pr, copia AS co
WHERE pr.codcopia=co.codcopia
AND co.codpeli=pe.codpeli
GROUP BY pe.codpeli
)

11/02/2020 Curso Bases de Datos 29


Inserción de datos: INSERT
INSERT INTO departamento
VALUES(1,’Administración')

Borrado de datos: DELETE


DELETE
FROM empleado
WHERE codigo = 10;

11/02/2020 Curso Bases de Datos 30


Actualización de datos: UPDATE

UPDATE empleado
SET nombre = “Juan Calvo”
WHERE codigo = 1;

11/02/2020 Curso Bases de Datos 31


EJERCICIOS
Cod
Primer_ Sex Telefon Cedula_S
Cedula Nombre Segundo_Apellido Dirección Salario _de
Apellido o o up
p

71134534 Juan Mesa Uribe M Cra 25 22-1 2567532 1,600,000 23423445 3

23423445 Ana María Betancur Bermudez F Cra 45 11-13 3433444 1,700,000 43890231 2

12453535 Gloria Betancur Garces F Tr. 12 43-5 2756533 1,350,000 71134534 3

75556743 Pedro Ochoa Pelaez M Cll.6ta 14-45 2686885 1,700,000 43890231 1

43533322 Patricia Angel Guzmán F Cll. 45 23-1 2674563 1,350,000 71134534 3

78900456 Carlos Betancur Agudelo M Cir. 5 12-5 4445775 1,500,000 75556743 1

73456789 Mario Gómez Angel M Cr. 53 23-1 3456789 1,200,000 23423445 2

43890231 Claudia Gonzalez Beltran F Cll. 10 14-1 2660356 1,800,000 43890231 0

78900700 Fabio Solano Pérez M Tr. 3 32-1 4345678 1,200,000 75556743 1

11/02/2020 Curso Bases de Datos 32


Preguntas:
1. Listar Nombres y documento
2. Listar todos los empleados que
pertenecen al dpto 1.
3. Listar los de sexo M y dpto 3
4. Listar los que tienen como supervisor
a 71134534
5. Listar todos los que tienen sueldo
entre 1200000 y 1500000 y son de
sexo F
11/02/2020 Curso Bases de Datos 33

Potrebbero piacerti anche