Anda di halaman 1dari 8

Tema 7

MySQL. Tipos de Datos

INDICE

Introduccin............................................................................................................... 1 Tipos de columna numricos ...................................................................................... 1 Tipos de columnas de cadena ..................................................................................... 4 Tipos de columna de fecha y hora .............................................................................. 7

Introduccin
En este tema exploraremos los tipos de datos disponibles y aprenderemos a utilizarlos. Para usar MySQL de forma efectiva es importante comprender los distintos bloques de construccin disponibles. Existen tres tipos fundamentales de columnas en MySQL: numricas, de cadena y de fecha.

Aunque existen muchos otros tipos especficos de columna, estos se pueden clasificar dentro de los tres tipos anteriores.

Por regla general, debera seleccionar el tipo de columna de menor tamao, ya que de esta forma se ahorra espacio y se logra una mayor velocidad de acceso y actualizacin. Sin embargo, si se selecciona un tipo de columna demasiado pequeo puede dar como resultado la perdida de datos o que se recorten al introducirlos. Por lo tanto, hay que escoger el tipo que englobe todos los posibles casos.

Tipos de columna numricos


Las columnas numricas estn diseadas para almacenar todo tipo de datos numricos, como precios, edades o cantidades. Existen dos tipos principales de tipos numricos: tipos enteros (nmeros enteros sin decimales ni partes fraccionales) y tipos de coma flotante.

Todos los tipos numricos permiten dos opciones:

UNSIGNED no permite el uso de nmeros negativos (extiende el rango positivo del tipo de los tipos enteros).

ZEROFILL rellena el valor con ceros en lugar de los espacios habituales, adems de asignar el tipo UNSIGNED de manera predeterminada.

Por ejemplo:

mysql> CREATE TABLE test1 (id TINYINT ZEROFILL); mysql> INSERT INTO test1 VALUES (3); mysql> INSERT INTO test1 VALUES (127); mysql> INSERT INTO test1 VALUES (-1); mysql> INSERT INTO test1 VALUES (256); mysql> SELECT * from test1;

Tema 7 TIPOS NUMRICOS

MySQL. Tipos de Datos

Tema 7

MySQL. Tipos de Datos

Por ejemplo:

mysql> CREATE TABLE test2 (id TINYINT (10)); mysql> INSERT INTO test2 (id) VALUES (100000000); mysql> SELECT id FROM test2;

La especificacin del ancho se suele utilizar con zerofill porque resulta sencillo ver los resultados:

mysql > CREATE TABLE test3 (id INT (3) ZEROFILL , id2 INT ZEROFILL); mysql> INSERT INTO test3 ( id , id2 ) VALUES (22,22) ; mysql> SELECT FROM test3 ;

Tema 7

MySQL. Tipos de Datos

Tipos de columnas de cadena


Las columnas de cadena se utilizan para almacenar todo tipo de datos compuestos de caracteres como nombres, direcciones o artculos de peridico.

Tipos de CADENAS

Tema 7

MySQL. Tipos de Datos

Utilizar las siguientes directrices a la hora de decidir que tipo de cadena seleccionar:

No almacenar nunca nmeros en columnas de cadena. Resulta mucho ms eficaz hacerlo en columnas de tipo numrico. Cada digito incluido en una cadena ocupa un byte de espacio, en contraposicin a un campo numrico, que los almacena en bits. As mismo, la ordenacin de nmeros almacenados en columnas de cadena puede generar resultados incoherentes. Para lograr mayor velocidad, utilice columnas fijas, como CHAR.

Para ahorrar espacio, utilice columnas dinmicas, como VARCHAR.

Para limitar los contenidos de una columna a una opcin, utilice ENUM.

Para permitir ms de una entrada en una columna, seleccione SET.

Si desea buscar texto sin discriminar entre maysculas y minsculas, utilice TEXT.

Si desea buscar texto discriminando entre maysculas y minsculas, utilice BLOB.

De manera predeterminada, las bsquedas sobre CHAR y VARCHAR se realizan sin discriminar entre maysculas y minsculas:

Por ejemplo:

mysql> CREATE TABLE test4 (nombre CHAR (10)); mysql> INSERT INTO test4 (nombre) VALUES (Noski); mysql> SELECT nombre FROM test4 where NOMBRE = NOSKI; A menos que utilice la palabra clave BINARY.

Por ejemplo:

mysql> ALTER TABLE test4 CHANGE nombre nombre CHAR(10) BINARY; mysql> SELECT nombre FROM test4 WHERE nombre = noski ; NOTA: La realizacin de bsquedas sobre campos CHAR y VARCHAR sin que se discrimine entre maysculas y minsculas no suele ser habitual en la mayor parte de los DBMS, por lo que debe tener cuidado si esta realizando el trnsito a MySQL desde otro DBMS.

La palabra clave NATIONAL solo se incluye por razones de compatibilidad con SQL ANSI. (ANSI equivale a instituto americano de normalizacin y han desarrollado un estndar para SQL. La mayor parte de los sistemas de

Tema 7

MySQL. Tipos de Datos

administracin de bases de datos, DBMS, se adhieren a este estndar en algn grado; son pocos los que lo hacen de forma completa y gran parte de ellos incluyen de elementos propios.) Indica al DBMS que utilice el conjunto de caracteres predeterminado de MySQL (que por otra parte es el estndar de MySQL).

NOTA: Si se utiliza CHAR en lugar de VARCHAR, el resultado ser tablas de mayor tamao, pero por regla general ms rpidas en cuanto a su procesamiento ya que MySQL sabe donde comienza cada registro de manera exacta.

Las columnas ENUM incluyen algunas funciones especiales. No permite agregar valores no vlidos.

mysql> CREATE TABLE test5 (bool ENUM(true, false)); mysql> INSERT INTO test5 (bool) VALUES (true); mysql> INSERT INTO test5 (bool) VALUES ( troo); mysql> SELECT bool from test5;

Tambin puede realizar consultas sobre campos enumerados en funcin de sus ndices (el primer valor comienza en 1). En el ejemplo anterior, trae se reflejara como un ndice 1, false como un ndice 2, NULL como un ndice NULL, y cualquier otro valor () como ndice 0.

Por ejemplo:

mysql> SELECT * FROM test5 WHERE bool=0; mysql> SELECT * FROM test5 WHERE bool=1;

NOTA: LOAD DATA no permite agregar registros a un campo enumerado utilizando el ndice porque trata todas las entradas como cadenas

Los campos enumerados se ordenan por los valores de los ndices, no de forma alfabtica. En otras palabras se ordenan en el orden en el que se definen los valores.

mysql> SELECT FROM test 5 ORDER BY bool ASC; Los conjuntos funcionan de forma similar a los campos enumerados:

mysql> CREATE TABLE test6 (fruta SET(manzana,mango,pera,banana)); mysql> INSERT INTO test6 VALUES ( banana ) ; mysql> INSERT INTO test6 VALUES ( mango) ; mysql> INSERT INTO test6 VALUES ( pera) ; La diferencia de un tipo SET es que permite agregar varias instancias:

mysql> INSERT INTO test6 VALUES ( manzana,mango ) ; mysql> SELECT * FROM test6; Como en el caso de las enumeraciones, la ordenacin se realiza por el ndice:

mysql> SELECT * FROM test6 ORDER BY fruta; Fjese en que el orden de los elementos es siempre igual al especificado por la instruccin CREATE TABLE. 6

Tema 7

MySQL. Tipos de Datos

Tipos de columna de fecha y hora


Los tipos de columna de fecha y hora estn diseados para trabajar con las necesidades especiales que exigen los datos de tipo temporal y se puede utilizar para almacenar datos tales como la hora del da o fechas de nacimiento.

TIPOS DE FECHA

El tipo de columna TIMESTAMP se puede visualizar de diferentes formas como se muestra a continuacin.

TIPOS TIMESTAMP

ADVERTENCIA: Las funciones, a excepcin de UNIX TIMESTAMP() operan sobre el valor de representacin. Por lo tanto, la funcin DAYOFWEEK() no funcionara con un tipo TIMESTAMP (2 ) o TIMESTAMP ( 4 ) .

MySQL acepta diferentes formatos de fecha. Puede sustituir el guin (-) y los dos puntos (:) por cualquier otro carcter de puntuacin sin efectos sobre la validez.

Por ejemplo:

Tema 7 mysql> CREATE TABLE tt ( ts DATETIME); mysql> INSERT INTO tt (ts) VALUES ( '1999+11+11 23-24 ' );

MySQL. Tipos de Datos

Puede incluso sustituir el espacio por otro carcter. El siguiente ejemplo lo sustituye por signos de igual:

mysql> INSERT INTO tt ( ts ) VALUES ( 1999+12=12-12 12' );

Anda mungkin juga menyukai