0% encontró este documento útil (0 votos)
9 vistas60 páginas

Lenguajes de BD'S: SQL

SQL es el lenguaje estándar internacional para interactuar con bases de datos relacionales, permitiendo la consulta y manipulación de datos. Se divide en tres sublenguajes: DDL para definir datos, DML para manipular datos y DCL para controlar el acceso a los datos. SQL permite realizar operaciones complejas de consulta, incluyendo el uso de operadores lógicos y de comparación, así como funciones de agregación y subconsultas.

Cargado por

yosoyflaybits
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 PPT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
9 vistas60 páginas

Lenguajes de BD'S: SQL

SQL es el lenguaje estándar internacional para interactuar con bases de datos relacionales, permitiendo la consulta y manipulación de datos. Se divide en tres sublenguajes: DDL para definir datos, DML para manipular datos y DCL para controlar el acceso a los datos. SQL permite realizar operaciones complejas de consulta, incluyendo el uso de operadores lógicos y de comparación, así como funciones de agregación y subconsultas.

Cargado por

yosoyflaybits
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 PPT, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 60

Lenguajes de BD’s:

SQL

Bases de Datos
SQL: Structured Query Language
 Es el lenguaje estándar internacional que se
utiliza casi universalmente con las BD
relacionales para realizar consultas (es decir,
para solicitar información que satisfaga ciertos
criterios y para manipular datos).
 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.
SQL: Structured Query Language
 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.
 Es un lenguaje declarativo (basado en las
matemáticas y en la lógica).
 Se puede utilizar de manera interactiva en
asociación con interfaces gráficas o lenguajes
de programación (C, java, PHP).
SQL: Structured Query Language
 Permite interrogar una BD relacional sin
preocuparse por la representación física de los
datos.
 Características:
Estructuras de datos simples
Operadores potentes
Periodos de aprendizaje inicial cortos
Mejora de la independencia de datos
Modo de uso dual (interactivo o inmerso)
Optimización
SQL: Structured Query Language

 El lenguaje SQL puede dividirse en tres


sublenguajes:
 DDL: Data Definition Language

SQL  DML: Data Manipulation Language


 DCL: Data Control Language
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, …


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, …
DCL : Lenguaje de Control de
Datos
 Conjunto de instrucciones que permiten:
definir permisos de acceso a la BD.
especificar controles de seguridad a los datos
almacenados como definición de vistas.
comprobación de condiciones de integridad.
control de concurrencia.

 Ejemplos: GRANT, REVOKE


Operadores de SQL
Lógicos:
AND  Es el “y” lógico. Evalúa dos
condiciones y 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.
Operadores de SQL
 De Comparación:
Operador Uso
< Menor que
> Mayor que
<> ó != Distinto de
<= Menor ó igual que
>= Mayor o igual que
= Igual que
Operadores de SQL
Operador Uso
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 de datos
DML

Lenguaje de Manipulación de
Datos
Introducción
 Permite acceder a la información contenida en
la BD para su consulta y actualización:
SELECT: Utilizado para consultar registros de la base
de datos que satisfagan un criterio determinado.
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.
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
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
Extracción de Datos: SELECT
 Forma general:
SELECT <nombre_campos>
FROM <nombre_tablas>
WHERE <condiciones>
 Forma básica:
SELECT * FROM nombreDeTabla

 La lista de atributos puede ser sustituida por un


asterisco (*) para denotar TODOS los atributos.
Extracción de Datos: SELECT
 Una consulta SQL “selecciona” filas y columnas
de una o más tablas en una BD.
 El resultado de la ejecución de una sentencia
SELECT es siempre otra tabla.
 Las columnas de la tabla resultante serán las
que figuren enumeradas tras la cláusula
SELECT, y en el mismo orden en el que figuran
tras ella.
Extracción de Datos: SELECT
 Equivalencia SQL y Álgebra Relacional:
SELECT A1, A2, A3, ... , An
FROM R1, R2, R3, ... , Rm
WHERE condición;

 A1, A2, A3, ..., An ( (R1


condición x R2 x R3x ... x Rm))
Extracción de Datos: SELECT
 Ejemplo: Supongamos la relación EMPLEADO:
Código Nombre Edad Depto
1 Jorge Campos 33 1
2 Enrique Muñoz 25 1
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
Extracción de Datos: SELECT
La respuesta es también una relación, así:

Nombre Edad
Jorge Campos 33
Jorge Arias 30
Anselmo Rodas 28
Extracción de Datos: SELECT
 DISTINCT vs ALL:
 SQL no elimina tuplas duplicadas a menos que se
indique con la cláusula opcional.
 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
Ejemplo: SELECT DISTINCT codigo_p, cantidad FROM
suministros;
 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 !!!
Extracción de Datos: SELECT
 La claúsula Where puede contener:
 Los operadores de comparación <, >, <=, >=, =, <>
ó !=.
 Se permiten consultas tan complejas como sea
necesario, usando conectores lógicos AND, OR, NOT
Ej: SELECT *
FROM empleado
WHERE edad < 28 AND depto = 1
Extracción de Datos: SELECT
 Se puede usar un operador especial denominado
BETWEEN, para especificar un rango de valores
sobre el cual puede variar el dominio de un atributo
Ej: SELECT *
FROM empleado
WHERE edad BETWEEN 18 AND 30
 Se puede expresar una lista de valores de dominio
específicos con el operador IN
Ej: SELECT *
FROM empleado
WHERE nombre IN (‘Jorge Campos’, ‘Esteban
Paz’)
el Where anterior equivale a :
nombre=‘Jorge Campos’OR nombre=‘Esteban Paz’
Extracción de Datos: SELECT
IN y BETWEEN se pueden negar con NOT
BETWEEN puede lograrse por medio de <= y >=
 Para realizar comparaciones especiales de cadenas
de caracteres aparte de la igualdad(=) y el
diferente(<>), se puede utilizar el operador LIKE,
así:
El carácter % remplaza cualquier subcadena.
El carácter _ remplaza un carácter.
Ej:
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
Extracción de Datos: SELECT
Ej: SELECT idAutor, nombrePila, apellidoPaterno
FROM autores
WHERE apellidoPaterno LIKE ‘D%’

Ej: SELECT idAutor, nombrePila, apellidoPaterno


FROM autores
WHERE apellidoPaterno LIKE ‘_i%’

Observación: Algunas BD utilizan el carácter ‘?’ en lugar del carácter


_ en un patrón.
Extracción de Datos: SELECT
Se puede usar IS NULL si queremos
consultar los datos que no contienen valores.
Devuelve verdadero si una expresión
contiene un nulo.
Ej:
SELECT nombre, apellidos FROM personas
WHERE teléfono IS NULL

Esa instrucción selecciona a la gente que no


tiene teléfono.
Extracción de Datos: SELECT
 Para realizar la Reunión Natural o Join  Para
unir los datos de varias tablas es necesario
establecer la(s) condiciones de enlace entre
las tablas, luego se incorporan los criterios
(opcionales) de filtrado de la consulta.

SELECT nombreColumna1, nombreColumna2,...


FROM nombreDeTabla(s)
WHERE condiciones de enlace + AND +
criterios de filtrado de filas
Extracción de Datos: SELECT
 Ejemplo:

SELECT Empresa.idempresa, Empresa.nomempresa,


Planilla.numeroPlanilla, Planilla.Fechaempresa
FROM Empresa, Planilla
WHERE Empresa.idempresa=Planilla.idempresa
AND Planilla.totalsalarios>50000
Extracción de Datos: SELECT
 Ejemplo:
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

SELECT * FROM empleado, departamento


WHERE empleado.depto = departamento.depto
Extracción de Datos: SELECT
Ej: SELECT *
FROM proveedores, suministros
WHERE proveedores.codigo_p=suministros.codigo_p

 Recordar: el “poder” de las relaciones radica en la


“conexión” entre una clave primaria y su respectiva clave
externa.
Extracción de Datos: SELECT
 Renombramiento con AS: Se puede emplear la
cláusula AS para generar alias en las diferentes
tablas.
Ej: SELECT *
FROM empleado AS e, departamento AS d
WHERE e.depto = d.depto
Ej: SELECT *
FROM proveedores P, suministros S
WHERE P.codigo_p=S.codigo_p

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


algunos SGBD como Oracle y Access lo suprimen…
Extracción de Datos: SELECT
 La claúsula Order By: El resultado de una
consulta puede ordenarse en forma ascendente
o descendente, mediante el uso de la cláusula
ORDER BY opcional.
 La forma básica para ordenar ascendentemente es:
SELECT nombreColumna1, nombreColumna2, ...
FROM nombreDeTabla
ORDER BY columna ASC
Extracción de Datos: SELECT
 La forma básica para ordenar en forma descendente
es:
SELECT nombreColumna1, nombreColumna2, ...
FROM nombreDeTabla
ORDER BY columna DESC
 Ejemplo:
SELECT idAutor, nombrePila, apellidoPaterno
FROM autores
ORDER BY apellidoPaterno ASC
Extracción de Datos: SELECT
 Funciones de Agregación: Se usa en un grupos de
registros para devolver un único valor que se aplica a
dicho grupo de registros, es decir, un solo valor que
resume la información de varias filas.
Función Descripción
AVG Utilizada para calcular el promedio de los valores
de un campo determinado
COUNT Utilizada para devolver el número de registros de
la selección
SUM Utilizada para devolver la suma de todos los
valores de un campo determinado
Extracción de Datos: SELECT
Función Descripción
MAX Utilizada para devolver el valor más alto de un campo
especificado.
MIN Utilizada para devolver el valor más bajo de un
campo especificado.

 Se puede usar GROUP BY con estas funciones para


consolidar por grupos comunes.
Extracción de Datos: SELECT
Ejemplos:
1.- Obtener la suma de los importes de las ordenes de
compra:
SELECT SUM(importe) FROM orden;

2.- Numero de productos que se fabrican


SELECT COUNT(DISTINCT cod_prod)
FROM productos;

3.- Empleados que trabajan en el departamento 10;


SELECT COUNT(*) FROM empleados
WHERE num_dpto=10;
Extracción de Datos: SELECT
Ejemplos:
4.- Numero de empleados de cada departamento
SELECT num_dept, COUNT(*) FROM empleados
GROUP BY num_dpto;
Extracción de Datos: SELECT
 Cláusula HAVING: selecciona alguno de los
grupos definidos por GROUP BY, según una
condición.
Se puede usar HAVING para establecer
condiciones para los grupos (HAVING es para
los grupos lo que el WHERE es para las tuplas)
Ej: Lista de los departamentos en que trabaja mas de
50 empleados:
SELECT num_dpto, COUNT(*) FROM empleados
GROUP BY num_dpto HAVING COUNT(*)>50;
Extracción de Datos: SELECT
 Muchas veces interesa hacer una consulta sobre el
resultado de otra consulta realizada previamente.
 Esto son las subconsultas o consultas anidadas,
consultas sobre cuyo resultado se hace otra
consulta.
SELECT campos
FROM tablas
WHERE campo operador_comparativo (
SELECT campos
FROM tablas
WHERE condición
)
Extracción de Datos: SELECT
 Primero se ejecuta la subconsulta más interior.
 Si lo que se obtiene es un único valor, el
operador comparativo puede ser (>,<,>=,<=,!=,
=). Pero si lo que se obtiene es una lista de
valores se utiliza el operador IN.
 Si se utiliza un operador aritmético y lo que
devuelve la subconsulta es una lista de valores
 dara error.
Extracción de Datos: SELECT
 Se puede colocar el SELECT dentro de las
cláusulas WHERE, HAVING o FROM.

SELECT nombre_empleado, paga


FROM empleados
WHERE paga < (
SELECT paga
FROM empleados
WHERE nombre_empleado='Martina‘
)
Extracción de Datos: SELECT
 CLAUSULAS QUE NOS PUEDEN AYUDAR CON
SUBCONSULTAS:
 ANY: puede acompañar a los comparadores aritméticos,
para que podamos comprobar si ALGÚN elemento del
conjunto/lista, cumple la comparación.
 ALL: puede acompañar a los comparadores aritméticos,
para que podamos comprobas si TODOS los elemenos
del conjunto/lista, cumplen la comparación.
SELECT nombre_empleado, paga
FROM empleados
WHERE paga < ALL (
SELECT paga
Extracción de Datos: SELECT
 Agrupamientos:
 UNION: Junta el resultado de dos consultas,
eliminando los elementos duplicados del resultado.
permite añadir el resultado de un SELECT a otro
SELECT.
Para ello ambas instrucciones tienen que utilizar el
mismo número y tipo de columnas.
SELECT Columna1 FROM Tabla1 UNION
SELECT Columna1 FROM Tabla2;
Ej:
SELECT nombre FROM provincias UNION
SELECT nombre FROM comunidades
Extracción de Datos: SELECT
 UNION ALL: Junta el resultado de dos consultas, sin
eliminar los elementos duplicados del resultado.
SELECT Columna1 FROM Tabla1 UNION ALL
SELECT Columna1 FROM Tabla2;

 INTERSECT: solo devuelve los elementos comunes


a ambas selecciones.
SELECT Columna1 FROM Tabla1 INTERSECT
SELECT Columna1 FROM Tabla2;
Extracción de Datos: SELECT
 MINUS: devuelve las filas resultantes de la primera
consulta que no este presentes en la segunda
consulta.
SELECT Columna1 FROM Tabla1 MINUS
SELECT Columna1 FROM Tabla2;

 Nota: Se podrían hacer varias combinaciones anidadas


(una unión cuyo resultado se intersectara con otro
SELECT por ejemplo), en ese caso es conveniente
utilizar paréntesis para indicar qué combinación se hace
primero.
Extracción de Datos: SELECT
 Ejemplo: Obtener el nombre de los alumnos que
han aprobado la asignatura de código 1.
SELECT Nombre, Apellidos
FROM Alumno
WHERE N_mat IN (
SELECT N_mat
FROM Matriculados
WHERE (Notas >= 5 AND Cod_asig = 1)
)
Extracción de Datos: SELECT
 Ejemplo: Obtener el número de matrícula de los
alumnos que han aprobado Programación en
Lenguajes Estructurados (PLE).
SELECT N_mat
FROM Matriculados
WHERE Cod_asig = (
SELECT Cod_asig
FROM Asignatura
WHERE Nombre_asig = ‘PLE’
)
Extracción de Datos: SELECT
 Ejercicio:
 socio (codsocio, nombre, dirección, teléfono)
 película (codpeli, titulo, genero)
 copia (codcopia, codpeli)
 préstamo (codsocio, codcopia, fecha, pres_dev)
 lista_espera (codsocio, codpeli, fecha)
Extracción de Datos: SELECT
1.- 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
)
Extracción de Datos: SELECT
 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
)
Extracción de Datos: SELECT
2.- 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
)
Extracción de Datos: SELECT
 La sentencia SELECT tiene el siguiente
formato:
SELECT [ALL | DISTINCT] campos
FROM tablas
[WHERE condiciones]
[ORDER BY campos [ASC | DESC] ]
[HAVING condiciones]
[GROUP BY campos]
Inserción de Datos: INSERT
 Sintaxis:
INSERT INTO NombreTabla VALUES (Valor1,
Valor2, Valor3)
Si utiliza el mismo orden en que los campos se listan en
la relación.

 También puede usar:


INSERT INTO NombreTabla (campo1, campo2,
campo3) VALUES (valor1, valor2, valor3)
Si no se recuerda el orden de los campos.
Inserción de Datos: INSERT
 Sintaxis:
INSERT INTO NombreTabla (SUBCONSULTA)
La subconsulta debe devolver tantos campos y del
mismo tipo como la tabla NombreTabla contiene.

INSERT INTO HISTORIALCLIENTES


(SELECT *
FROM clientes
WHERE fecha_alta>'2018-01-01')
Inserción de Datos: INSERT
 Ejemplos:
INSERT INTO Departamento
VALUES (50, ‘Análisis’, 30, NULL)

INSERT INTO Departamento (Id_dpto, Nombre,


nº_empleados)
VALUES (50, ‘Análisis’, 30)  el resto de los valores de
los campos que quedan los inserta con valores nulos.
Borrado de Datos: DELETE
 Sintaxis:
DELETE FROM nombre_tabla
WHERE condición

 Ejemplo:
DELETE FROM empleado WHERE id=15

DELETE FROM Departamentos


WHERE Fecha_creac < ‘1/1/2000’
Actualización de Datos: UPDATE
 Cuando se desea cambiar un valor dentro de
una fila, sin cambiar todos los valores de la
misma, se utiliza UPDATE.
 Sintaxis:
UPDATE NombreTabla
SET campo1=valor1
[WHERE condicion]
Actualización de Datos: UPDATE
 Ejemplo: Si se quiere realizar el pago de intereses
anuales y todos los saldos se incrementasen en un 5%:
UPDATE cuenta
SET saldo = saldo * 1.05
No se pone ninguna condición  esta actualización se
aplica una vez a cada tupla o fila de la tabla cuenta.

 Ejemplo:
UPDATE departamento
SET nombre = ‘G. INFORMA’
WHERE id_depto = 20
Preferencia de Operadores
 A veces las expresiones que se producen en los
SELECT son muy extensas y es difícil saber
que parte de la expresión se evalúa primero, por
ello se indica la siguiente tabla de precedencia:
Orden de precedencia Operador
1 * (Multiplicar) / (Dividir)
2 + (Suma) – (Resta)
3 || (Concatenación)
4 Comparaciones (>, <, !=, ...)
Preferencia de Operadores
Orden de precedencia Operador
5 IS [NOT] NULL, [NOT] LIKE, IN
6 NOT
7 AND
8 OR

También podría gustarte