English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La definición de tipos de datos de campos en MySQL es muy importante para la optimización de su base de datos.
MySQL admite varios tipos de datos, que se pueden dividir大致 en tres categorías: numéricos, fechas/Tipos de datos de tiempo y cadenas (caracteres).
MySQL admite todos los tipos de datos numéricos estándar de SQL.
Estos tipos incluyen tipos de datos numéricos estrictos (INTEGER, SMALLINT, DECIMAL y NUMERIC), así como tipos de datos numéricos aproximados (FLOAT, REAL y DOUBLE PRECISION).
La palabra clave INT es sinónimo de INTEGER, la palabra clave DEC es sinónimo de DECIMAL.
El tipo BIT guarda valores de campos de bits y admite tablas MyISAM, MEMORY, InnoDB y BDB.
Como extensión del estándar SQL, MySQL también admite tipos de enteros TINYINT, MEDIUMINT y BIGINT. La siguiente tabla muestra el almacenamiento y el rango necesario para cada tipo de entero.
tipos | tamaño | rango (con signo) | rango (sin signo) | usos |
---|---|---|---|---|
TINYINT | 1 byte | (-128,127) | (0,255) | valor entero pequeño |
SMALLINT | 2 bytes | (-32 768,32 767) | (0,65 535) | valor entero grande |
MEDIUMINT | 3 bytes | (-8 388 608,8 388 607) | (0,16 777 215) | valor entero grande |
INT o INTEGER | 4 bytes | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | valor entero grande |
BIGINT | 8 bytes | (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | valor entero极大 |
FLOAT | 4 bytes | (-3.402 823 466 E+38,-1.175 494 351 E-38) 0, (1.175 494 351 E-38,3.402 823 466 351 E+38) | 0, (1.175 494 351 E-38,3.402 823 466 E+38) | punto flotante simple valores de coma flotante |
DOUBLE | 8 bytes | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308) 0, (2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0, (2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | doble precisión valores de coma flotante |
DECIMAL | para DECIMAL(M,D), si M>D, es M+2de lo contrario es D+2 | depende de los valores de M y D | depende de los valores de M y D | números decimales |
Los tipos de fecha y hora que representan valores de tiempo son DATETIME, DATE, TIMESTAMP, TIME y YEAR.
Cada tipo de tiempo tiene un rango de valores válidos y un valor "cero", que se utiliza cuando se especifica un valor no válido que MySQL no puede representar.
El tipo TIMESTAMP tiene características de actualización automática exclusivas, que se describirán más adelante.
tipos | tamaño (bytes) | rango | formato | usos |
---|---|---|---|---|
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | valor de fecha |
TIME | 3 | '-838:59:59'/'838:59:59' | HH:MM:SS | valor de tiempo o duración |
YEAR | 1 | 1901/2155 | YYYY | valor de año |
DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | valores mixtos de fecha y hora |
TIMESTAMP | 4 | 1970-01-01 00:00:00/2038 la hora de finalización es el 2147483647 segundo, tiempo de Beijing 2038-1-19 11:14:07,tiempo estándar de Greenwich 2038año1mes19día, medianoche 03:14:07 | YYYYMMDD HHMMSS | valores mixtos de fecha y hora, marca de tiempo |
los tipos de cadena incluyen CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM y SET. Esta sección describe cómo funcionan estos tipos y cómo se utilizan en las consultas.
tipos | tamaño | usos |
---|---|---|
CHAR | 0-255 bytes | cadena de longitud fija |
VARCHAR | 0-65535 bytes | cadena de longitud variable |
TINYBLOB | 0-255 bytes | no excede 255 cadena binaria de un caracter |
TINYTEXT | 0-255 bytes | cadena de texto corta |
BLOB | 0-65 535 bytes | texto largo en forma binaria |
TEXT | 0-65 535 bytes | texto largo |
MEDIUMBLOB | 0-16 777 215 bytes | texto de longitud media en forma binaria |
MEDIUMTEXT | 0-16 777 215 bytes | texto de longitud media |
LONGBLOB | 0-4 294 967 295 bytes | Datos de texto masivos en forma binaria |
LONGTEXT | 0-4 294 967 295 bytes | Datos de texto masivos |
Nota:char(n) y varchar(n) entre paréntesis, n representa la cantidad de caracteres, no la cantidad de bytes, por ejemplo, CHAR(30) puede almacenarse 30 caracteres.
CHAR y VARCHAR son similares, pero tienen diferentes formas de guardar y recuperar. Diferencian en la longitud máxima y si se conservan los espacios en blanco al final, entre otros. No se realiza una conversión de mayúsculas y minúsculas durante el almacenamiento o la recuperación.
BINARY y VARBINARY son similares a CHAR y VARCHAR, pero contienen cadenas binarias en lugar de cadenas no binarias. Es decir, contienen cadenas de bytes en lugar de cadenas de caracteres. Esto significa que no tienen conjunto de caracteres y la clasificación y comparación se basan en el valor numérico de los bytes del valor de la columna.
BLOB es un objeto de gran tamaño binario, que puede contener una cantidad variable de datos. Hay 4 Tipos BLOB: TINYBLOB, BLOB, MEDIUMBLOB y LONGBLOB. Diferencian entre rangos de almacenamiento diferentes.
Hay 4 Tipos TEXT: TINYTEXT, TEXT, MEDIUMTEXT y LONGTEXT. Los correspondientes a esto 4 Tipos BLOB, la longitud máxima que pueden almacenar es diferente, y se puede elegir según las circunstancias reales.