Sie sind auf Seite 1von 10

Bases de Datos – Introducción al SQL

Material de apoyo y guía de trabajo

En Informática, una base de datos (BD) es una colección de datos pertenecientes a un


mismo contexto, y de metadatos o estructuras que explican la manera en que los
primeros fueron almacenados sistemáticamente para un uso posterior. Las maneras de
organizar la información dentro de una BD se conocen como modelos de BD, de cual
cuáles el más difundido actualmente es el modelo relacional. Una BD que utiliza el
modelo relacional, organiza su información en tablas, que son estructuras matriciales
similares a una hoja de cálculo, donde las columnas se denominan campos de la tabla y
solo pueden almacenar datos de un mismo tipo (texto, número, fecha, etc.), y filas o
registros de la tabla, donde efectivamente
se guardan los datos de la base (en el
ejemplo, la tabla Libros posee cinco
campos y tres registros). Además, las tablas
suelen tener uno o más índices que le
permiten realizar búsquedas u
ordenamientos de sus registros de manera
eficiente. Generalmente uno de esos índices se denomina clave principal de la tabla,
tiene la particularidad de que los datos que guardan, identifican de manera única (o
unívoca) a cada registro (en la tabla Libros, el campo ISBN podría ser su clave principal,
pues solo existe un único ISBN para cada libro).

Un sistema gestor de bases de datos (SGBD) es un software que puede manipular


tanto la estructura como el contenido de una BD. Para ello dispone de una serie de
herramientas que permiten al usuario almacenar y recuperar la información de
manera práctica y eficiente. Access es un SGBD de código propietario, es decir, para
utilizarlo hay que pagar una licencia.

El SQL (Structured Query Language) es un lenguaje estándar que permite la definición,


manipulación y control de bases de datos relacionales. Posee una sintaxis muy similar
al lenguaje natural y puede realizar consultas a los datos almacenados en una BD, de
manera muy rápida y eficiente. Es soportado por la mayoría de los SGBD, entre ellos
Access. De hecho, todas las acciones que se realizan en este último de manera gráfica
(como la construcción de Informes, por ejemplo), se ejecutan en SQL, aunque esto
pase inadvertido para el usuario.

SQL dispone de instrucciones que pueden construir y reconstruir la estructura de una


BD, y manipular o modificar sus datos, conformando dos conjuntos de instrucciones
denominados lenguaje de definición de datos (o DDL por sus siglas en inglés) y
lenguaje de manipulación de datos (o DML, por sus siglas en inglés), respectivamente.
En esta breve introducción al SQL, solo abordaremos los principios del DML, y
dejaremos el DDL para más adelante.

1
Las instrucciones del DML se organizan formando consultas SQL que el SGBD procesa
generando vistas de la BD, que simulan resúmenes de la misma.

Esta consulta SQL de ejemplo encuentra el nombre de un cliente cuyo identificador de


cliente es 19.283.746:

SELECT nombre-cliente
FROM clientes
WHERE id-cliente = “19 283 746”’

Generalmente, las consultas de manipulación de datos inician con la cláusula SELECT,


que indica al SGBD que campos de la BD se mostrarán, obteniendo los mismos de una
o varias tablas, según lo indique la cláusula FROM, a partir de un criterio de búsqueda
definido por la cláusula WHERE.

En este caso particular, la consulta indica que se muestre (SELECT) el campo


nombrecliente de (FROM) la tabla clientes donde (WHERE) el id-cliente es igual a 19
283 746.

Cláusula SELECT

La cláusula SELECT está siempre al principio de la consulta, seguida de uno o varios


indicadores que son campos de una o varias tablas de una BD, separados por comas,
como en el siguiente ejemplo:

SELECT [Email Adress], Company

Si un identificador está compuesto por varias palabras separadas por espacios en


blanco (como en el caso de Email Adress), se debe escribir entre corchetes.

La cláusula SELECT solo hará referencia a las tablas de donde provienen los campos si
los mismos poseen el mismo nombre, como en el siguiente caso:

SELECT Estudiantes.DNI, Matriculados.DNI

Aquí la consulta incluye dos campos con el mismo nombre (DNI), que pertenecen a
tablas diferentes (Estudiantes y Matriculados). Para mostrar la relación entre una tabla
y su campo se utiliza un punto entre ellos (por ejemplo Estudiantes.DNI).

En ocasiones, se hace necesario seleccionar todos los campos de una tabla. Para evitar
enunciarlos uno por uno, se puede utilizar el símbolo *, como en el siguiente ejemplo:

SELECT clientes.*
FROM clientes

2
Cláusula FROM

La cláusula FROM siempre se coloca después de SELECT y su(s) identificador(es)


es/son nombre(s) de tabla(s) de las cuales se extraen los datos con los que se realiza la
consulta:

SELECT [Nombre Producto], FechaVenta, Cantidad_Vendida


FROM Ventas
SELECT Estudiantes.DNI, Estudiantes.[Apellido y Nombre], Profesores.DNI,
Profesores.[Apellido y Nombre]
FROM Estudiantes, Profesores

Cláusula WHERE

La cláusula WHERE permite definir criterios para “filtrar” registros, es decir, indicar qué
características deben reunir aquellos que aparecerán en la vista. A diferencia de las
cláusulas SELECT y FROM, la cláusula WHERE no es un elemento obligatorio en una
consulta.

La sintaxis general de la cláusula WHERE es la siguiente:

WHERE campo = criterio

, donde campo refiere a uno o varios campos de una o más tablas involucradas en la
consulta, y criterio es una cadena que puede estar compuesta por operadores,
constantes y otros símbolos, en función del tipo de datos del campo involucrado.

A continuación se ejemplifican algunos criterios para consultas SQL en Access, con


criterios para campos de texto:

Para incluir registros


Ejemplo Resultado de la consulta
que...
Coincidan exactamente Devuelve registros en los que el
País = "China"
con un valor campo País tiene el valor China.
No coincidan con un País NOT "México" Devuelve registros en los que el
valor, como México campo País tiene un valor distinto
Pais <> “México” de México.
Empiecen, terminen o Devuelve registros de todos los
contengan la cadena País LIKE “A*” países cuyos nombres empiezan
especificada, como A por "A", como Azerbaiyán o
País LIKE “*A” Argelia, terminan en A, como
Birmania, Hungría o Eslovenia, o
País LIKE “*A*” contienen la letra A, como Irak,
Laos, o Malasia.

3
Para incluir registros
Ejemplo Resultado de la consulta
que...
Contengan valores Devuelve registros en los que no
País IS NULL
nulos (o que falten) hay ningún valor en el campo.
Contengan cadenas de Devuelve registros en los que el
País ="" (un par de
longitud cero campo tiene un valor en blanco
comillas)
(pero no nulo).
Vayan a continuación Devuelve registros de todos los
de un valor, como países a partir de México y
País >= "México"
México, si se ordenan posteriores por orden alfabético.
alfabéticamente
Coincidan con uno de Devuelve registros de Estados
dos valores, tales como País = "Estados Unidos y Reino Unido. Observe el
Estados Unidos o Reino Unidos" OR País uso del conector lógico OR que
Unido ="Reino Unido" permite comparar el campo con
más de un criterio.
Contengan uno de los País IN("Francia", Devuelve registros de todos los
valores de una lista "China", "Alemania", países especificados en la lista.
"Japón")
Coincidan con un Devuelve registros de países como
modelo específico China y Chile, cuyos nombres
tengan cinco caracteres y los
primeros tres sean "Chi".
País LIKE "Chi??"
El caracter ?, cuando se usa en
una expresión, representa un
único carácter comodín.

A continuación se ejemplifican algunos criterios para consultas SQL en Access, con


criterios para campos numéricos:

Para incluir registros


Ejemplo Resultado de la consulta
que...
Coincidan
Devuelve registros en los que el precio
exactamente con un Precio = 100
unitario del producto es 100 $.
valor, como 100
No coincidan con un Precio NOT Devuelve registros en los que el precio
valor, como 1000 1000 unitario del producto no es 1000 $.
Devuelve registros en los que el precio
Contengan un valor unitario es menor que 100 $ (<100). La
Precio < 100
menor que otro valor, segunda expresión (<=100) muestra los
Precio <= 100
como 100 registros en los que el precio por unidad
es menor o igual que 100 $.

4
Para incluir registros
Ejemplo Resultado de la consulta
que...
Devuelve registros en los que el precio
Contengan un valor unitario es mayor que 99.99 $ (>99.99). La
>99,99
mayor que otro valor, segunda expresión muestra los registros
>=99,99
como 99,99 en los que el precio por unidad es mayor o
igual que 99.99 $.
Contengan uno de Precio = 20
Devuelve registros en los que el precio por
entre dos valores, OR
unidad es 20 $ o 25 $.
como 20 o 25 Precio = 25
Contengan un valor Precio
Devuelve registros en los que el precio
que esté incluido en BETWEEN 50
unitario está entre 50 $ y 100 $.
un intervalo AND 100
Contengan un valor
Precio<50 OR Devuelve registros en los que el precio por
que esté fuera de un
Precio >100 unidad no está entre 50 $ y 100 $.
intervalo
Contengan uno entre Precio IN(20, Devuelve registros en los que el precio por
varios valores 25, 30) unidad es 20 $, 25 $ o 30 $.
Devuelve registros en los que no se ha
Contengan valores
Precio IS NULL especificado ningún valor en el campo
nulos (o que falten)
Precio.

A continuación se ejemplifican algunos criterios para consultas SQL en Access, con


criterios para campos de fecha y hora:

Para incluir
Ejemplo Resultado de la consulta
registros que...
Devuelve registros de
transacciones que tuvieron lugar
Coincidan
el 2 de febrero de 2006. Siempre
exactamente
hay que rodear los valores de
con un valor, Ingreso = #02/02/2006#
fecha con el carácter # para que
como
Access pueda distinguir entre
02/02/2006
valores de fecha y cadenas de
texto.
No coincidan Devuelve registros de
con un valor, transacciones que tuvieron lugar
Ingreso NOT #02/02/2006#
como cualquier día menos el 2 de
02/02/2006 febrero de 2006.
Contengan
Devuelve registros de
valores previos
Ingreso < #02/02/2006# transacciones que tuvieron lugar
a una fecha
después del 2 de febrero de 2006.
determinada.

5
Para incluir
Ejemplo Resultado de la consulta
registros que...
Devuelve los registros en los que
las transacciones tuvieron lugar
Ingreso >#02/02/2006# AND
Contengan entre el 2 de febrero de 2006 y el
Ingreso<#04/02/2006#
valores 4 de febrero de 2006.
comprendidos
Ingreso BETWEEN
en un intervalo También puede usar el
#02/02/2006# AND
de fechas operador Entre para filtrar según
#04/02/2006#
un intervalo de valores, incluidos
los extremos.
Devuelve registros de
Contengan uno Ingreso = #02/02/2006# OR transacciones que tuvieron lugar
de dos valores. Ingreso = #03/02/2006# el 2 de febrero de 2006 o el 3 de
febrero de 2006.
Devuelve los registros en los que
Contengan uno Ingreso IN (#01/02/2006#, las transacciones tuvieron lugar el
entre varios #01/03/2006#, 1 de febrero de 2006, el 1 de
valores #01/04/2006#) marzo de 2006 o el 1 de abril de
2006.
Contengan una Devuelve registros en los que las
fecha de un mes transacciones tuvieron lugar en
específico DatePart("m", Ingreso) = 12 diciembre de cualquier año.
(independiente DatePart es una función SQL
mente del año) soportada por Accesss
Contengan la
Devuelve registros de
fecha en curso
transacciones que tuvieron lugar
(la fecha actual
el día actual. Si hoy es
es Ingreso = Date()
02/02/2006, verá los registros en
proporcionada
los que el campo Ingreso esté
por la función
definido en 2 de febrero de 2006.
Date()
Devuelve registros de
transacciones que tuvieron lugar
Contengan la
Ingreso = Date()-1 el día anterior al día actual. Si hoy
fecha de ayer
es 02/02/2006, verá los registros
del 1 de febrero de 2006.
Devuelve registros de
transacciones que tuvieron lugar
Contengan una
durante los últimos 7 días. Si hoy
fecha que entre Ingreso BETWEEN Date()
es el 02/02/2006, verá los
dentro de los AND Date()-6
registros correspondientes al
últimos 7 días
intervalo comprendido entre el 24
de enero de 2006 y el 2 de febrero

6
Para incluir
Ejemplo Resultado de la consulta
registros que...
de 2006.
Contengan una Year(Ingreso) = Year(Now()) Devuelve registros del mes actual.
fecha del mes AND Month(Ingreso) = Si hoy es 02/02/2006, verá los
en curso Month(Now()) registros de febrero de 2006.
Contengan una
Devuelve registros del año en
fecha
Year(Ingreso) = Year(Date()) curso. Si hoy es 02/02/2006, verá
correspondiente
los registros del año 2006.
al año en curso
Contengan una Devuelve registros de
Year(Ingreso) = Year(Date())
fecha del año transacciones que tuvieron lugar
-1
anterior durante el año pasado.
Contengan una Devuelve registros de
Year(Ingreso) = Year(Date())
fecha del año transacciones con fecha del año
+1
siguiente siguiente.
Contengan una Devuelve registros de
Ingreso < Date()
fecha ya pasada transacciones anteriores a hoy.
Filtren valores
Devuelvan registros en los que
nulos (o que Ingreso IS Null
falte la fecha de la transacción.
falten)

A continuación se ejemplifican algunos criterios para consultas SQL en Access, con


criterios para campos de SI/NO:

Ejemplo Resultado
Casado = Si Probado para un valor Sí. Un valor 1 o -1 se
Casado = True convierte en "Verdadero" en la fila Criterios
Casado = 1 cuando lo introduce.
Casado = -1
Casado = No Probado para un valor No. Un valor 0 se convierte
Casado = Falso en "Falso" en la fila Criterios cuando lo introduce.
Casado = 0
Un número distinto de 1, -1 o 0 No se obtiene ningún resultado si es el único valor
Casado = 2 de criterios del campo
Una cadena de caracteres que
Se produce un error en la ejecución de la consulta
no sea Sí, No, Verdadero o Falso
debido a que los tipos de datos no coinciden
Casado = “Casado”

7
Cláusula ORDER BY

La cláusula ORDER BY en Access ordena los registros resultantes de una consulta por
un campo o campos especificados en orden ascendente o descendente.

SELECT Apellido, Nombre


FROM Empleados
ORDER BY Apellido ASC

ORDER BY es opcional, solo se usa cuando se requiere que los datos se muestren
siguiendo un orden ascendente o descendente. Para ordenar en orden descendente
(de la Z a la A, de 9 a 0), agregue la palabra reservada DESC.

ORDER BY suele ser el último elemento de una instrucción SQL.

Funciones de agregado de SQL

Se trata de funciones que vienen incorporadas al SQL, mediante las cuales se pueden
determinar varias medidas estadísticas para un conjunto de valores.

AVG:
Calcula la media aritmética de un conjunto de valores contenidos en un campo
especificado en una consulta.

SELECT AVG (Precio) AS PromedioPrecio, AVG (Descuento) AS PromedioDescuento


FROM [Ventas de Productos]

El operador AS permite dar un nombre al promedio obtenido (si no se coloca en la


consulta, se verá el rótulo expr001 o similar).

COUNT:
Calcula el número de registros devueltos por una consulta.

SELECT COUNT([Destino de envio]) AS [Envios Internacionales]


FROM [Ordenes de Compra]
WHERE [Destino de envio] NOT “Argentina”

Si el campo que se usa para contar, en un registro, tiene valor NULL, el registro se
omite, a menos que se use el carácter comodín *, como en el siguiente ejemplo:

SELECT COUNT(*)
FROM Empleados

8
MIN, MAX, FIRST, LAST:
Devuelve el valor mínimo, el máximo, el primero o el último, de un conjunto de
registros.

SELECT MIN([Precio Unitario]) AS [Menor Precio]


FROM [Precios de Venta];

SELECT LAST([Precio Unitario]) AS [Ultimo Precio],


FIRST([Precio Unitario]) AS [Primer Precio]
FROM [Precios de Venta];

Si el campo que se usa para contar, en un registro, tiene valor NULL, el registro se

SUM:
Devuelve la suma de un conjunto de valores contenidos en un campo especificado en
una consulta. También pueden incluirse como operandosLos operandos
de expr pueden incluir el nombre de un campo de tabla, una constante o una función
(que puede ser intrínseca o definida por el usuario, pero no una de las otras funciones
de agregado de SQL).

Observaciones

La función suma calcula el total de los valores de un campo. Por ejemplo, puede usar la
función suma para determinar el costo total de los cargos del flete.

La función suma omite los registros que contienen campos nulos. En el ejemplo
siguiente se muestra cómo se puede calcular la suma de los productos de los campos
PrecioUnidad y cantidad:

SELECT Sum(UnitPrice * Quantity) AS [Total Revenue]


FROM [Order Details];

Puede usar la función suma en una expresión de consulta. También puede usar esta
expresión en la propiedad SQL de un objetoQueryDef o al crear un conjunto de
registros basado en una consulta SQL.

9
Para ampliar la información sobre las consultas SQL en Access, puedes hacer clic sobre
los siguientes links:

https://support.office.com/es-es/article/access-sql-conceptos-b%C3%A1sicos-
vocabulario-y-sintaxis-444d0303-cde1-424e-9a74-e8dc3e460671

10

Das könnte Ihnen auch gefallen