关于MySql里的字段

类型值

类型描述

MYSQL_TYPE_TINY

TINYINT字段

MYSQL_TYPE_SHORT

SMALLINT字段

MYSQL_TYPE_LONG

INTEGER或INT字段

MYSQL_TYPE_INT24

MEDIUMINT字段

MYSQL_TYPE_LONGLONG

BIGINT字段

MYSQL_TYPE_DECIMAL

DECIMALNUMERIC字段

MYSQL_TYPE_NEWDECIMAL

精度数学DECIMALNUMERIC

MYSQL_TYPE_FLOAT

FLOAT字段

MYSQL_TYPE_DOUBLE

DOUBLEREAL字段

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

BLOBTEXT字段(使用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 <= 244个字节, 如果25 <= p <= 538个字节

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',...)

12个字节,取决于枚举值的个数(最多65,535个值)

SET('value1','value2',...)

1234或者8个字节,取决于set成员的数目(最多64个成员)

你可能感兴趣的:(mysql,Field,storage_mysql.c)