Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ingeniería Informática
Los lenguajes formales de consultas están basados en el concepto matemático de que las
relaciones son conjuntos. Así, nunca aparecen tuplas duplicadas en las relaciones. En la
práctica, la eliminación de duplicados consume tiempo. Por tanto, SQL (como la mayoría de
los lenguajes de consultas comerciales) permite duplicados en las relaciones, así como en
el resultado de las expresiones SQL.
Instrucciones:
Sentencia Descripción
FROM Especifica las tablas o vistas desde las que se deben recuperar los
datos. Esta Cláusula es obligatoria.
SELECT se usa para recuperar filas seleccionadas de una o más tablas, y puede incluir
sentencias UNION y subconsultas. La estructura básica de una expresión SQL consta de
tres cláusulas: select, from y where. Sin embargo pueden existir otras instrucciones
complementarias.
El resultado de una consulta SELECT nos devuelve una tabla lógica. Es decir, los
resultados son una relación de datos, que tiene filas/registros, con una serie de
campos/columnas. Igual que cualquier tabla de la base de datos. Sin embargo esta tabla
está en memoria mientras la utilicemos, y luego se descarta. Cada vez que ejecutamos la
consulta se vuelve a calcular el resultado.
Sintaxis básica:
26
Diseño de bases de datos I
Ingeniería Informática
SELECT
[ALL | DISTINCT | DISTINCTROW ]
select_expr [, select_expr] ...
[FROM table_references]
[WHERE where_condition]
ORDER BY {col_name | expr | position}
[ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
Una expresión es una combinación de uno o más valores, operadores y funciones SQL que
se resuelve en un valor. La lista de expresiones que aparece después de la palabra clave
SELECT y antes de la cláusula FROM se llama lista de selección. El símbolo asterisco “ * ”
se puede usar para denotar “todos los atributos”. Las cláusulas SELECT de la forma
SELECT * indican que se deben seleccionar todos los atributos de todas las relaciones que
aparecen en la cláusula FROM.
Los modificadores ALL y DISTINCT especifican si se deben devolver filas duplicadas. ALL
(el valor predeterminado) especifica que se deben devolver todas las filas coincidentes,
incluidos los duplicados. DISTINCT específica la eliminación de filas duplicadas del conjunto
de resultados. Es un error especificar ambos modificadores.
La cláusula WHERE, si se proporciona, indica la condición o condiciones que las filas deben
cumplir para ser seleccionadas. where_condition es una expresión que se evalúa como
verdadera para cada fila que se seleccionará. La declaración selecciona todas las filas si no
hay una cláusula WHERE. En la expresión WHERE, puede usar cualquiera de las funciones
y operadores que admite MySQL, excepto para funciones agregadas.
Operadores Lógicos:
Operador Descripción Operador Descripción
27
Diseño de bases de datos I
Ingeniería Informática
Las funciones que devuelven la fecha o la hora actual se evalúan sólo una vez por consulta
al comienzo de la consulta de ejecución. Esto significa que múltiples referencias a una
función como NOW () dentro de una sola consulta siempre produce el mismo resultado.
(Para nuestros propósitos, una sola consulta también incluye una llamada a un programa
almacenado (rutina almacenada, desencadenante o evento) y todos los subprogramas
llamados por ese programa).
Algunas funciones de fecha se pueden usar con fechas "cero" o fechas incompletas como
'2001-11-00', mientras que otros no pueden. Las funciones que extraen partes de fechas
generalmente funcionan con fechas incompletas y, por lo tanto, pueden devolver 0 cuando
de otro modo podría esperar un valor distinto de cero.
Para conocer más sobre funciones de fecha, visite la documentación oficial de MySQL:
https://dev.mysql.com/doc/refman/8.0/en/string-functions.html
28
Diseño de bases de datos I
Ingeniería Informática
Operador Descripción
CHAR_LENGTH(str) Recibe como parámetro una cadena de
caracteres y retorna el número de caracteres en
dicho parámetro.
CONCAT(str1,str2,..) Recibe uno o más cadenas de caracteres
separadas por comas y devuelve una sola cadena
con todas las cadenas unidas.
LOWER (str) Convierte una cadena de caracteres en letras
minúsculas.
REPLACE(str,from_str,to_str) Retorna la cadena str con todas las ocurrencias
de from_str reemplazadas por to_str
29
Diseño de bases de datos I
Ingeniería Informática
Operador Descripción
CEIL(X) Recibe un número decimal y retorna el número menor entero.
FLOOR(X) Recibe un número decimal y retorna el número mayor entero.
ROUND(X,D) Recibe un número decimal X y retorna el número redondeado con la
cantidad decimales especificados D.
POW(X,Y) Retorna el número base X elevado al número exponencial Y.
SQRT(X) Retorna la raíz cuadrada de un número X.
Operador Descripción
+ Operador de adición
- Operador de sustracción
* Operador de producto o multiplicación
/ Operador de división.
DIV División de enteros. Elimina decimales del resultado.
MOD Operador Módulo o cociente de división.
30
Diseño de bases de datos I
Ingeniería Informática
Operador Descripción
31
Diseño de bases de datos I
Ingeniería Informática
Las operaciones del álgebra relacional pueden ser unarias cuando operan sobre una sola
relación o conjunto. Mientras que las operaciones binarias involucran pares de relaciones.
Las operaciones conjuntistas del álgebra relacional son la unión, la intersección, la
diferencia y el producto cartesiano.
Los diagramas de Venn son una excelente herramienta para visualizar y comprender las
operaciones conjuntistas.
En bases de datos las operaciones binarias de álgebra relacional son denominadas JOIN.
Un JOIN es una consulta que combina filas de dos o más tablas, vistas.
La unión es una operación que, a partir de dos relaciones, obtiene una nueva relación
formada por todas las tuplas que están en alguna de las relaciones de partida. Más
concretamente, para poder aplicar la unión a dos relaciones, es preciso que las dos
relaciones sean compatibles, esto es que cada deben tener el mismo número de atributos
cada uno con el mismo dominio.
32
Diseño de bases de datos I
Ingeniería Informática
SELECT SELECT
t1.campo1, t1.campo2, …, t1.name,
T2.campo1, t2.campo2, … t2.salary
from tabla1 as t1 FROM employee AS t1
INNER JOIN tabla2 as t2 INNER JOIN info AS t2
ON (t1.campo1 = t2.campo1) ON t1.name = t2.name;
33
Diseño de bases de datos I
Ingeniería Informática
En teoría de conjuntos esto se conoce como diferencia. La diferencia es una operación que,
a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que
están en la primera relación y, en cambio, no están en la segunda.
SELECT SELECT
t1.campo1, t1.campo2, …, t1.name,
T2.campo1, t2.campo2, … t2.salary
from tabla1 as t1 FROM employee AS t1
LEFT JOIN tabla2 as t2 LEFT JOIN info AS t2
ON ON t1.name = t2.name;
(t1.campo1 = t2.campo1)
Con la cláusula LEFT OUTER JOIN se hace una combinación externa en la que obtenemos
todos las tuplas del primer conjunto y aquellos que son coincidentes en el segundo conjunto
de resultados. De este modo no tenemos pérdida de información en ese primer conjunto. El
resultado recuperado mostrará campos con valores nulos para aquellas tuplas que no
hayan coincidido en el segundo conjunto.
SELECT SELECT
t1.campo1, t1.campo2, …, t1.name,
T2.campo1, t2.campo2, … t2.salary
from tabla1 as t1 FROM employee AS t1
RIGHT JOIN tabla2 as t2 RIGHT JOIN info AS t2
ON ON t1.name = t2.name;
(t1.campo1 = t2.campo1)
34
Diseño de bases de datos I
Ingeniería Informática
10.7 Subconsultas
Una subconsulta es una instrucción SELECT anidada dentro de otra instrucción SQL. Las
subconsultas son útiles cuando se deben ejecutar varias consultas para resolver un único
problema. Cada parte de consulta de una instrucción se denomina bloque de consulta.
35
Diseño de bases de datos I
Ingeniería Informática
● Muchas personas encuentran subconsultas más legibles que las uniones complejas.
De hecho, fue la innovación de las subconsultas lo que dio a la gente la idea original
de llamar al sql temprano "Lenguaje de consulta estructurado".
Una subconsulta puede devolver un escalar (un valor único), una sola fila, una sola columna
o una tabla (una o varias filas de una o varias columnas). Se denominan subconsultas
escalares, de columna, de fila y de tabla. Las subconsultas que devuelven un tipo
determinado de resultado a menudo se pueden usar solo en determinados contextos, como
se describe en las secciones siguientes.
SELECT (SELECT s1 FROM t2) Una subconsulta que con un solo resultado
FROM t1; también puede usarse como un campo.
SELECT Una subconsulta como escalar también puede ser
UPPER((SELECT s1 FROM t1)) utilizada como argumento en una función.
FROM t2;
36