English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Las siguientes secciones describen los tipos de datos que admite MySQL.
MySQL admite tres tipos de tipos de datos:las cadenas,los númerosyla fecha/el tiempolos tipos de datos.
Los tipos de datos de cadena se utilizan comúnmente para almacenar nombres, direcciones, descripciones o cualquier valor que contenga letras y números, incluyendo datos binarios, como imágenes o archivos de audio.
el tipo de datos CHAR permite almacenar hasta255caracteres de longitud fija. Mientras que el tipo de datos VARCHAR permite almacenar hasta65535caracteres de longitud variable de cadena (en MySQL 5.0.3Antes se limitaba a255caracteres).
La longitud declarada de CHAR y VARCHAR indica el número máximo de caracteres que se desea almacenar. Por ejemplo, CHAR de5) puede contener5caracteres.
La principal diferencia entre los tipos de datos CHAR y VARCHAR es la forma en que almacenan los datos. Cuando se almacena un valor en una columna CHAR, se rellena con espacios en blanco a la derecha hasta la longitud especificada, pero cuando se almacena un valor en una columna VARCHAR no se realiza este relleno. Esto significa que si se almacena el valor "ab", un CHAR de 2 caracteres puede contener4) almacenado en VARCHAR(4) si el valor se almacena en la columna 'ab', mientras que el mismo valor se almacenará como 'ab'.
Consejo:/Código de área. VARCHAR puede ahorrar espacio para valores de longitud variable, como nombres o títulos.
Nota:La longitud máxima válida de VARCHAR está limitada por el tamaño máximo de la fila (65535Bytes, compartidos por todas las columnas) y los límites del conjunto de caracteres utilizado.
Los tipos BINARY y VARBINARY son similares a CHAR y VARCHAR, pero la diferencia está en que contienen cadenas de caracteres binarios en lugar de cadenas de caracteres no binarios. La longitud máxima permitida de BINARY y VARBINARY es la misma que la de CHAR y VARCHAR, pero la diferencia radica en que BINARY y VARBINARY tienen una longitud en bytes en lugar de en caracteres.
Los tipos de datos TEXT y BLOB se utilizan específicamente para almacenar grandes cantidades de datos. El tipo de datos TEXT se utiliza para almacenar cadenas largas, como descripciones, comentarios de blogs, etc.
BLOB es un objeto grande binario que puede contener una cantidad variable de datos. Esta función es especialmente útil cuando necesita almacenar archivos de medios binarios en la base de datos (por ejemplo, imágenes o archivos de audio).
Los cuatro tipos de BLOB son TINYBLOB, BLOB, MEDIUMBLOB y LONGBLOB. La única diferencia entre ellos es la longitud máxima de los valores que pueden contener. Del mismo modo, estos cuatro tipos de texto son TINYTEXT, TEXT, MEDIUMTEXT y LONGTEXT. Estos corresponden a los cuatro tipos de BLOB, con la misma longitud máxima y requisitos de almacenamiento.
La siguiente tabla enumera los tipos de datos de cadenas de caracteres de MySQL que aparecen en pares. Independientemente de si el tipo es binario o no binario, la longitud máxima se expresa en bytes.
Tipos de datos binarios | Tipos de datos no binarios | Longitud máxima |
---|---|---|
BINARY | CHAR | 255 |
VARBINARY | VARCHAR | 65535 |
TINYBLOB | TINYTEXT | 255 |
BLOB | TEXT | 65535 |
MEDIUMBLOB | MEDIUMTEXT | 16777215 |
LONGBLOB | LONGTEXT | 4294967295 |
Nota:Para los tipos de datos de cadenas de caracteres no binarias, el valor de longitud de la columna se conoce generalmente como número de caracteres en lugar de número de bytes. Esto significa que el número máximo de caracteres de una cadena que contiene caracteres de múltiples bytes es menor.
El tipo de datos ENUM le permite especificar una lista de valores posibles que se pueden almacenar en una columna. Por ejemplo, especificar ENUM de género ('male', 'female') NOT Una columna NULL puede tener los siguientes valores: '' (vacío), 'male' o 'female'. Puede especificar como máximo65535valores diferentes. Si inserta un valor no válido en una columna ENUM (es decir, una cadena de caracteres que no existe en la lista de valores permitidos), se insertará una cadena de caracteres vacía.
El tipo de datos SET permite especificar la lista de valores que se deben insertar en la columna, como una enumeración. Sin embargo, a diferencia del tipo de datos ENUM, que permite seleccionar solo un valor, el tipo de datos SET permite seleccionar múltiples valores de la lista especificada.
Por ejemplo, una columna especificada como option SET('one', 'two') NOT NULL puede almacenar los siguientes valores: "one", 'two' o 'one,two'. Los múltiples valores separados por comas (,) pueden especificarse. Para los tipos de datos SET, se puede especificar como máximo64valores diferentes.
Los tipos de datos numéricos se utilizan generalmente para almacenar precios, salarios y otros datos.
MySQL admite los tipos de datos enteros estándar de SQL INTEGER (o INT) y SMALLINT. MySQL también admite los tipos de datos enteros TINYINT, MEDIUMINT y BIGINT como extensión del estándar SQL. La siguiente tabla muestra el rango de cada tipo de datos entero.
tipos de datos | rango (con signo) | rango (sin signo) |
---|---|---|
TINYINT | -128 a 127 | De 0 a |
SMALLINT | -32768 a 32767 | De 0 a |
MEDIUMINT | -8388608 a 8388607 | De 0 a |
INT | -2147483648 a 2147483647 | De 0 a |
BIGINT | -9223372036854775808 a 9223372036854775807 | De 0 a |
Los tipos de datos numéricos tienen las propiedades adicionales de SIGNED (con signo) y UNSIGNED (sin signo). Los tipos de datos numéricos se consideran por defecto con signo, con un rango desde negativo hasta positivo. Añadir la propiedad UNSIGNED a una columna numérica no permite el uso de números negativos y desplaza el rango, haciendo que el valor mínimo comience en 0 en lugar de en un número negativo.
Los tipos de datos DECIMAL y NUMERIC se utilizan para almacenar valores numéricos precisos. Estos tipos de datos también se denominan tipos de datos "punto fijo" o "valores precisos", y se utilizan generalmente cuando se necesita mantener una precisión exacta, como almacenar datos monetarios como precios de productos. En MySQL, NUMERIC se implementa como DECIMAL.
Al declarar una columna DECIMAL o NUMERIC, se puede especificar la precisión y el número de decimales, por ejemplo DECIMAL(P, S) o NUMERIC(P, S), donde P es la precisión y S es el número de decimales. La precisión especificada puede almacenar en la columna el número máximo de dígitos (incluidos los dígitos después del punto decimal), mientras que el número de decimales indica el número de dígitos que se pueden almacenar después del punto decimal. Por ejemplo, el precio DECIMAL(62)columna puede almacenar cualquier valor con seis dígitos y dos decimales, es decir-9999.99a9999.99entre los valores.
Los tipos FLOAT y DOUBLE representan valores de datos numéricos aproximados. Por eso también se denominan tipos “flotantes” o “aproximados”
La sintaxis admitida por MySQL es FLOAT (M, D) o DOUBLE PRECISION (M, D). 73,-9999.999。 MySQL redondea los valores al almacenarlos, por lo que si se muestra9999.0009INSERT FLOAT (73“) columna9999.001。
Nota:La comparación de valores de coma flotante puede causar problemas porque son valores aproximados y no precisos. Por lo tanto, para almacenar valores que se pueden comparar, como price, salary, etc., utilice el tipo de datos DECIMAL.
Los tipos de datos de fecha y hora se utilizan comúnmente para almacenar datos, como la fecha de nacimiento, la fecha de empleo, la fecha y hora de creación o actualización de registros en una tabla, etc.
El tipo de datos DATE se utiliza para almacenar fechas. MySQL DATE almacena y recupera valores en el formato 'YYYY-MM-DD' para almacenar y recuperar valores, donde YYYY, MM y DD son las partes de año, mes y día del tiempo. El rango de soporte es “ 1000-01-01” hasta “ 9999-12-31”。
El tipo de datos TIME se puede utilizar para almacenar días o intervalos de tiempo. MySQL TIME almacena y recupera valores en el formato 'HH:MM:SS', donde HH, MM y SS son las partes de hora, minutos y segundos del tiempo (o el formato 'HHH:MM:SS' para horas grandes). El rango de valores de TIME admitidos es '-838:59:59” hasta “838:59:59”。
La parte de las horas puede ser muy grande, porque en MySQL, el tipo TIME no solo se puede usar para almacenar la hora de un día (debe ser menor que24horas), y también se puede utilizar para el tiempo transcurrido o el intervalo de tiempo entre dos eventos (puede ser mucho mayor que24horas, incluso negativas).
Nota:Por defecto, los valores válidos pero fuera del rango de TIME se recortarán al extremo más cercano del rango. Por ejemplo, “ 860:00:00” se convertirá a “ 838:59:59”。Los valores de tiempo no válidos se convertirán a “ 00:00:00”.
DATETIME y TIMESTAMP se utilizan para expresar 'YYYY-MM-DD HH:MM:SS' para almacenar valores combinados de fecha y hora. Estos tipos de datos se utilizan comúnmente para almacenar fechas y horas en el momento de la entrega de pedidos, al crear o modificar una fila en una tabla, etc.
Estos dos tipos de datos son similares en muchos aspectos, pero también tienen algunas diferencias. El tipo de datos DATETIME admite un rango de '1000-01-01 00:00:00' hasta '9999-12-31 23:59:59Sin embargo, el rango de los timestamps es '1970-01-01 00:00:01' UTC a'2038-01-19 03:14:07UTC.
TIMESTAMP y DATETIME también tienen propiedades de inicialización y actualización automáticas especiales, pero estas propiedades no se aplican a MySQL 5.6.5DATETIMEM anterior.
Nota: MySQL convierte el valor de TIMESTAMP desde la zona horaria actual a UTC para su almacenamiento, y luego desde UTC a la zona horaria actual para su recuperación.
El tipo de datos YEAR se utiliza para almacenar valores de año en formato YYYY.
Se puede declarar como YEAR o YEAR(4) El rango de valores de YEAR admitidos es1901a2155. Los valores de YEAR no válidos se convertirán a 0000.
Nota:Las versiones más antiguas de MySQL aún permiten usar para almacenar valores de año de dos dígitos YEAR(2) pero ahora se ha desechado y en MySQL 5.7.5Se ha eliminado el soporte para él en chino.