类型值 | 类型描述 |
MYSQL_TYPE_TINY | TINYINT字段 |
MYSQL_TYPE_SHORT | SMALLINT字段 |
MYSQL_TYPE_LONG | INTEGER或INT字段 |
MYSQL_TYPE_INT24 | MEDIUMINT字段 |
MYSQL_TYPE_LONGLONG | BIGINT字段 |
MYSQL_TYPE_DECIMAL | DECIMAL或NUMERIC字段 |
MYSQL_TYPE_NEWDECIMAL | 精度数学DECIMAL或NUMERIC |
MYSQL_TYPE_FLOAT | FLOAT字段 |
MYSQL_TYPE_DOUBLE | DOUBLE或REAL字段 |
MYSQL_TYPE_BIT | BIT字段 |
MYSQL_TYPE_TIMESTAMP | TIMESTAMP字段 |
MYSQL_TYPE_DATE | DATE字段 |
MYSQL_TYPE_TIME | TIME字段 |
MYSQL_TYPE_DATETIME | DATETIME字段 |
MYSQL_TYPE_YEAR | YEAR字段 |
MYSQL_TYPE_STRING | CHAR字段 |
MYSQL_TYPE_VAR_STRING | VARCHAR字段 |
MYSQL_TYPE_BLOB | BLOB或TEXT字段(使用max_length来确定最大长度) |
MYSQL_TYPE_SET | SET字段 |
MYSQL_TYPE_ENUM | ENUM字段 |
MYSQL_TYPE_GEOMETRY | Spatial字段 |
MYSQL_TYPE_NULL | NULL-type字段 |
MYSQL_TYPE_CHAR | 不再重视,用MYSQL_TYPE_TINY取代 |
typedef struct st_mysql_field {
char *name; /* Name of column */
char *table; /* Table of column if column was a field */
char *org_table; /* Org table name if table was an alias */
char *db; /* Database for table */
char *def; /* Default value (set by mysql_list_fields) */
unsigned long length; /* Width of column */
unsigned long max_length; /* Max width of selected set */
unsigned int flags; /* Div flags */
unsigned int decimals; /* Number of decimals in field */
enum enum_field_types type; /* Type of field. Se mysql_com.h for types */
} MYSQL_FIELD;
数值类型存储需求
列类型 | 存储需求 |
TINYINT | 1个字节 |
SMALLINT | 2个字节 |
MEDIUMINT | 3个字节 |
INT, INTEGER | 4个字节 |
BIGINT | 8个字节 |
FLOAT(p) | 如果0 <= p <= 24为4个字节, 如果25 <= p <= 53为8个字节 |
FLOAT | 4个字节 |
DOUBLE [PRECISION], item REAL | 8个字节 |
DECIMAL(M,D), NUMERIC(M,D) | 变长;参见下面的讨论 |
BIT(M) | 大约(M+7)/8个字节 |
字符串类型的存储需求
列类型 | 存储需求 |
CHAR(M) | M个字节,0 <= M <= 255 |
VARCHAR(M) | L+1个字节,其中L <= M 且0 <= M <= 65535(参见下面的注释) |
BINARY(M) | M个字节,0 <= M <= 255 |
VARBINARY(M) | L+1个字节,其中L <= M 且0 <= M <= 255 |
TINYBLOB, TINYTEXT | L+1个字节,其中L < 28 |
BLOB, TEXT | L+2个字节,其中L < 216 |
MEDIUMBLOB, MEDIUMTEXT | L+3个字节,其中L < 224 |
LONGBLOB, LONGTEXT | L+4个字节,其中L < 232 |
ENUM('value1','value2',...) | 1或2个字节,取决于枚举值的个数(最多65,535个值) |
SET('value1','value2',...) | 1、2、3、4或者8个字节,取决于set成员的数目(最多64个成员) |