SQL
Tecnologías de Información I
Turno Noche
Prácticos Miércoles 18 hs Aula Informática 1
¿Qué es
SQL?
Es un Lenguaje Estructurado de Consulta que se utiliza para el
acceso a bases de datos relacionales y efectuar en ellas distintos
tipos de operaciones.
Por ejemplo:
– Crear, modificar o eliminar tablas
– Consultar la estructura de una tabla
– Manipular los datos de una tabla
¿Qué es
SQL?
Es una herramienta eficaz para la definición y manipulación de datos
en un ambiente de base de datos de modelo relacional.
SQL consta de distintas sentencias o instrucciones que demandan una
acción específica al DBMS.
Estas instrucciones deben respetar una determinada estructura que se
denomina sintaxis.
Sentencias de DEFINICIÓN DE
DATOS
Se utilizan para el manejo de las tablas:
CREATE
TABLE crear
una tabla
ALTER TABLE
modificar una tabla
DROP TABLE
Eliminar una tabla
Datos de
Conexión
[Link]
usuario/clave: alumno/alumno
base de datos: tecno1
Sentencia de consulta de
ESTRUCTURA
Se utiliza para consultar la estructura de una tabla ya existente. Básicamente es una
sola:
● DESCRIBE ...
Por ejemplo:
DESCRIBE VENDEDORES
El comando describe permite
ver los campos que componen
una tabla y sus características
Sentencias para la MANIPULACIÓN DE
DATOS
Son cuatro, resultando ser las más usadas:
◦ SELECT: Permite hacer consultas a una o varias tablas.
◦ INSERT: Permite agregar registros de datos a una tabla.
◦ DELETE: Permite eliminar registros de una tabla que cumplan
con determinada condición.
◦ UPDATE: Permite modificar datos de uno o varios registros
de una tabla.
En particular, nuestro curso se centra en el uso de la
cláusula
SELECT
“Esta sentencia se usa para recuperar filas de una o más tablas”
SELECT nombre_columnas_separados_por_coma
FROM nombre_tabla
Entonces, si queremos ver los datos de una tabla referidos únicamente a
ciertos campos específicos, entonces debemos nombrarlos luego del
SELECT:
SELECT nombre_cliente, saldo_actual
FROM CLIENTES
WHERE
“La utilizamos cuando necesitamos extraer datos de las filas que cumplan
determinada condición o condiciones, es decir necesitamos aplicar un filtro
de búsqueda”.
SELECT nombre_columnas_separados_por_coma
FROM nombre_tabla
WHERE <condicion_seleccion>
Por ejemplo:
SELECT * FROM CLIENTES WHERE saldo_actual < 1000
WHERE
▪ Si el condicionante es texto, va entre comillas:
... ctacte_susp = “N”
▪ Si el condicionante es numérico, va sin comillas:
... Id_vendedor = 7
WHERE
Para trabajar con más de una condición:
El operador AND se usa para combinar una o más expresiones lógicas y requiere que
cualquier fila examinada de la base de datos cumpla con todas las condiciones planteadas.
Por otra parte, se usa el operador OR para solicitar las filas que cumplan al menos una de las
condiciones planteadas.
Operadores AND y OR
Tanto AND como OR se pueden combinar, pero hay que tener presente el orden en que se
los usa y el empleo de paréntesis, ya que el resultado en cada caso es diferente.
Suponiendo tres condiciones A, B y C, veamos los distintos casos:
A OR B AND C
En este caso primero se evaluará la expresión B AND C. Luego, el resultado se evaluará con la
condición A.
Si queremos modificar ese orden utilizamos paréntesis:
(A OR B) AND C
En este caso primero se evaluará la expresión encerrada entre paréntesis (A OR B) y éste
resultado se evaluará con la condición C.
WHERE - Ejemplo de AND y OR
Ejemplo AND:
Es atendido por el vendedor N° 7 y tiene la CTA suspendida.
... Id_vendedor = 7 AND ctacte_susp = “S"
Ejemplo OR:
Es atendido por el vendedor N° 7 o tiene la CTA suspendida
... Id_vendedor = 7 OR ctacte_susp = “S"
WHERE - Ejemplo de AND y OR juntos
Ejemplo de AND y OR juntos:
Es atendido por el vendedor N° 3 o 7 y tiene la CTA suspendida
…(Id_vendedor = 3 OR Id_vendedor = 7) AND ctacte_susp = “S"
➔ Utilizamos paréntesis () para agrupar las condiciones lógicas
SQL
Tecnologías de Información I
Turno Noche
MIÉRCOLES 08/10/2025
Prácticos Miércoles 18 hs Aula Informática 1
Estructura lógica a seguir:
SELECT campo1, campo2, campo3, campoX
FROM TABLA
WHERE condición1 AND condición2
ORDER BY campo [ASC/DESC]
ACTIVIDAD PRÁCTICA
Realizar todos los ejercicios propuestos por la
Guía de SQL en su sección “A”
En nuestra clase de hoy continuamos desde el
ejercicio 6 al 26 (inclusive)
LIKE
Este operador se aplica a datos de tipo cadenas de texto y se usa para buscar
registros. Es capaz de hallar coincidencias dentro de una cadena bajo un patrón
dado.
Por ejemplo:
¿Qué Vendedores tienen como apellido “PAZ”?
SELECT *
FROM VENDEDORES
WHERE apellido_vendedor LIKE "PAZ"
LIKE - Comodines
Con LIKE se pueden usar los siguientes dos caracteres comodín en el patrón:
Ejemplos:
Clientes que su nombre comience con “M” → nombre_cliente LIKE "M%"
Clientes que su nombre finalice con “A” → nombre_cliente LIKE "%A"
Clientes que su nombre contenga la palabra “CAR” → nombre_cliente LIKE "%CAR%"
Clientes cuyo segundo carácter en su nombre sea la letra “a” → nombre_cliente LIKE "_a%"
Clientes cuyo ante-último carácter en su nombre sea la letra “a” → nombre_cliente LIKE "%a_"
LIKE - Ejercicio 6
Listar clientes cuyo nombre comience con “MAR”.
LIKE - Ejercicio 6 - Solución
Listar clientes cuyo nombre comience con “MAR”.
SELECT nombre_cliente, cuit, calle_y_nro_cli, ciudad_cli, telefono_cli
FROM CLIENTES
WHERE nombre_cliente like 'MAR%'
NOT LIKE (Negación)
Para hacer búsquedas de un campo que NO contenga una secuencia de caracteres
determinada, usamos:
NOT LIKE
Nombres de Clientes que NO contengan la palabra Maria:
... nombre_cliente NOT LIKE “%Maria%"
Conjunto con IN
IN permite realizar una búsqueda en un conjunto de valores establecidos. Pueden
ser cadenas de letras o números(*).
… WHERE campo IN CONJUNTO
Ejemplos:
… WHERE ciudad_cli IN ("RIO CUARTO", "MINA CLAVERO")
La consulta devolverá los registros cuya ciudad sea RIO CUARTO o MINA CLAVERO
… WHERE id_sector IN (1,3,5)
La consulta devolverá los registros cuyo id_sector sea 1, 3 o 5.
*NOTA: recuerde NO mezclar número y cadenas de dentro de un mismo IN
Ejercicio 8, utilizando IN
Ejercicio 8. Listado de clientes de los vendedores 5, 6 y 7 ordenado
por vendedor.
Ejercicio 8, utilizando IN. Solución
Ejercicio 8. Listado de clientes de los vendedores 5, 6 y 7 ordenado
por vendedor.
Solución:
SELECT nombre_cliente, cuit, calle_y_nro_cli, ciudad_cli, telefono_cli
FROM CLIENTES
WHERE id_vendedor IN (5,6,7)
ORDER BY id_vendedor
Intervalos con BETWEEN
BETWEEN permite buscar valores dentro de un intervalo establecido. La búsqueda aceptará
valores entre MIN_VAL y MAX_VAL (incluidos MIN_VAL y MAX_VAL).
… WHERE campo BETWEEN MIN_VAL AND MAX_VAL
Ejemplo:
… WHERE id_vendedor BETWEEN 1 AND 5
Esta consulta devolverá todos los registros cuyo campo id_vendedor se encuentran entre 1 y
5 incluidos.
Ejercicio 5, utilizando BETWEEN
Listar apellido y nombre de los vendedores cuyo código esté comprendido
entre 6 y 8.
Ejercicio 5, utilizando BETWEEN. Solución
Listar apellido y nombre de los vendedores cuyo código esté comprendido
entre 6 y 8.
SELECT nombre_vendedor, apellido_vendedor
FROM VENDEDORES
WHERE id_vendedor between 6 and 8
Intervalos con NOT BETWEEN
NOT BETWEEN permite buscar valores fuera de un intervalo establecido. La búsqueda
descartará valores entre MIN_VAL y MAX_VAL (incluidos MIN_VAL y MAX_VAL).
… WHERE campo NOT BETWEEN MIN_VAL AND MAX_VAL
Ejemplo:
… WHERE id_vendedor NOT BETWEEN 1 AND 5
Esta consulta devolverá todos los registros cuyo campo id_vendedor NO se encuentran
entre 1 y 5 incluidos.
Diferencias entre IN y BETWEEN
IN BETWEEN
Se puede utilizar en valores Se puede utilizar solo en valores
numéricos, fechas y texto numéricos y fechas
Es para un Conjunto de valores Es para un Rango de valores
definidos (no necesariamente definidos, consecutivos.
consecutivos)
Ej: IN (6,9,21,33,48) Ej: BETWEEN 6 AND 48
Busca las coincidencias de todo el rango definido
Busca las coincidencias solo con el conjunto de
(6,7,8,9,10,11,12… hasta 48)
valores definidos
Estructura lógica a seguir uniendo tablas:
SELECT campo1, campo2, campo3, campoX
FROM TABLA1, TABLA2
WHERE [Link]=[Link]
AND condición1 AND condición2
ORDER BY campo [ASC/DESC]
SQL
Tecnologías de Información I
Turno Noche
MIÉRCOLES 15/10/2025
Prácticos Miércoles 18 hs Aula Informática 1
Datos de Conexión
[Link]
usuario/clave: alumno/alumno
base de datos: tecno1
Estructura lógica a seguir uniendo tablas:
SELECT campo1, campo2, campo3, campoX
FROM TABLA1, TABLA2
WHERE [Link]=[Link]
AND condición1 AND condición2
ORDER BY campo ASC/DESC
EJEMPLO
SELECT id_cliente, CLIENTES.id_vendedor, nombre_cliente
FROM CLIENTES, VENDEDORES
WHERE CLIENTES.id_vendedor=VENDEDORES.id_vendedor
AND CLIENTES.id_vendedor = 7
ORDER BY CLIENTES.id_vendedor ASC
Unión de Tablas
Recordemos la estructura:
SELECT A
FROM B
WHERE C
ORDER BY D ASC o DESC
Unión de Tablas
En A ¿Todos los campos corresponden a la misma tabla?
SI ? : Indicar nombre de la tabla en B.
NO?: lndicar cada tabla en B separadas por comas.
- Si en B participan varias tablas en C es necesario plantear su relación:
[Link]=[Link]
- Si hay otras condiciones se utiliza AND
- Importante! Para todos los campos duplicados (que están en ambas Tablas) se
debe indicar el nombre de la TABLA a la que pertenecen: TABLA. campo
Ejercitemos
B. Ejercicios intermedios
28
29
31
33 (diferente)
Ejercitemos
Ejercicio 28.
Indique el listado de facturas pendientes de cobro de clientes
de Alta Gracia.
Ejercitemos
Ejercicio 28.
Indique el listado de facturas pendientes de cobro de clientes
de Alta Gracia.
Solución:
SELECT CLIENTES.nombre_cliente, [Link], prefijo_comprobante, numero_comprobante,
fecha_comprobante, saldo_no_cancelado
FROM CTACTE, CLIENTES
WHERE CTACTE.id_cliente=CLIENTES.id_cliente
AND ciudad_cli= "ALTA GRACIA"
AND saldo_no_cancelado>0
ORDER BY nombre_cliente
—---- Nos devuelve 0 filas —--
Ejercitemos
Ejercicio 28.
Indique el listado de facturas pendientes de cobro de clientes
pero de BELL VILLE.
Solución:
SELECT CLIENTES.nombre_cliente, [Link], prefijo_comprobante, numero_comprobante,
fecha_comprobante, saldo_no_cancelado
FROM CTACTE, CLIENTES
WHERE CTACTE.id_cliente=CLIENTES.id_cliente
AND ciudad_cli= "BELL VILLE"
AND saldo_no_cancelado>0
ORDER BY nombre_cliente
Ejercitemos
Ejercicio 29.
Nombre, domicilio y saldo de los clientes que tengan saldo
mayor a 100000. Indicar también el nombre del sector al que
pertenece cada cliente.
Ejercitemos
Ejercicio 29.
Nombre, domicilio y saldo de los clientes que tengan saldo
mayor a 100000. Indicar también el nombre del sector al que
pertenece cada cliente.
Solución:
SELECT nombre_cliente, calle_y_nro_cli, ciudad_cli, saldo_actual, nombre_sector
FROM CLIENTES, SECTORES
WHERE CLIENTES.id_sector=SECTORES.id_sector
AND saldo_actual >100000
Ejercitemos
Ejercicio 31.
Obtener un listado de los comprobantes del vendedor
Castellanos. Indicar nombre del cliente, prefijo y número del
comprobante e importe total.
Ejercitemos
Ejercicio 31.
Obtener un listado de los comprobantes del vendedor
Castellanos. Indicar nombre del cliente, prefijo y número del
comprobante e importe total.
Solución:
SELECT nombre_cliente, prefijo_comprobante, numero_comprobante, importe_total
FROM CTACTE, VENDEDORES
WHERE CTACTE.id_vendedor=VENDEDORES.id_vendedor
AND apellido_vendedor like 'Castellanos%'
Ejercitemos
Ejercicio 31.
Realizar la consulta que permita acceder al siguiente listado:
Ejercitemos
Ejercicio 31.
Realizar la consulta que permita acceder al siguiente listado:
Solución:
SELECT nro_movim_ctacte, prefijo_comprobante, numero_comprobante,
letra_comprobante, nombre_cliente, fecha_comprobante
FROM CTACTE
WHERE fecha_comprobante BETWEEN '2021-06-01' AND '2021-06-31'
ORDER BY fecha_comprobante DESC
FUNCIONES DE AGREGACIÓN
Las funciones de agregación realizan un cálculo sobre un
conjunto de datos y devuelven una única fila como resultado
(un solo valor).
● AVG () Promedio
● COUNT() Cantidad de filas
● MAX() El mayor valor
● MIN() El menor valor
● SUM() La suma de los valores
¿Cuál es el límite de crédito más grande?
SELECT MAX(limite_credito)
FROM CLIENTES
A tener en cuenta:
Nos devuelve un valor, una fila.
¿Cuál es el límite de crédito más grande? y ¿el mínimo saldo actual?
SELECT MAX(limite_credito), MIN(saldo_actual)
FROM CLIENTES
A tener en cuenta:
Nos devuelve dos valores en una
fila.
Cuando utilizamos funciones de
agregación, en el SELECT, solo
pueden haber otras funciones de
agregación;
Importante:
Si queremos colocar algún nombre
de columna en el SELECT debemos
agrupar las filas por dicha columna.
GROUP BY
Permite “agrupar” un conjunto de filas para obtener subtotales
ya que agrupa resultados y devuelve una única fila por cada
grupo.
Estructura lógica a seguir:
SELECT campodeagrupación, FUNCION(campo)
FROM TABLA
GROUP BY campodeagrupación
ORDER BY campox [ASC/DESC]
GROUP BY
Ejemplo:
SELECT MAX(limite_credito), nombre_cliente
FROM CLIENTES
GROUP BY nombre_cliente
A tener en cuenta:
Nos devuelve un resultado por fila. En este
caso el valor que corresponde al límite máximo
de crédito que tiene cada cliente.
Obtener el total de facturación Obtener el total de facturación
adeudado: adeudado por cliente:
SELECT SELECT nombre_cliente,
SUM(saldo_no_cancelado) SUM(saldo_no_cancelado)
FROM CTACTE FROM CTACTE
WHERE saldo_no_cancelado > 0
GROUP BY nombre_cliente
Obtener el total de facturación (total de Obtener el total de facturación (total de
ventas): ventas) por cliente:
SELECT SUM(importe_total) SELECT nombre_cliente,
FROM CTACTE SUM(importe_total)
WHERE id_tipo_responsable = 7 FROM CTACTE
WHERE id_tipo_responsable = 7
GROUP BY nombre_cliente
SQL
Tecnologías de Información I
Turno Noche
MIÉRCOLES 22/10/2025
Prácticos Miércoles 18 hs Aula Informática 1
AS
La palabra reservada AS se utiliza para renombrar una columna o tabla al
momento de arrojar el resultado sin modificar el nombre original de la tabla en la
base de datos.
Ejemplo:
SELECT nombre_cliente AS Nombre, SUM(importe_total) AS "Total de Ventas"
FROM CTACTE
WHERE id_tipo_responsable = 7
GROUP BY nombre_cliente
Resultado:
Sin AS: Con AS:
COUNT
COUNT: “Cuenta” la cantidad de registros y retorna la cantidad de filas
Ejemplo: obtener la cantidad de ventas realizadas por vendedor
SELECT id_vendedor , COUNT(*)
FROM CTACTE
GROUP BY id_vendedor
COUNT
COUNT: “Cuenta” la cantidad de registros y retorna la cantidad de filas
Ejemplo: obtener la cantidad de ventas realizadas del vendedor 9
SELECT id_vendedor, COUNT(*)
FROM CTACTE
WHERE id_vendedor = 9
AVG: Retorna el valor promedio
Ejemplo: obtener el promedio de ventas por vendedor, donde la columna promedio se
llame Promedio Ventas.
SELECT id_vendedor, AVG(importe_total) AS "Promedio Ventas"
FROM CTACTE
GROUP BY id_vendedor
Estructura lógica completa:
SELECT campo1, campo2, FUNCION(campo)
FROM TABLA1, TABLA2
WHERE [Link]=[Link]
AND condición1 AND condición2
GROUP BY campox
ORDER BY campon [ASC/DESC]