MySQL-4.数据类型

常用:int、double、decimal、char、varchar、blob、datetime、timestamp

数据库与编程不太一样,它会更加的珍惜字节空间,需考虑所定义字段的大小和所定义字段的实际使用(有无符号)。 

4.1 数值类型

都可选UNSIGNED,无符号,加在类型后。
BIT(M):位类型,M指定位数,默认1,范围1~64,(M+7)/8个字节。如果一个值只有0/1,可以用。使用不多。

存的是b'11'

4.1.1 整型:

数据类型字节数无符号数的取值范围有符号数的取值范围
TINYINT10~255-128~127
SMALLINT20~65535-32768~32768
MEDIUMINT30~16777215-8388608~8388608
INT40~4294967295-2147483648~ 2147483648
BIGINT80~18446744073709551615-9223372036854775808~9223372036854775808
mysql> create table emp(
    -> id smallint unsigned auto_increment primary key comment'id',
    -> age tinyint unsigned ,
    -> kkk int(6)  // 宽度限制可以超过,但不能超过所定义数据类型值的范围
    -> );

4.1.2 浮点型:float、double、decimal

浮点型容易丢失精度——>decimal定点数类型不会丢失精度,因为整数和小数分开存储管理

最大长度位m(总位数)要大于小数位n,超过的小数位会四舍五入。

若省略,m默认10,n默认0。
create 表名  字段名 浮点类型(最大长度位m,小数位d);

mysql> create table t_1(
    -> number_1 float(3,1),
    -> number_2 decimal(20,19)
    -> );
数据类型字节数有符号的取值范围无符号的取值范围
FLOAT4-3.402823466E+38~-1.175494351E-380和1.175494351E-38~3.402823466E+38
DOUBLE8-1.7976931348623157E+308~2.2250738585072014E-3080和2.2250738585072014E-308~1.7976931348623157E+308
DECIMAL(M,D)M+2-1.7976931348623157E+308~2.2250738585072014E-3080和2.2250738585072014E-308~1.7976931348623157E+308

4.2 字符类型

        varchar、blob和text类都是变长类型。每个类型的存储需求取决于列值的实际长度(L),而不是该类型的最大可能的大小(M)。

        例如,VARCHAR(10),列可以容纳最大长度为10的字符串。实际存储需求是字符串的长度L,加上一个记录字符串长度的字节。对于字符串'abcd',L是4,但存储需要5个字节。

        varchar不够用,用text。

注意字符和字节:

char(定长)类型,不足的补空格,常用的是varchar(变长)类型, 它会自动回收多余的字符空间,但是它相对于char的效率也会更低。

 

4.3 枚举类型

枚举类型选项的存储非常节省空间,它对选项的的管理使用整数。 

4.4 日期与时间类型

自动更新时间戳: 

数据类型字节数取值范围日期格式零值
YEAR11901~2155YYYY0000
DATE31000-01-01~9999-12-31YYYY-MM-DD0000-00-00
TIME3-838:59:59~ 838:59:59HH:MM:SS00:00:00
DATETIME81000-01-01 00:00:00~9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS0000-00-00 00:00:00
TIMESTAMP41970-01-01 00:00:01~2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS0000-00-00 00:00:00
mysql> create table t_7(
    -> createdTime datetime
    -> );
  • 日期时间函数: 

mysql-> select now();

SELECT * FROM t2 WHERE shijian > (now() - INTERVAL 1 day);

SELECT * FROM t2 WHERE shijian < (now() - INTERVAL 1 year);

4.5 文本类型

文本类型用于表示大文本数据,例如,文章内容、评论、详情等。

数据类型储存范围
TINYTEXT0~255字节
TEXT0~65535字节
MEDIUMTEXT0~16777215字节
LONGTEXT0~4294967295字节

4.6 二进制类型:BLOB

  • binary长度固定,即每条数据占用等长字节空间,保存长度不超过255字节的二进制数据。

  • varbinary可变长度,可以设置最大长度,最大长度65535,适合用在长度可变的二进制数据。

  • blob不设置长度,当不知道属性的最大长度时,适合用blob,能用varbinary的地方不用blob。

  • 如果都可以选择,按照查询速度:binary最快,varbinary次之,blob最慢。

参考:http://t.csdnimg.cn/MUsXP

http://t.csdnimg.cn/uE4ZZ

http://t.csdnimg.cn/8Zpm0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值