技术开发 频道

MYSQL 数据类型存储-数值型

  【IT168技术文档】1. 环境版本:

  OS : LINUX AS4

  MYSQL: 5.0.51a-log

  ENGINE : Myisam

  2. 本章研究的数值类型对象:

  TINYINT 1个字节 FIXED

  SMALLINT 2个字节 FIXED

  MEDIUMINT 3个字节 FIXED

  INT, INTEGER 4个字节 FIXED

  BIGINT 8个字节 FIXED

  DECIMAL(M,N) >=4字节 FIXED

  3. 数值类型: TINYINT SMALLINT MEDIUMINT INT BIGINT

  这几种数据存取方式都是一样的: 高位优先存储,符号位(0正,1负)

  drop table if exists heyf ;

  create table heyf (id TINYINT ) type myisam ;

  insert into heyf values (10),(-10) ;

  system hexdump /opt/mysql/data/test/heyf.MYD

  ------------------------------------------

  0000000 0afd 0000 0000 fd00 00f6 0000 0000

  000000e

  ------------------------------------------

  其中:

  ROW1:

  --------------------------------

  fd : 行header

  0a : 值10

  ---------------------------------

  ROW2:

  --------------------------------

  fd : 行header

  f6 : 值-10的补码

  ---------------------------------

  如果是正数,第1位为"0", 直接读出来即可;

  如果是负数,第1位为"1", 则按常规办法将值 取反+1.

  比如:

  原值 原二进制 取反 加1 十进制

  -------------------------------------------------------

  f6 --> 1111 0110 --> 0000 1001 --> 0000 1010 --> 10

  其他几个类型请读者举一反三.

0
相关文章