Como comenté en el ejemplo de base de datos relacional, la estructura de datos que definimos sería independiente del soporte físico de los datos. El gestor de la base de datos es el software que lidiaría con el soporte físico y se ocuparía de la gestión del almacenamiento de forma transparente para el usuario. No obstante, a este software, como a cualquier otro, hay que indicarle que queremos hacer, y es por ello que surgieron los lenguajes de bases de datos, de entre los cuales destaca sobre todo SQL cuando hablamos de bases de datos relacionales.

En este curso vamos a estudiar el lenguaje SQL por su importancia y su uso extendido con bases de datos relacionales. Veremos las principales instrucciones del lenguaje y haremos algunos ejercicios, pretendiendo proporcionar una visión de alto nivel del lenguaje.

El desarrollador de este lenguaje fue Lawrence J.Ellison que llevo a la practica las propuestas de organización de datos de Edgar Frank Codd, al que no hicieron mucho caso en IBM, la que era su compañía. Imagino que estaréis pensando: otra oportunidad perdida por el gigante azul. Pues si, lo mismo pienso yo.

Lawrence J.Ellison fundo Oracle y desarrollo el lenguaje SQL que se convirtió en el standard, tanto fue así que los organismos de estandarización ANSI (Instituto Nacional Estadounidense de Estándares) e ISO (Organización internacional de Normalización), lo tomaron como estándar y desde entonces han estado sacando nuevas versiones que mejoraban el lenguaje.

Para estudiarlo, vamos a considerar tres grupos de sentencias según su propósito:

  • Definición de la estructura de datos.
  • Manipulación de datos.
  • Recuperación de datos.

Pero antes de ello, se hace necesario introducir dos aspectos fundamentales en cualquier lenguaje: los tipos de datos que maneja y los operadores de los que dispone.

Tipos de datos

El lenguaje SQL soporta varios tipos de datos que podemos agrupar en cuatro grupos:

  1. Cadenas de caracteres: En esta agrupación, distinguimos los siguientes tipos:
    1. CHAR (n): Cadena de (n) caracteres. Siempre se reserva espacio para (n) caracteres, de tal forma que si no introdujéramos todos los caracteres, la cadena se rellenaría de espacios en blanco hasta llegar a (n).
    2. VARCHAR (n): En este tipo, la cadena tiene un número variable de caracteres con un máximo de (n). Es decir, aquí no rellenaríamos con espacios en blanco hasta llegar a (n).
  2. Cadenas de bits: Los tipos de datos que encontramos en este grupo son:
    1. BIT (n): cadena que contiene (n) bits.
    2. BIT VARYING (n): cadena de número variable de bits hasta un máximo de (n)
  3. Números: En este grupo encontramos varios tipos dependiendo de la naturaleza de los números que queramos guardar en la variable. De tal forma:
    1. Para números enteros tenemos los tipos: INTEGER, SMALLINT, BIGINT, cada uno de distinto tamaño máximo.
    2. Para números decimales encontramos los tipos: NUMERIC (dígitos, decimales) y DECIMAL (dígitos, decimales). El primer parámetro, dígitos, indica el número de estos disponible, incluyendo la parte entera y la decimal. Mientras que el parámetro decimales indica el número de decimales disponibles.
    3. Y para los números en coma flotante, tenemos los tipos: FLOAT, REAL, DOUBLE PRECISION. Cada uno de ellos con distintos tamaños para la parte entera y la decimal.
  4. Fecha y hora: En este grupo encontramos los tipos:
    1. DATE (almacena fechas) o TIME (almacena horas).
    2. TIMETZ: Igual que TIME pero añade información de la zona horaria.

Operadores

En la tabla siguiente, puede verse la lista de los operadores disponibles en SQL, junto con la comprobación que llevan a cabo.

Operador Comprobación que realiza
= Igual a
<> Distinto de
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
BETWEEN …. AND Entre dos valores
LIKE Similar a un patrón definido
IN Igual a un valor que pertenece a un conjunto
IS, IS NOT Para comparar con el valor nulo (IS NULL, IS NOT NULL)

NOTA:

Este post es parte de la colección “Arquitectura de Datos” que reproduce los apuntes de la clase que imparto sobre el tema en ESIC. Puedes ver el índice de esta colección aquí.