Lección 4 - Tipos de dato

Curso SQL para principiantes


Como ya se dijo la tónica de este curso va a ser selects y más selects, sin embargo antes de seguir desarrollando las consultas SQL debemos hacer un alto en el camino y hablar de los tipos de dato, asunto que trataremos a continuación, y de los operadores, que veremos en la próxima lección . Es importante entender bien estos conceptos.

¿Qué es un tipo de dato?

Cuando usted durante su infancia jugaba a encajar piezas en un juego similar a este,



una de las cosas que aprendía era diferenciar tipologías de estructuras y encajarlas en una ubicación compatible. A base de prueba y error finalmente lograba completar el rompecabezas, y tras muchas sesiones el juego era trivial y su ejecución evidente, usted había asimilado completamente el concepto que el juego plantea. Podemos decir que usted aprendió a asociar tipos de objetos con tipos de ubicación después de entender que, un tipo de objecto concreto sólo encaja en su tipo de ubicación correspondiente.



Los tipos de dato son como este juego de niños, cualquier dato es de un tipo concreto, como las piezas del juego, y cuando diseñamos una tabla, o un impreso de papel, diseñamos los campos para ubicar un tipo de dato concreto.
Otro aspecto a tener en cuenta es el tamaño del dato, si al niño que juega con las piezas se las cambiamos por piezas de mayor tamaño, pero las ubicaciones las mantenemos igual, le crearemos un conflicto. De pronto lo que funcionaba ya no funciona. El niño ejecuta como antes el procedimiento exitoso, pero por mucho que se esfuerza las piezas no logran encajar. Si el niño es muy bruto y la diferencia de tamaño entre el objeto y su ubicación es suficientemente pequeña, las piezas pueden llegar a encajar, como pasa con los impresos donde, por ejemplo, en un campo diseñado para albergar treinta letras como máximo, siempre hay quien logra escribir treinta y dos, pero en una BD relacional esto es mucho mas cerrado, no se puede calzar un cuarenta en un zapato del treinta y nueve, el SGBD devuelve un error y la operación es rechazada.

Así pues diremos que cualquier dato es de un tipo concreto y tiene un tamaño determinado, en consecuencia cuando diseñamos una tabla, diseñaremos sus campos para ubicar un tipo de dato concreto y estableceremos un tamaño máximo para cada campo.

Tipos de dato

Tipo de dato es un concepto propio de la informática, presente en cualquier lenguaje de programación, donde cada entorno de programación tiene su modo particular de definirlos. Los hay muy diversos, clasificados por grupos, definidos por el usuario... pero para lo que aquí nos ocupa vamos a considerar solamente estos cuatro tipos de dato:

  • Cadena (cadena de texto o alfanumérica)
  • Número entero (sin decimales)
  • Número decimal (parte entera + parte decimal)
  • Fecha

Como ya se ha dicho, cada entorno tiene su modo particular de definir los tipos de dato, aunque todos ellos se rigen en mayor o menor medida por un estándar. Veamos como se define cada uno ellos en MySQL:

  • Cadena: VARCHAR(tamaño)
    Las cadenas de texto son de tipo VARCHAR, y su tamaño máximo para un campo concreto se especifica indicando su longitud entre paréntesis. Por ejemplo: Al diseñar la tabla EMPLEADOS, se debe valorar que longitud máxima se establece para el campo NOMBRE, de manera que pueda albergar cualquier nombre de persona que se pueda dar. En el caso de la tabla EMPLEADOS se decidió que como mucho un nombre no sobrepasa las 30 letras o caracteres, de modo que el tipo de dato para este campo se definió como: VARCHAR(30). Es decir, en el campo NOMBRE de la tabla EMPLEADOS se puede guardar cualquier cadena alfanumérica de hasta 30 caracteres. Fíjese que al hablar de tamaño máximo estamos hablando de la ubicación para muchos posibles datos, no del dato en sí.

    Cuando indicamos constantes en una consulta SQL, las cadenas de texto a diferencia de los números, y ahora estamos hablando del dato en sí y no del tipo, siempre se entrecomillarán para indicar al SGBD que se trata de una dato de tipo cadena y no de un dato de tipo número. Esto es muy importante y es necesario que quede bien entendido. Por ejemplo, supongamos que queremos saber ¿qué salario tiene Elena Rubio Cuestas?, un modo de hacerlo es realizar una consulta SQL que filtre por los apellidos, para tal propósito estableceremos una constante alfanumérica en la clausula WHERE exigiendo que sea igual al campo APELLIDOS, y esta deberá ir entrecomillada.

    Código: Seleccionar todo
    select SALARIO
      from EMPLEADOS
     where APELLIDOS 
    = 'Rubio Cuestas'
      


    Fíjese que ahora no hablamos de tamaño máximo, en todo caso podemos hablar del tamaño concreto del dato. En el caso de la constante 'Rubio Cuestas' su tamaño es 13.

    De hecho existen mas tipos de dato para cadenas, cada uno con diferentes prestaciones, pero con el tipo VARCHAR nos sobra por ahora, así que asumiremos que es el único que existe.

  • Número entero INT:
    A diferencia del tipo VARCHAR, donde establecemos el tamaño máximo, para los números enteros existen varios tipos de dato de tamaño fijo, elegiremos uno u otro en función del tamaño máximo que necesitamos establecer. Cuando tratamos números es más correcto hablar de rango que de tamaño, es decir, bajo que rango de valores( máximo y mínimo) podemos operar con ese tipo. Como hicimos con el tipo cadena, nos quedaremos con uno para simplificar: el tipo INT.

    El valor máximo y mínimo que puede alcanzar un número de este tipo es suficientemente alto y bajo como para no preocuparse por ello en el contexto de este curso. Recuerde que a diferencia de las cadenas NO debe entrecomillarse en las Consultas SQL cuando aparezca como constante.

    Ejemplo de número entero: 3467

  • Número decimal FLOAT (coma flotante):
    Para los números decimales también existen varios tipos de dato con diferente rango de valores posibles, la parte entera la separamos por un punto de la parte decimal. Asumiremos que solo existe el tipo FLOAT, con un rango de valores posibles suficientemente amplio. Y como aunque decimal no deja de ser un número, NO debe entrecomillarse en las Consultas SQL.

    Ejemplo de número decimal: 3467.00

  • Fecha: DATE
    El tipo DATE tiene el tamaño apropiado para registrar un dato de: año + mes + día. Existe también el tipo DATATIME, por ejemplo, que además del día registra la hora, y algunos más que no vamos a considerar por ahora.

    Un dato de tipo DATE y/o DATETIME se expresa en forma de cadena con un formato determinado, de modo que quien procesa ese dato sabe cual es el año, el día o el mes en función de la posición que ocupa en la cadena alfanumérica.

    Por ejemplo, tenemos el siguiente dato: 4 de noviembre de 2006, para expresar este dato debemos hacerlo de la siguiente forma: 'aaaammdd' donde aaaa indica cuatro dígitos para el año, mm dos dígitos para el mes y dd dos dígitos para el día. De modo que el 4 de noviembre de 2006 lo expresaríamos así: '20061104'.
    Al expresarse en forma de cadena, o si usted quiere, como una cadena con un formato concreto y sus posibles valores restringidos a una fecha valida, debe siempre entrecomillarse cuando aparece como constante en una consulta SQL.

    Existen otros modos de trabajar con datos de tipo DATE, pero por el momento supondremos que es el único modo que tenemos.

Ejemplo
Para finalizar la lección echemos un vistazo a los tipos de dato, bajo la columna titulada Type, de cada uno de los campos de la de la tabla EMPLEADOS:


No confundir int(10) con número entero de 10 dígitos, el 10 entre paréntesis no expresa el rango de valores posibles, esto es una particularidad de MySQL y tiene que ver con el formato del número para impresión y no con su tamaño, como ya se dijo el rango de valores para el tipo INT es fijo y va implícito en el propio tipo de dato.

* * *

Resumen
Cualquier dato es de un tipo concreto y tiene un tamaño determinado, en consecuencia cuando diseñamos una tabla, diseñaremos sus campos para ubicar un tipo de dato concreto y estableceremos un tamaño máximo para cada campo.

El tamaño máximo o rango de valores puede ir implícito en el propio tipo de dato, como es el caso del tipo INT, o bien debe especificarse en tiempo de diseño como ocurre con el tipo VARCHAR.

Los datos de tipo VARCHAR o cadenas de texto van siempre entrecomillados, a diferencia de los números(INT y FLOAT).

Las fechas o datos de tipo DATE, se expresan en forma de cadena con un formato determinado, concretamente: 'aaaammdd' donde aaaa es el año, mm es el mes y dd es el día. Al ser cadenas deben siempre entrecomillarse.

* * *

Ejercicio 1
Defina de que tipo de dato crearía los campos, y su tamaño mínimo si se tercia, para albergar los siguientes datos:

  • 'Hola mundo'

  • 9.36

  • 4564

  • 'Esto es un ejercicio de tipos de datos'

  • 8 de enero de 1998

Ejercicio 2
Formatee en una cadena, según se ha visto en esta lección, las siguientes fechas.

  • 23 de agosto de 1789

  • 8 de enero de 1998
* * *




    Lección 3 - Consultas II (SQL SELECT FROM WHERE)
  • Lección 5 - Operadores (SQL WHERE)

Creative Commons License Creative Commons License

Este curso está sujeto a la licencia Reconocimiento-NoComercial-SinObraDerivada 3.0 de Creative Commons. Usted puede copiarla, distribuirla y comunicarla públicamente siempre que especifique su autor y deletesql.com; no la utilice para fines comerciales; y no haga con ella obra derivada. Puede usted consultar la licencia completa aquí.




Volver a Curso SQL desde cero

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados