MySQL数据类型

MySQL数据类型

数值型

1bit(m) m默认最大为64

    bit是位的意思,也就是说该类型表述某值占多少位,如果要表示0,1两种状态的话,bit(1)足以。

 

案例

create table test1 (id bit(1));

2tinyint [unsigned] 

    如果是有符号则表示 -128 到 127 ,如果是无符号 0-255

3int [unsigned]

整形定义可以参照下表,无符号的可以在类型后面加个unsigned

 

官方文档定义

MySQL数据类型_第1张图片

4float

FLOAT[(M,D)] [UNSIGNED] 

M:表示有效位是几位

D:表示小数位是几位

 

案例:

create table test5( num float);
create table test6(num float(5,1));

5double

其用法和float 类似,只是表示的范围更大,也是定长

 

案例:

create table t1
(
	num1 FLOAT,
	num2 FLOAT(5,2),
	num3 DOUBLE,
	num4 DOUBLE(5,2)
);

INSERT INTO t1 VALUES(10.111,10.111,10.111,10.111);
INSERT INTO t1 VALUES(100000000.111111,100.111,100000000000000.111111,100.111111);
select * FROM t1;

-- 由上得出结论,不指定float,double的精度,那么会在不超过该类型精度的情况下,会显示所有数值,如果超过则先满足整数部分,小数部分四舍五入。
-- 指定精度时,则前面数字M是有效位总数,后面数字D是小数位数,如果小数位数超过D,则省略,整数部分位数不能超过M-D,否则会报错 

6numeric(m,d)

NUMERIC[(M[,D])] [UNSIGNED] 

M:表示有效位是几位

D:表示小数位是几位,可以不指定小数位

PSnumeric可以用于表示小数或者整数,在不指定精度的情况下,如果不超过该类型精度,那么会显示所有数值

 

案例:

create table test7 (num numeric); //这样其实就是可以存放整数.
create table test8 (num numeric(5,2));//这样就可以表示 有效为5,小数点有两位的数

官方文档定义

MySQL数据类型_第2张图片


字符串型

官方文档定义

MySQL数据类型_第3张图片

常用类型

1char(m)

范围是 0-255, 定长不够长度,在右边补空格

char(20) 如果你存放 ‘abc’ 字串,实际在表 ‘abc              ’;

案例:

create table test11 (name char(20));

2varchar(m)

表示大小 ,范围 0-65535, 变长不会在右边补空格

varchar(20) 如果你存放 ‘abc’ 字串,实际在表 ‘abc’;

案例:

create table test12 (name varchar(20));

PS:如果能够固定下来,且大小在255字节以内,用char类型,不过取出进行比较时要注意其右边会被填充空格。

3text

    该类型可以表示更大长度的字串,具体参见上表。


日期类型

1date

    表示日期 格式为(--)

案例:

create table test12(birthday date);

对于date 只保存 年--

2datetime

    表示日期时间类型 格式为(--日 时::)

案例:

create table test13(hiredate datetime);

对于datetime保存 --日 时::

3timestamp

   表示时间邮戳 格式为(--日 时::)

PS它和datetime 最大的区别是,当 update 某条记录的时候,该列值,自动更新

故建议,只有在需要表示最近更新时间,那样的情况,才使用timestamp,其他情况尽量使用datetime

 

案例:

CREATE TABLE t2
(
	id INT,
	name VARCHAR(20),
	sex CHAR(2),
	birthday DATE,
	entry_date DATE,
	job VARCHAR(30),
	salary DOUBLE,
	resume TEXT
);
ALTER TABLE t2 MODIFY salary DOUBLE(10,2);
-- salary为9999.82
INSERT INTO t2 VALUES(1,'zs','男',NOW(),NOW(),'程序员',9999.818,'123456456456489449');
select * from t2;

你可能感兴趣的:(mysql,数据,数据类型)