mysql dnow()类型_MySQL 数据类型

MySQL 数据类型

字段类型:

数值型

整数

浮点数

字符类型

日期时间类型

数值型

整型

类型(有符号数/无符号数)

长度(有符号数/无符号数)

tinyint

1byte

smallint

2byte

mediumint

3byte

int/intege

4byte

bigint

8byte

有符号数|无符号数

上面类型默认为有符号数, 可以通过unsigned转为无符号数

create table tbl_int (

a tinyint unsigned,

b tinyint

);

定义显示宽度

通过规定数据的显示宽度, 达到统一显示的目的

格式: 类型(M) M 表示显示的最小宽度

需要使用前导零填充达到目的, 称之为 zerofill

create table tbl_int (

a tinyint unsigned,

b tinyint,

c tinyint(2) zerofill

);

不存在布尔类型, 通过整形0表示false, 非零值表示true,

浮点数

单精度(float) 4byte 默认精度位是6

双精度(double) 8byte 默认精度位16

支持, 控制数值的范围Type(M, D)

M: 所有的数值位数, 不包括小数点和正负号

D: 允许的小数的位数

举个例子:

(4,2): 范围(-99.99, 99.99)

浮点数支持科学计数法, 如 1234 = 1.234e3

定点数:

decimal 变长, 整数部分和小数部分分开保存

decimal(M, D) M总位数, D小数位数(范围存在) M默认是10, D默认为0

浮点数也支持 无符号, 并不是存储位数增加了, 只是表明只能存储非负数.

时间日期

年月日时分秒 Datetime 8字节

年月日 Date 3字节

时间 HH:MM:SS 3字节 (-838:59:59, 838:59:59)不仅可以表示时间,还可以表示时间间隔.

时间戳 timestamp (内部存储时是整型(4字节), 表示时是日期时间)

时间 HH:MM:SS 3字节

年 YYYY 1字节

create table dt_1 (

a datetime,

b timestamp

);

insert into dt_1 values("2013-04-05 11:45:45", "20130405114545");

检索列时, +0可以检索时间表示的形式同 "20130405114545"

select a, b+0 from dt_1 where 1;

支持任意分割符日期, 不过可能导致逻辑不清晰

支持0值, 表示当前没有规定

2017-07-0 表示4月一整月.(逻辑想法)

字符串类型

char varchar

char(M) 固定长度

varchar(M) 可变长度

M: 表示允许的字符串长度; M是字符数而不是字节数.

M 在 varchar 中表示的允许最大长度, char 中 M 表示严格限定的长度.

字符串

char(5)

varchar(5)

说明

""

5个字符

1个字节

varchar需要一个字符节(长度不超过255)保存字符串长度

"abc"

5个字符

1个字节 + 3字符

"abcde"

5个字符

1字节 + 5个字节

"fdsfdf"

插入失败

插入失败

char 效率高

varchar 省空间

注意, 字段的最大长度除了类型本身限制之外, 记录(row)的总长度也有限制.

varchar的字符, 总长度为 65535, 当数据长度超过255个字符时, 用两个字节表示长度, 65533个字节保存数据, 整个记录需要一个额外字节表示字段的null值, 最长为65532, 除非所有的字段不能为空, 这个字节可以省略(要记住有一个记录的长度限制); 不论有多少个字段存在在null, 都是使用统一的一个字节来表示, 而不是每个字段一个字节保存null;

create tbl_char1 (

varchar(65533) not null,

varchar(65532)

) character set latin1;

text

tinytext 2^8+1(最大长度)

text 2^16+2

mediumtext 2^24+3

longtext 2^32 + 4

text定义时, 通常不用指定长度, 自己计算得到.

enum

枚举选项量(65535) 内部存储用整型表示, 字段值只能是某一个

create table tbl_enum (

gender enum("female", "male")

);

insert into tbl_enum values("female");

insert into tbl_enum values("male");

select gender+0 from tbl_enum; // 显示为整型

set

set 元素个数64 内部整数表示(1, 2, 4, 8, 16) (位bit)

create table tbl_set (

hobby set("cat", "dog", "panda")

);

insert into table_set values("cat, dog"); // 标识为11=3

insert into table_set values("cat, panda"); // 标识为101=5

binary

字符才有编码的概念

binary varbinary blob 二进制数据(字节而非字符)

一般不会把图片内容输入数据库, 只是保存其路径

字段类型如何考虑

尽量精确

考虑应用语言处理

考虑移植的兼容性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值