Consultas Basicas SQL
Consultas Basicas SQL
Antes de comenzar a trabajar con el lenguaje de consulta SQL, se verá qué es un lenguaje de consulta y
qué tipos de lenguajes de consulta existen.
Los lenguajes de consulta permiten obtener determinada información sobre los datos almacenados.
Se dividen en dos tipos: lenguajes teóricos y lenguajes comerciales.
● Definición:
Permiten representar las consultas en forma concisa. En ellos se basan los
lenguajes comerciales y son en definitiva quienes definen cómo se deben
Lenguajes teóricos: formular las consultas
● Ejemplo:
Álgebra Relacional
● Definición:
Lenguajes que están implementados y se utilizan en diferentes paquetes de
software.
Lenguajes comerciales:
● Ejemplo:
S.Q.L (Structured Query Language)
SQL
SQL (Structured query language), lenguaje de consulta estructurado, es un lenguaje para el acceso a
bases de datos relacionales. Actualmente se ha convertido en un estándar de lenguaje de bases de datos, y
la mayoría de los sistemas de bases de datos lo soportan, desde sistemas para computadoras personales,
hasta grandes computadoras.
Por supuesto, a partir del estándar cada sistema ha desarrollado su propio SQL que puede variar de un
sistema a otro, pero con cambios que no suponen ninguna complicación para alguien que conozca un
SQL concreto.
SQL permite realizar consultas a la base de datos y además realiza funciones de definición, control y
gestión de la base de datos. Las sentencias SQL se clasifican según su finalidad dando origen a tres
‘lenguajes’ o mejor dicho sub-lenguajes:
Las sentencias comienzan siempre con una instrucción, en el ejemplo anterior la instrucción es SELECT,
a continuación un nombre de columna, o varios separados por comas, luego la palabra FROM y una
expresión-tabla. Por último de forma opcional se puede incluir la cláusula WHERE con una
condición-de-búsqueda.
Es importante destacar que la sentencia anterior es simplemente un ejemplo,
existen otras variantes de sentencias SQL, que se verán más adelante y que
permiten llevar adelante distintas actividades sobre una base de datos.
Observación
Ejemplo
A continuación se muestran, a modo de ejemplo, distintas sentencias SQL, con el fin de comenzar a
familiarizarse con la sintaxis de este lenguaje.
Dada una tabla de nombre CLIENTES (C.I., Nombre, Apellido, Dirección, Teléfono), se tienen las
siguientes consultas escritas en SQL.
El conjunto de registros (recordset) está compuesto por una lista de campos que
Consultas de pertenecen a una lista de tablas, opcionalmente se puede filtrar y ordenar el
Selección resultado de la consulta.
En donde Campos es el nombre del o de los campos (separados por coma) que se desean recuperar y
Tabla es el nombre de la tabla sobre la que se realizará la consulta.
Para generar una consulta que devuelva todos los campos de una tabla, se puede
utilizar el asterisco (*) en lugar de escribir los nombres de todos y cada uno de los
campos que contiene la tabla.
Observación La ventaja de utilizar el (*) es que si en algún momento se agregan o quitan
campos de la estructura de la tabla, no se deberá modificar la sintaxis de la
consulta para obtener el resultado deseado.
SELECT * FROM tabla
Ejemplo:
Nota: Para comprobar el funcionamiento de las sentencias SQL que se muestran en los ejemplos, se
puede utilizar la base de datos VIDEO CLUB.MDB, que se encuentra en la carpeta EJERCICIOS
ACCESS. Utilizar la ventana de consultas de Access, en vista SQL, para escribir y ejecutar las
sentencias.
Si en la tabla origen de datos, hay algún campo cuyo nombre incluye espacios en blanco (aunque esto no
es aconsejable), por ejemplo "Tipo de Cuponera", cuando se escriba el nombre del campo en la
sentencia SQL, se lo debe hacer entre corchetes [nombre_campo].
Ejemplo
Nota: Para comprobar el funcionamiento de las sentencias SQL que se muestran en los ejemplos, se
puede utilizar la base de datos VIDEO CLUB.MDB, que se encuentra en la carpeta EJERCICIOS
ACCESS. Utilizar la ventana de consultas de Access, en vista SQL, para escribir y ejecutar las
sentencias.
SELECT Apellido, Teléfono, FechaIngreso
FROM Socios
ORDER BY Apellido
La consulta anterior devuelve los campos Apellido, Teléfono y FechaIngreso de la tabla Socios,
ordenados por el campo Apellido, en forma ascendente.
Los campos se ordenan, de menor a mayor si el campo es numérico, por orden alfabético si el campo es
de tipo texto, de anterior a posterior si el campo es de tipo fecha/hora, etc.
Ejemplo
SELECT Apellido, Teléfono, FechaIngreso
FROM Socios
ORDER BY Apellido, FechaIngreso
Esta consulta devuelve los datos ordenados, en principio por Apellido y si hay algún apellido repetido,
aparecen ordenados los datos también por FechaIngreso.
También se puede especificar si los datos resultantes de la consulta se desean ordenados en forma
ascendente o descendente:
● ascendente utilizando la cláusula ASC (valor por defecto)
Esta consulta devuelve los registros ordenados alfabéticamente por Apellido en orden ascendente y
cuando el Apellido se repite los datos se ordenan por FechaIngreso en orden descendente. Observar la
siguiente figura, para ver un ejemplo de la explicación anterior.
Utilización de un Alias
En determinadas circunstancias puede ser necesario asignar un nombre a algún campo o combinación de
campos de una tabla. Para ello se cuenta con la palabra reservada AS.
Ejemplo:
Nota: Para comprobar el funcionamiento de las sentencias SQL que se muestran en los ejemplos, se
puede utilizar la base de datos VIDEO CLUB.MDB, que se encuentra en la carpeta EJERCICIOS
ACCESS. Utilizar la ventana de consultas de Access, en vista SQL, para escribir y ejecutar las
sentencias.
SELECT Apellido AS Socio
FROM Socios
Esta consulta devuelve los apellidos de todos los registros, de la tabla Socios, pero, en el resultado de la
consulta, el campo Apellido se denomina Socio.
Para ver una demostración animada, ubicar el
puntero del mouse sobre la imagen de la izquierda.
Ejemplo:
La siguiente consulta devuelve los nombres y apellidos de los Socios, pero el campo devuelto se llama
Socio.
SELECT [Apellido]+[Nombre] AS Socio
FROM Socios
Hasta el momento se vio cómo generar consultas, utilizando la instrucción SELECT, que devuelvan
algunos o todos los campos de todos los registros de una determinada tabla.
Ahora se verá cómo filtrar los registros de una tabla con el fin de recuperar solamente aquellos que
cumplan con condiciones preestablecidas.
¿Qué pasa cuando se desea obtener como resultado de la consulta, una tabla con un conjunto de registros
que cumplan una determinada condición?
En este caso se hace uso de las cláusulas DISTINCT, TOP y WHERE
Cláusula DISTINCT
En la instrucción SELECT, se puede incluir la cláusula DISTINCT, con la finalidad de eliminar del
resultado de la consulta, las filas repetidas.
Si en lugar de la cláusula ALL se utiliza DISTINCT entonces se obtendrá como resultado de la consulta
una tabla donde cada apellido se muestre una sola vez, aún cuando en la tabla origen aparezca repetido.
Cláusula TOP
La cláusula TOP permite seleccionar de todos los registros de una tabla, los n primeros registros. Para
ello es necesario generar una sentencia de consulta que incluya también la cláusula ORDER BY.
Ejemplo:
Esta consulta devuelve los Apellidos y Nombres de los cinco socios, de la tabla Socios, que tengan fecha
de ingreso más antigua.
Lo que sucede en realidad es que se ordena la tabla por FechaIngreso en orden ascendente y luego se
seleccionan los primeros cinco registros.
Cláusula WHERE
La cláusula WHERE se utiliza para determinar cuales son los registros de las tablas, que aparecen en la
cláusula FROM, que se desean ver en los resultados de una consulta de selección.
A continuación de la cláusula WHERE se deben especificar las condiciones de selección. Si no se
emplea esta cláusula, la consulta devolverá todos los registros de la tabla.
WHERE es opcional, pero si se utiliza se coloca a continuación de FROM.
En principio se verá la utilización de la cláusula WHERE para consultas con una sola
condición.
SELECT Campos
FROM Tabla
WHERE Condición
ORDER BY Campo
En caso de tener una sentencia SELECT con las cláusulas WHERE y ORDER BY, se debe tener presente
que se debe respetar el siguiente orden que se muestra en la sintaxis del cuadro anterior (la cláusula
WHERE siempre se escribe primero que ORDER BY).
● Cuando se desea establecer una condición referida a un campo de tipo carácter, la condición de
búsqueda debe ir encerrada entre comillas simples
● Cuando se utiliza un campo de tipo Sí/No, se debe comparar por true/false o -1/0.
● No es posible establecer condiciones de búsqueda en los campos memo
● Las fechas se deben escribir siempre en formato dd-mm-aa en donde mm representa el mes, dd el
día y aa el año, debiendo utilizar únicamente el guión (-) como separador y además la fecha debe ir
encerrada entre almohadillas (#).
Por ejemplo: si se desea hacer referencia al día 5 de Enero de 2001 se debe escribir lo siguiente:
#05-01-01# ó #5-1-01#.
Operadores de comparación
Para generar las condiciones de selección se pueden utilizar los siguientes operadores de comparación
Operador Uso
< Menor que
> Mayor que
<> Distinto de
<= Menor ó Igual que
>= Mayor ó Igual que
= Igual que
BETWEEN Utilizado para especificar un rango de valores.
LIKE Utilizado en la comparación de un modelo
IN Utilizado para especificar una lista de valores.
Ejemplo
Nota: Para comprobar el funcionamiento de las sentencias SQL que se muestran en los ejemplos, se
puede utilizar la base de datos VIDEO CLUB.MDB, que se encuentra en la carpeta EJERCICIOS
ACCESS. Utilizar la ventana de consultas de Access, en vista SQL, para escribir y ejecutar las
sentencias.
SELECT Nombre, Apellido SELECT Duración
FROM Socios FROM Videos
WHERE FechaIngreso>=#5/4/95# WHERE Título='El fugitivo'
Otros Operadores
Operador BETWEEN
Para seleccionar registros de una tabla que cumplan con una condición que involucra un rango de
valores, se debe utilizar el operador BETWEEN.
La sintaxis es:
SELECT Campos
FROM Tabla
WHERE Campo [NOT] BETWEEN valor1 AND valor2
Ejemplo
Nota: Para comprobar el funcionamiento de las sentencias SQL que se muestran en los ejemplos, se
puede utilizar la base de datos VIDEO CLUB.MDB, que se encuentra en la carpeta EJERCICIOS
ACCESS. Utilizar la ventana de consultas de Access, en vista SQL, para escribir y ejecutar las
sentencias.
SELECT Título
FROM Videos
WHERE Copias BETWEEN 2 AND 5
Esta consulta devuelve los Títulos de los registros de la tabla Videos, que cumplan con la siguiente
condición: la cantidad de Copias debe estar entre 2 y 5.
Operador LIKE
Este operador se utiliza cuando se desea seleccionar un conjunto de registros de la tabla, que cumplan
con un determinado patrón.
SELECT Campos
FROM Tabla
WHERE campo LIKE patrón
Esta consulta devuelve los campos de la Tabla que incluyan en los valores de campo los caracteres de
patrón.
Por patrón se entiende un valor completo (Ana María), o un valor que incluye caracteres comodín, como
los reconocidos por el sistema operativo para encontrar un rango de valores (An*).
Ejemplo
SELECT *
FROM Videos
WHERE Título LIKE "El*"
Esta consulta devuelve todos los campos de los registros de la tabla Videos que cumplen con la siguiente
condición: el título del vídeo comienza con los caracteres "El".
Operador IN
Sintaxis
SELECT Campos
FROM Tabla
WHERE campo [NOT] IN lista
Ejemplo
SELECT *
FROM Distribuidoras
WHERE Distribuidora IN ('Halven', 'Censa', 'Ronlay')
Esta consulta devuelve todos los campos de los registros de la tabla Distribuidoras, que cumplen con la
condición de tener en el campo Distribuidora alguno de los siguientes valores: Halven, Censa y Ronlay.
Operadores Lógicos
Cuando se desea generar una consulta utilizando la cláusula WHERE, pero estableciendo más de una
condición de selección, se debe recurrir a los operadores lógicos
Algunos de los operadores lógicos soportados por SQL son: AND, OR y NOT y sus posibles
combinaciones.
Ejemplos
Nota: Para comprobar el funcionamiento de las sentencias SQL que se muestran en los ejemplos, se
puede utilizar la base de datos VIDEO CLUB.MDB, que se encuentra en la carpeta EJERCICIOS
ACCESS. Utilizar la ventana de consultas de Access, en vista SQL, para escribir y ejecutar las
sentencias.
En este caso la consulta devuelve los Títulos y Duraciones, de lo registros de la tabla Videos, que no
tengan en el campo Distribuidora el valor 3.
Consultas sobre Varias Tablas
En ocasiones es necesario mostrar, como resultado de una consulta, datos que están almacenados en
tablas distintas, o es necesario incluir en la cláusula WHERE campos de varias tablas para armar una
condición.
Para poder generar una consulta que trabaje sobre más de una tabla es necesario que dichas tablas se
vinculen. Varias tablas pueden vincularse mediante campos que tengan información relacionada. A esta
operación se le denomina JOIN.
Para llevar adelante dicha operación se colocan los nombres de las tablas a vincular, a continuación de la
cláusula FROM, separados por comas y luego de la cláusula WHERE se escriben los campos de dichas
tablas que se van a relacionar.
SELECT Campos
FROM Tabla1, Tabla2, ...
WHERE Tabla1.Campo = Tabla2.Campo AND condición
Cuando se tienen que utilizar campos que tienen el mismo nombre en las tablas a
vincular, se aplica el formato: Tabla.Campo para identificar claramente al campo
de qué tabla se está haciendo referencia.
Observación Otra alternativa es utilizar un alias.
Ejemplo
Nota: Para comprobar el funcionamiento de las sentencias SQL que se muestran en los ejemplos, se
puede utilizar la base de datos VIDEO CLUB.MDB, que se encuentra en la carpeta EJERCICIOS
ACCESS. Utilizar la ventana de consultas de Access, en vista SQL, para escribir y ejecutar las
sentencias.
Esta consulta devuelve el Título y la Duración (obtenidos de la tabla Videos), de todos los videos, que en
la tabla Préstamos, tengan un valor superior a 1/1/1997 en el campo Devolución.
A continuación de FROM, es necesario colocar el nombre de la tabla Videos (por los campos que se
muestran en el SELECT) y el de la tabla Préstamos (por los campos que se utilizan en la condición del
WHERE).
La expresión en rojo es necesario colocarla para que sólo se muestren, en el resultado de la consulta,
aquellos registros que están presentes en las dos tablas
Observar cómo, por tener un campo de igual nombre en dos tablas distintas, se tuvo que utilizar el
formato Tabla.Campo para hacer referencia a los campos IdVideo de la tabla Videos y de la tabla
Préstamos.
Consultas de Acción
Hasta ahora se ha visto cómo seleccionar datos almacenados en las tablas de una base de datos. De aquí
en adelante se verá cómo actualizar esos datos, es decir insertar nuevas filas, borrar filas o cambiar el
contenido de las filas de una tabla.
Estas operaciones modifican los datos almacenados en las tablas pero no su estructura, ni su definición.
Se tratará el tema de inserción de nuevas filas (con la sentencia INSERT INTO), eliminación de filas de
una tabla (con la sentencia DELETE) y por último cómo modificar el contenido de las filas de una tabla
(con la sentencia UPDATE).
La instrucción INSERT INTO permite agregar un registro o fila en una tabla y llevar adelante lo que se
denomina consultas de datos añadidos.
La sintaxis es la siguiente:
Esta consulta agrega un registro nuevo a la Tabla y guarda en el campo1 el valor1, en el campo2 el
valor2 y así sucesivamente.
El registro nuevo se agrega al final de la tabla.
Varias aclaraciones
Cuando se están insertando valores de tipo carácter, los mismos deben ir escritos
entre comillas simples ( ' )
Si la tabla destino contiene una clave principal, hay que asegurarse de que sea
única y con valores no-Null ; si no es así, no se agregará el registro.
Nota: Para comprobar el funcionamiento de las sentencias SQL que se muestran en los ejemplos, se
puede utilizar la base de datos VIDEO CLUB.MDB, que se encuentra en la carpeta EJERCICIOS
ACCESS. Utilizar la ventana de consultas de Access, en vista SQL, para escribir y ejecutar las
sentencias.
La sentencia del ejemplo anterior inserta un nuevo registro, al final de la tabla Videos. Este registro
nuevo tendrá en el campo IdVideo el valor '1100' Título el valor 'Un paseo por las nubes', en el campo
Duración, el valor #01:35#, en el campo Distribuidora, el valor 1 y en el campo Copias, el valor 3.
Consulta de Eliminación
Las consultas de eliminación permiten eliminar de la base de datos aquellos registros que cumplan con una
determinada condición.
La instrucción DELETE permite generar una consulta que elimina los registros de una o más tablas, listadas en
la cláusula FROM y que satisfacen la o las condiciones de la cláusula WHERE.
Su sintaxis es:
DELETE Tabla.*
FROM lista tablas
WHERE condición
Una consulta de eliminación elimina los registros completos, no únicamente los datos en campos específicos.
Si se desea eliminar valores en un campo especificado, se debe crear una consulta de actualización que cambie
los valores a Null.
Una vez que se han eliminado los registros utilizando una consulta de eliminación, no se
puede deshacer la operación.
Advertencia
Si se desea saber qué registros se eliminarán, primero realizar una consulta de selección
utilizando el mismo criterio y luego se ejecuta la consulta de eliminación.
Es recomendable mantener una copia de seguridad.
Observación
Ejemplos:
Nota: Para comprobar el funcionamiento de las sentencias SQL que se muestran en los ejemplos, se puede
utilizar la base de datos VIDEO CLUB.MDB, que se encuentra en la carpeta EJERCICIOS ACCESS. Utilizar
la ventana de consultas de Access, en vista SQL, para escribir y ejecutar las sentencias.
DELETE Videos.*
FROM Videos
WHERE Copias=2
La consulta anterior elimina de la tabla Videos, todos los registros que tengan en el campo Copias el valor 2.
Consulta de Actualización
Utilizando la instrucción UPDATE se genera una consulta de actualización que permite cambiar los valores de
los campos de una tabla especificada, basándose en una condición determinada.
Su sintaxis es:
UPDATE Tabla
SET Campo1=Valor1, Campo2=Valor2, ... CampoN=ValorN
WHERE condición
UPDATE se utiliza cuando se desea cambiar un gran número de registros o cuando éstos se encuentran en varias
tablas. Se pueden cambiar varios campos a la vez.
Ejemplo
UPDATE Socios
SET CantPelículas=CantPelículas+10
WHERE Cuponera= -1
Con esta consulta se incrementa en 10 el valor del campo CantPeliculas, de la tabla Socios, para todos aquellos
registros que tengan el valor -1 en el campo Cuponera.
Si se desea saber qué registros se van a modificar, antes de llevar adelante la modificación,
se debe realizar una consulta de selección utilizando la misma condición que para la
actualización y luego ejecutar la consulta de actualización.
Observación