MySQL支持的数据类型

数值类型

MySQL中的数据类型

MySQL支持的数据类型_第1张图片

MySQL支持的数据类型_第2张图片

MySQL支持在类型名称后面的小括号内指定显示宽度,

如int(5)表示当数值宽度小于5位的时候在数字前面填满宽度。

如果不显示指定宽度,则默认为int(11)

zerofill属性是给存储的数值前面自动填充0.但是int(5)并没有在宽度小于5位的时候填充0,只有在明确修改表并使用zerofill参数时才起作用

create table t2(id int,id2 int(5))
insert into t2 VALUES(2,2)
alter table t2 MODIFY id int ZEROFILL;
SELECT * from t2;

AUTO_INCREMENT在需要产生位移标识符或顺序值的时候,使用此参数,该值从1开始

CREATE TABLE AI(ID INT AUTO_INCREMENT NOT NULL PRIMARY KEY);

MySQL分为两种方式:

浮点数定点数

浮点数包括float和double,而定点数只有decimal一种表示

(M,D)表示整数位+小数位

M-精度

D-标度

float和double在不指定精度时,默认会按照实际的精度来显示,而decimal默认的整数位为10,默认的小数位为0.即decimal(10,0)

BIT(位)类型,用于存放字段值,BIT(M)用来存放多位二进制数,M的范围1~64

CREATE TABLE AI(ID INT AUTO_INCREMENT NOT NULL PRIMARY KEY);
ALTER TABLE AI ADD COLUMN bin bit(1);
desc AI;
INSERT INTO AI(bin) VALUES(1);
SELECT * from AI;

时间和日期类型

  • 如果用来表示年月日,通常用DATE来表示
  • 如果用来表示年月日时分表,通常用DATETIME表示
  • 如果用来表示,通常用TIME来表示

MySQL支持的数据类型_第3张图片

CREATE TABLE t (d date, t time, dt datetime);
DESC t;
INSERT INTO t VALUES(now(), now(), now());
SELECT * FROM t;

TIMESTAMP和DATETIME表示的方法非常类似。

  • TIMESTAMP支持的时间范围较小,其取值范围从19700101080001到2038年的某个时间。
  • DATETIME是从1000-01-01 00:00:00 到 9999-12-31 23:59:59,范围更大。

字符串类型

  • CHAR和VARCHAR类型

CHAR列长度固定为创建表时的声明的长度

VARCHAR列中的值为可变长字符串

CREATE TABLE vc(v VARCHAR(4), c CHAR(4));
INSERT INTO vc VALUES('ab  ','ab  ');
SELECT length(v),length(c) from vc;
SELECT CONCAT(v,'+'),CONCAT(c,'+') from vc;
  • BINARY和VARBINARY类型

MySQL支持的数据类型_第4张图片

  • ENUM类型

ENUM枚举类型,它的值范围需要在创建表时通过枚举类型显式指定,对1~255个成员的枚举需要1个字节存储;对255~65535个成员,需要2个字节存储。最多允许65535个成员。

CREATE table enum(gender enum('M','F'));
insert into enum values('M'),('1'),('f'),(NULL);
SELECT * FROM enum;

运行结果:

MySQL支持的数据类型_第5张图片

可以看出ENUM类型忽略大小写,在存储"M"、"f"时将它们都转换成大写,还可以看出对于插入不在ENUM范围内的值时,并没有警告。

你可能感兴趣的:(MySQL支持的数据类型)