Nombre del submódulo
Competencias profesionales
Crea y modifica consultas de bases de datos
1
Consultas
Hasta este momento te has dado cuenta de la importancia que tienen las bases de datos en la vida
cotidiana, has aprendido que existe un lenguaje universal de gestión de las mismas e incluso has
aprendido a crear tablas y a realizar algunas operaciones sobre ellas. ¿Recuerdas?
¿Cuáles son las sentencias que se utilizan para insertar, consultar, eliminar y modificar datos de una
tabla?
Es muy importante conocer la forma de cómo llevar a cabo estas operaciones, para llevar a llevar a
cabo una correcta gestión de la base de datos.
Sin embargo recuerda que el objetivo de las ya mencionadas, es presentar a los usuarios una
información ordenada, coherente y concisa, por lo que se hace necesario brindarles varias opciones
de consultar los datos que se contienen.
¡Vamos a aprender!
Comienza recordando la sentencia que nos permite consultar u obtener información de una
determinada tabla, el SELECT.
Hasta el momento conoces la forma de consultar o de mostrar TODOS los registros de TODOS los
campos, pero ahora verás cómo ir seleccionando únicamente la información que requieres.
Vas a conocer la cláusula WHERE, que en SQL especifica los criterios a cumplir para mostrar los
datos que requerimos.
Sintaxis
SELECT campos FROM tabla_de_datos WHERE condiciones;
Si observas bien después de la palabra WHERE, vienen las condiciones que vamos a especificar
para que se nos muestren ciertos datos. Vamos a dar un ejemplo tomando en cuenta la tabla con la
que trabajamos en el ejercicio del submódulo anterior., ¿La recuerdas?
Id_libr Título Id_Auto Nombre País
o r
1 El Guardian en el centeno 1 JD Salinger Estados Unidos
2 Nueve historias 1 JD Salinger Estados Unidos
2
3 Franny y Zooey 1 JD Salinger Estados Unidos
4 El gran Gatsby 2 F. Scott. Fitzgerald Estados Unidos
5 Tierna id la noche 2 F. Scott. Fitzgerald Estados Unidos
6 Orgullo y prejuicio 3 Jane Austen Reino Unido
7 Profesional ASP.NET 4.5 en C # y 4 Scott Hanselman Estados Unidos
VB
7 Profesional ASP.NET 4.5 en C # y 5 Jason N. Gaylord Estados Unidos
VB
7 Profesional ASP.NET 4.5 en C # y 6 Pranav Rastogi India
VB
7 Profesional ASP.NET 4.5 en C # y 7 Todd miranda Estados Unidos
VB
7 Profesional ASP.NET 4.5 en C # y 8 Christian Wenz Estados Unidos
VB
Supongamos que queremos buscar un libro que lleva por título “Orgullo y perjuicio”. ¿Cómo lo
debemos buscar?
Atendiendo a la sintaxis previamente planteada, ésta es la estructura correcta
SELECT * FROM libros WHERE Título=”Orgullo y Perjuicio”
Dónde…
Select: es la sentencia que vas a aplicar.
*: con el asterisco le estas diciendo que deses ver todos los campos de la tabla.
From: especificas de dónde vas a tomar los datos
Libros: nombre la tabla de la cual vas a consultar
Where: (Donde) le especificas a la instrucción que vas a establecer algunas condiciones
Título: nombre del campo por el que vas a consultar.
Orgullo y perjuicio: nombre exacto del registro que deseas ver.
Vamos a verlo gráficamente:
3
Ilustración 1: Captura de pantalla de Laragon que muestra la consulta de ejemplo ejecutada
De esta manera te das cuenta que podemos filtrar los datos de varias maneras. Revisa a
continuación algunas opciones que tienes para poder ver los datos.
Es posible ver los datos utilizando dos condiciones y que ambas se cumplan, para eso utilizarás el
operador “AND”, que podrás ver a través de un ejemplo ya que la sintaxis general, la conoces. En
esta ocasión trabajarás con una tabla llamada “libro” que contiene los campos “Id_libro”, “Titulo”,
“Cantidad” y el “Id_Autor” que es nuestra llave foránea para relacionarnos con la tabla de autores
(que también existe en esta base de datos).
SELECT * FROM libro WHERE Id_Autor=1 AND Cantidad=5;
En esta consulta estamos pidiendo ver los libros del autor con Id=1 y que además haya 5 en
existencia o cantidad.
Ilustración 2: Captura de pantalla de Laragon que muestra la consulta utilizando el operador AND.
4
Si te das cuenta en el resultado, se aplican las dos condiciones y se filtran los registros que las
cumplen, ahora con el operador OR, te darás cuenta que podrás ver los datos que cumplen con
cualquiera de las dos.
Ilustración 3: Captura de pantalla de Laragon que muestra la consulta utilizando el operador OR.
Puedes observar que en el resultado de la ejecución de la consulta, aparecen aquellos registros que
son del autor 1 y también de los que en existencia hay 5.
Ahora verás cómo funcionan los operadores de comparación de cantidad (igual, diferente, menor y
mayor qué). Para el operador de igualdad ya tienes un ejemplo anterior en la Ilustración 1. Vamos a
revisar cómo ver todos los registros cuando quieres ocultar uno en específico o hacer excepción de
él. Lo anterior, con el operador “diferente que” (“!=” y también se puede expresar “<>”).
SELECT * FROM libros WHERE Título !=”Orgullo y Perjuicio”
Ilustración 4: Captura de pantalla de Laragon que muestra la consulta utilizando el operador ¡=.
Como te puedes dar cuenta, aparecen todos los títulos, excepto el que especificamos en la consulta.
5
Ahora vamos a utilizar el operador “menor qué (<) y mayor qué (>), evaluando qué libros hay más
de 5 en existencia y también menos de esa cantidad. <>.
Ilustración 5: Captura de pantalla de Laragon que muestra la consulta utilizando los operadores <>.
Nota aclaratoria: En ambos casos no se muestra la cantidad 5, si deseas que se incluya debes de usar
“<=” o “>=”.
Igual que lo anterior, ahora vamos a revisar los operadores de rangos, comenzando por el
between, que nos permite visualizar datos estableciendo un parámetro inicial y uno final. Verifica
la sintaxis, encontrás la palabra between y nueva mente la palabra AND como enlace de rango.
SELECT * FROM libro WHERE Cantidad BETWEEN 3 AND 6
En esta consulta te darás cuenta que buscamos visualizar los libros que tengan entre 3 y seis
unidades de existencia. Veamos el resultado.
Ilustración 6: Captura de pantalla de Laragon que muestra la consulta utilizando el operador between.
Nota aclaratoria: También es posible utilizar la negación de between (NOT BETWEEN), que te
mostrará todo, excepto lo que especificas en el rango. Es la misma sintaxis, únicamente se agrega
NOT.
6
Like
En los ejemplos anteriores puedes observar que puedes consultar el registro de una tabla,
especificando el campo y el registro exacto que estás buscando, sin embargo algunas veces no
recuerdas exactamente el nombre que deseas ver, por tal motivo es necesario utilizar LIKE, que en
este caso lo pudieras traducir “como” o “ se parece a…” para que sea más entendible.
No se quiere especificar las palabras exactas, lo que se quiere es que la primera palabra del Título
sea “Orgullo”. SQL permite el uso de LIKE en la condición con el fin de mostrar una cadena patrón
para campos carácter. (Catherine, 2009).
Se recuperarán los registros cuyas columnas especificadas coincidan con el patrón.
Consulta SQL:
SELECT *
FROM libros
WHERE Título LIKE '%Orgullo%';
El caracter % te servirá como comodín para buscar las coincidencias con la palabra que estás
escribiendo en la consulta. Vamos a verlo de forma gráfica.
Ilustración 7: Captura de pantalla de Laragon que muestra la consulta utilizando like.
Si en la tabla existiera otro libro que en el título llevara la palabra “orgullo”, entonces se nos
mostrarían ambos registros al realizar la consulta.
Nota aclaratoria: Al igual que en varias sentencias, también para LIKE, existe la negación ( NOT
LIKE), que quiere decir que podremos visualizar todos los registros que no están dentro del
parámetro de comparación contemplado en el like. La sintaxis es la misma de las sentencias
anteriores, únicamente se agrega la palabra NOT.
7
Consultas multitablas
Así como podemos condicionar los campos que queremos ver, también podemos filtrar los campos
que tenemos en diferentes tablas y uniéndolos en una sola consulta, vas a revisar algunos ejemplos
y posteriormente realizarás algunos ejercicios para reforzar tu aprendizaje.
Recuerda que estamos trabajando en la base de datos llamada “biblioteca”, aquí es donde estaremos
haciendo nuestras consultas. Creamos una tabla con el nombre de “libro” y otra llamada “autores”.
Para poder mostrar los campos de ambas tablas en una sola consulta, basta con incluir después del
“from” no los nombres de ambas. Aquí un ejemplo:
SELECT * FROM libro, autores;
Le estamos indicando que queremos ver todos los campos de ambas tablas. Éste es el resultado:
Ilustración 8: Captura de pantalla de Laragon de la consulta hecha de todos los registros de dos tablas.
El detalle que tenemos aquí es que dependiendo de los registros que tenemos en una tabla, nos va a
duplicar en la otra. Por ejemplo, puedes observar que un autor se repite 7 veces ya que existen 7
títulos de libros.
Para evitar lo anterior debemos indicar cómo va a ser la unión entre las dos tablas, para eso
necesitaremos una sentencia llamada INNER JOIN. Ésta sería la sintaxis.
8
SELECT * FROM libro INNER JOIN autores ON libro.FKId_Autor =
autores.Id_Autor;
En la anterior consulta, indicamos que requerimos unir la tabla libro y la llamada autores y que
requerimos que se unan y se muestren a través de una igualdad, la llave foránea de la primer tabla y
la primaria de la segunda.
Ilustración 9: Captura de pantalla de Laragon de la consulta hecha de todos los registros de dos tablas uniéndolas con
INNER JOIN
En este resultado puedes observar cómo ya se agrupan los libros de acuerdo al autor que pertenecen.
Incluso podemos eficientar más la presentación, retirando los campos que no son necesario ver. En
este caso debemos de especificar cuáles queremos ver.
Ilustración 10: Captura de pantalla de Laragon de la consulta hecha de todos los registros de dos tablas uniéndolas con
INNER JOIN, especificando qué campos se deberán mostrar.
Puedes observar en esta consulta que están agrupados igual que la anterior, pero únicamente se
muestran los campos que se especifican.
Además de las condiciones y variantes ya mencionadas, existe una amplia base de datos de
operadores y herramientas para poder establecer criterios de visualización de registros de acuerdo a
la necesidad que presente el usuario, de acuerdo a la situación que el programa de estudios marca,
atendiendo a la competencia profesional planteada al inicio de este documento.
9
Fuentes:
Catherine M., R. (2009). Base de Datos. Mexico: McGRAW-HILL INTERAMERICANA
EDITORES, S.A. de C.V.
10
Actividad # 1
Con la información contenida en las siguientes imágenes, escribe en los recuadros los números en
orden, para que se genere la sintaxis correcta.
1.-
1. 2.campos 3.tabla_de_datos 4.WHERE 5.SELECT 6.condiciones
FROM
Establece aquí el orden correcto, anotando los números correspondientes de izquierda a derecha.
2.-
1. FROM
2. 3. SELECT 4. ' 5. % 6. *
Nombre_tabla
7.Palabra_en_común 8.' 9.% 10.LIKE 11.WHERE 12.campo
Establece aquí el orden correcto, anotando los números correspondientes de izquierda a derecha.
3.-
4. 5.
1. from 2. where 3. between
fin_rango
Nombre_t 6. *
abla
7. incio_rango 8. campo 9. and
10.
Select
Establece aquí el orden correcto, anotando los números correspondientes de izquierda a derecha.
11
Actividad # 2
En los siguientes recuadros, establece la consulta correcta para mostrar los datos que se solicitan en
cada una de las situaciones
1.- En la base de datos de una biblioteca, se tiene una tabla llamda “libro” (Id_libro, Título,
Cantidad), la cual contiene el campo o columna llamada “Cantidad”, que expresa el número de
existencias de cada ejemplar. Establece una consulta que nos muestre los títulos de libros que
tengan entre 5 y 10 ejemplares.
2.- En una base de datos de una tienda de abarrotes, existe una tabla llamada “productos”
(Id_Producto, Nombre, Precio, Cantidad, fk_Id_Categoría), que contiene un campo que es una llave
foránea llamada fk_Id_Categoría, relacionada con otra tabla con el nombre de “categoría” con su
columna “Id_Catergoría”, que es llave primaria. Realiza una consulta que permita mostrar los
productos de la primer tabla y a qué categoría pertenecen.
3.- En una base de datos de una escuela, hay una tabla llamada “alumnos” (Id_Alumno, Nombre,
Domicilio, Domicilio, Num_Control), se requiere ver todos los registros y todos los campos que los
nombres coincidan con “Roberto”.
12
En la siguiente autoevaluación, marca con una “X”, la casilla que coincida más con tu nivel de
dominio de cada una de las cuestiones.
Indicadores Lo puedo hacer Tengo Necesito
dudas trabajar más
Comprendo que son necesarias las consultas
para poder brindar a un usuario de bases de
datos, la información correcta.
Identifico con claridad cada una de las
variantes de la sentencia “WHERE”.
Conozco claramente la sintaxis para visualizar
registros que tengan coincidencias a través de
“LIKE”
Entiendo de manera óptima la manera de unir
tablas para visualizar registros ordenados
utilizando INNER JOIN:
Soy capaz de generar consultas condicionadas
con cada una una de las variantes
mencionadas en la lección.
13