[SGBD] Conceptos básicos del lenguaje SQL (II)

1. Expresiones y operadores

Una expresión es un conjunto de operandos conectados entre sí por un conjunto de operadores, que da como resultado un valor del mismo o distinto tipo que los operandos, dependiendo de la naturaleza de los operadores. La mayoría de estos son binarios, es decir, conectan a dos operandos; el resto son unitarios (solo afectan a un operando). Los operadores de SQL pueden clasificarse de la siguiente manera:

  • Aritméticos: suma (+), resta (), multiplicación (*) y división (/).
  • De comparación: igual (=), menor (<), menor o igual (<=), mayor (>), mayor o igual (>=) y distinto (<>).
  • Lógicos o booleanos: AND (operador Y), OR (operador O) y NOT (operador NO).
  • Otros operadores: de pertenencia a un conjunto (BETWEEN, IN), comparación de cadenas de caracteres (LIKE) y concatenación de cadenas de caracteres (||).

Como los últimos mencionados aportan una gran utilidad a la hora de hacer consultas, los desglosamos detenidamente.

Operador BETWEEN: nos permite comprobar si un valor o expresión está comprendido o no dentro de un rango de valores expresado mediante un valor inferior y otro superior. Su formato es el siguiente:

<Expresión> [NOT] BETWEEN (Valor inferior AND Valor superior)

Por ejemplo, si queremos obtener los atributos SALARIO comprendidos entre 1000 y 2000 euros, escribiríamos:

Operador IN: nos permite comprobar si un valor o expresión pertenece o no a un conjunto expresado mediante una lista de valores separados por comas. Su formato es el siguiente:

<Expresion> [NOT] IN (Lista de valores separados por comas)

Cabe destacar que el resultado de este operador es VERDADERO o FALSO. Puede utilizarse tanto con valores numéricos, alfanuméricos y cadena de caracteres. Por ejemplo, si queremos si el atributo NIVEL tiene como valor 1, 3 o 5 podemos escribir:

O si necesitamos seleccionar el atributo OFICIO de un EMPLEADO que no es ni vendedor ni administrativo ni técnico, podemos escribir:

Operador LIKE: nos permite hacer una selección de tuplas que cumplan ciertas reglas en sus cadenas de caracteres, como seleccionar la tupla EMPLEADOS cuyo apellido empiece por D. Para realizar estas consultas, SQL nos ofrece el operador LIKE usando dos comodines para afinar más aún nuestra consulta. El tanto por ciento (% ) lo usaremos para representar uno o más caracteres de una cadena, mientras que el guión bajo (_) lo usaremos para representar la posición de un carácter cualquiera. Por ejemplo, si necesitamos seleccionar las tuplas EMPLEADOS cuyo Apellido empiece por D, escribiríamos:

O bien, si necesitamos seleccionar los Apellidos que empiecen por D y tenga cinco letras:

En caso de utilizar LIKE sin comodín, este se comportará como el operador de igualdad (=). Es decir:

devolvería verdadero siempre y cuando el campo Apellido fuese Varchar2 y su contenido fuese ‘DELGADO’. Los tipos de datos lo veremos en el siguiente apartado.

Operador ||: nos permite concatenar cadena de caracteres que inicialmente aparecen en dos tuplas distintas. Por ejemplo, si queremos que NOMBRE y APELLIDOS salgan juntos, deberíamos escribir:

2. Tipos de datos
2.1 Tipos de datos numéricos

NUMBER es el único tipo propio de Oracle para el manejo de números, tanto enteros como reales, con o sin signo. Encontramos varios formatos:

  • NUMBER: almacena números reales en coma flotante, con mantisa y exponente, con 38 dígitos de precisión.
  • NUMBER (L): almacena números enteros hasta un máximo de L cifras de longitud (por ejemplo, NUMBER (3) podrá almacenar desde el 0 hasta el 999).
  • NUMBER (L,D): almacena números reales en formato decimal de longitud total L cifras, incluyendo la parte entera y la parte decimal con D decimales (por ejemplo, NUMBER (7,2) podrá almacenar un número como 12345.67). Si solo deseamos especificar la cantidad de decimales y no la longitud total, escribiremos NUMBER (*,D).
2.2 Tipos de datos Carácter y Cadena de Caracteres
  • CHAR: permite almacenar cadenas de caracteres de longitud fija, entre 1 y 2000 caracteres. la longitud de la cadena se define entre paréntesis; si se omite, el valor es 1. En caso de introducir una cadena de menor longitud de la definida, se rellena con blancas a la derecha hasta que se complete; en caso de introducir una cadena mayor, dará error y no se introducirá ningún valor en la columna.
  • VARCHAR2: almacena cadenas de caracteres de longitud variable, entre 1 y 4000 caracteres. La longitud máxima de la cadena se define entre paréntesis y no hay valor por defecto, es decir, siempre hay que especificarlo. Si se introduce una cadena de menor longitud, se almacena dicha cadena sin rellenar con blancos o algún otro carácter; si se introduce una de cadena mayor, dará error y no se introducirá ningún valor en la columna.
2.3 Tipos de datos de fecha

El tipo de datos DATE almacena el siglo, el año, el mes, el día, las horas, los minutos y los segundos. Este tipo de dato se almacena en campos de longitud fija de siete bytes, uno por cada elemento de la enumeración anterior.

3. Comentarios

Un comentario en programación es una anotación que se puede escribir en cualquier parte del código para recordarnos que significan ciertas expresiones, que hace cierto conjunto de sentencias, etc. y que no tienen ningún efecto sobre la ejecución del código. En un script de SQL podemos incluirlos de la siguiente manera:

  • Este es un comentario hasta final de línea.
  • || Esta es otra variante de comentario hasta final de línea.
  • /* Y esto es un
    comentario multilínea */

28 años | Entrenador de fútbol | Informático&Web Design | Linuxero | Componente de @chirigotaninos | Creador de http://todobytes.es & http://sudosu.es | Apasionado de la historia

Facebook Twitter Google+ YouTube 

Related posts

2 Thoughts to “[SGBD] Conceptos básicos del lenguaje SQL (II)”

  1. Un muy buen artículo, pero tengo dos inquietudes si usted tiene a bien contestar, por favor:

    -En el caso del comodín de porcentaje, ¿se puede sustituir por asterisco? o mejor dicho ¿El asterisco es un comodín en base de datos Oracle?

    -Usted menciona que las fechas se almacenan como campos fijos de 7 bytes pero si enumeramos:
    1.-año
    2.-mes
    3.-día
    4.-horas
    5.-minutos
    6.-segundos
    ¿Y el campo número siete?
    ¿día de la semana acaso?

    El diseño de base de datos es muy importante porque mucha gente trabaja a partir de lo que uno haya aportado al proyecto y que uno deje bien documentado.

    Gracias por compartir conocimeinto, ¡agradecido!

    1. ¡Hola Jimmy, gracias por comentar! Respondo tus preguntas:

      – En el caso de los caracteres comodín, Oracle solo contempla el uso de % y _ (porcentaje y guión bajo) para las consultas y más específicamente con el operador LIKE. Imagino que la pregunta del asterisco viene porque es el carácter que se suele usar en búsquedas (MS-DOS o LINUX, por ejemplo). En el caso de SQL, Oracle utiliza el % para ello. Te dejo el enlace a la documentación oficial sobre el tema de comodines o WILDCARDS: https://docs.oracle.com/cd/F49540_01/DOC/inter.815/a67843/cqspcl.htm

      – Con respecto al almacén de fechas, la enumeración correcta de esos campos fijos de 7 bytes sería:
      1. Siglo
      2. Año
      3. Mes
      4. Día
      5. Hora
      6. Minuto
      7. Segundo

      En la propia entrada lo comentamos, pero es verdad que no queda del todo claro la enumeración. Lo corrijo.

      ¡Muchas gracias!

Leave a Comment