MySQL数据表设计

1、数值类数据列类型

数据列类型

存储空间

说明

取值范围

TINYINT

1字节

非常小的整数

带符号值:-128~127

无符号值:0~255

SMALLINT

2字节

较小的整数

带符号值:-32768~32767

无符号值:0~65535

MEDIUMINT

3字节

中等大小的整数

带符号值:-8388608~8388607

无符号值:0~16777215

INT

4字节

标准整数

带符号值:-2147483648~2147483647

无符号值:0~4294967295

BIGINT

8字节

大整数

带符号值:-263~263-1

无符号值:0~264-1

FLOAT

4或8字节

单精度浮点数

最小非零值:+- 1.175494351E-38

最大非零值:+- 3.402823466E+38

数据列类型

存储空间

说明

取值范围

DOUBLE

8字节

双精度浮点数

最小非零值:+- 2.225073E-308

最大非零值:+- 1.797693E+308

DECIMAL

自定义

以字符串形式表示的浮点数

取决于存储单元字节数

  整型注意事项:

    INT(3)、SMALLINT(3)等整型后面的数字不会影响数值的存储范围,只会影响显示
    整型后面的数字只有配合零填充的时候才有实际意义。
    整型后面的数字可以省略
  浮点型注意事项:
    浮点型后面的数字会将存入的数字四舍五入,例如:把一个1.234存入FLOAT(6,1)数据列中,结果是1.2,6代表显示长度,1代表小数位长度,会四舍五入。
2、字符串类数据列类型

数据列类型

存储空间

说明

取值范围

CHAR[(M)]

M字节

定长字符串

M字节

VARCHAR[(M)]

L+1字节

可变字符串

M字节

TINYBLOB,TINYTEXT

L+1字节

非常小的BLOB(二进制大对象)和文本串

28-1字节

BLOB,TEXT

L+2字节

小BLOB和文本串

216-1字节

MEDIUMBLOB,

MEDIUMTEXT

L+3字节

中等的BLOB和文本串

224-1字节

LONGBLOB,

LONGTEXT

L+4字节

大BLOB和文本串

232-1字节

ENUM(‘value1’,’value2’…)

1或2字节

枚举:可赋予某个枚举成员

65535个成员

SET(‘value1’,‘value2’…)

1,2,3,4或8字节

集合:可赋予多个集合成员

64个成员

  字符串类型注意事项:
    CHAR和VARCHAR类型的长度范围都在0~255之间
    在使用CHAR和VARCHAR类型时,当我们传入的实际的值的长度大于指定的长度,字符串会被截取至指定长度
    在使用CHAR类型时,如果我们传入的值的长度小于指定长度,实际长度会使用空格补至指定长度
    在使用VARCHAR类型时,如果我们传入的值的长度小于指定长度,实际长度即为传入字符串的长度,不会使用空格填补
    CHAR要比VARCHAR效率更高,当占用空间较大
    BLOB和TEXT类型是可以存放任意大数据的数据类型
    BLOB区分大小写,TEXT不区分大小写
    ENUM和SET类型是特殊的的串类型,其列值必须从固定的串集中选择
    ENUM只能选择其中一个值,SET可以选择多个值
3、日期和时间类数据列类型

数据列类型

存储空间

说明

取值范围

DATE

3 字节

“YYYY-MM-DD”格式表示的日期值

1000-01-01~9999-12-31

TIME

3 字节

“hh:mm:ss”格式表示的时间值

-838:59:59-838:59:59

DATETIME

8 字节

“YYYY-MM-DD hh:mm:ss”格式

1000-01-01 00:00:00~9999-12-31

TIMESTAMP

4 字节

“YYYYMMDDhhmmss”格式表示的时间戳

19700101000000-2037年的某个时刻

YEAR

1 字节

“YYYY”格式的年份值

1901~2155

  日期类型注意事项:
    存储日期时,我们可以使用整型来进行存储时间戳,这样做便于我们进行日期的计算
4、NULL值
  NULL值注意事项:
    NULL意味着“没有值”或“未知值”
    可以测试某个值是否为NULL
    不能对NULL值进行算术计算
    对NULL值进行算术运算,其结果还是NULL
    0或NULL都意味着假,其余值都意味着真
5、类型转换

  在MySQL的表达式中,如果某个数据值的类型与上下文所要求的类型不相符,MySQL则会根据将要进行的操作自动地对数据值进行类型转换。如:

    1+’2’ #会自动转换成1+2=3

    1+’abc’ #会自动转换成1+0=1

6、数据字段属性  

  UNSIGNED
    只能用于设置数值类型,不允许出现负数
    最大存储长度会增加一倍
  ZEROFILL
    只能用于设置数值类型,在数值之前会自动用0补齐不足的位数
  AUTO_INCREMENT
    用于设置字段的自动增长属性,每增加一条记录,该字段的值会自动加1
  NULL和NOT NULL
    默认为NULL,即插入值时没有在此字段插入值,默认为NULL值,如果指定了NOT NULL,则必须在插入值时在此字段填入值
  DEFAULT
    可以通过此属性来指定一个默认值,如果没有在此列添加值,那么默认添加此值

你可能感兴趣的:(mysql)