数据类型

1、字符串数据类型

字符串数据类型共计6种,又分为字符串Unicode字符串两类:

  • 字符串:char、varchar、text
  • Unicode字符串:nchar、nvarchar、ntext

2、数字数据类型

数字数据类型共有11种,大概可分为整数数据类型、decimalnumeric货币类型、近似数字bit类型

  • 整数数据类型
数据类型范围(有符号)存储

bigint

-2^63  ~  2^63-18字节
int-2^31 ~  2^31-14字节
smallint-2^15 ~  2^15-12字节
tinyint-2^7 ~ 2^7-11字节





  • decimal和numeric
 

decimal

numeric

语法

字段名    decimal(M, D)字段名    numeric(M, D)
含义

M:表示有效数字的精度,范围为1~65

D:表示小数点后的位数,范围为0~30

同decimal
实例

字段  decimal(5, 2)

insert into 表  (字段)  values  (1.23);         >   1.23

insert into 表  (字段)  values  (123.45);     >   123.45

insert into 表  (字段)  values  (123.456);   >   123.46

insert into 表  (字段)  values  (123.451);   >   123.45

insert into 表  (字段)  values  (1234.56);   >   999.99

insert into 表  (字段)  values  (-1234.56);  >  -999.99  

字段   numeric(5, 2)

insert into 表  (字段)  values  (1.23);        >   1.23

insert into 表  (字段)  values  (123.45);    >   123.45

insert into 表  (字段)  values  (123.456);  >   123.46

insert into 表  (字段)  values  (123.451);   >  123.45

insert into 表  (字段)  values  (1234.56);   >  999.99

insert into 表  (字段)values  (-1234.56);  -999.99

总结当插入的整数部分的值超过了其表示范围后以最大值填充同decimal
说明测试数据准确性基于mysql(5.1.73)同decimal












  • 货币类型
数据类型范围存储
money-922337203685477.5808 ~ 922337203685477.58078字节
smallmoney-214748.3648 ~ 214748.36474字节


3、日期和时间数据类型

数据类型范围实例
year

(1900, 2155]


1、使用4位字符串和数字表示。其范围从1901~2155。输入格式为'YYYY'或YYYY

2、使用2位字符串表示。'00'~'69'转换为2000~2069,‘70’~'99'转换为1970~1999

3、使用2位数字表示。1~69转换为2001~2069,70~99转换为1970~1999

insert into 表  (字段)  values  (1900); 

>   0000

insert into 表  (字段)  values  (1901);    

>   1901

insert into 表  (字段)  values  (2156);    

>   0000

insert into 表  (字段)  values  (2155);    

>   2155

insert into 表  (字段)  values  (0);          

>   0000

insert into 表  (字段)  values  ('0');        

>   2000

insert into 表  (字段)  values  ('000');    

>   2000

insert into 表  (字段)  values  ('0000');  

>   0000

insert into 表  (字段)  values  (69);      

>   2069

time

[-838:59:59 ~ 838:59:59]


1、'D HH:MM:SS'格式的字符串表示。

其中,D表示天数,取值范围是0~35。小时的值等于(D * 24 + HH)

2、'HHMMSS'格式的字符串或HHMMSS格式的数值表示

3、使用current_time、current_time()或new()输入当前系统时间

insert into 表  (字段)  values  ('2 12:00:30');

>   60:00:30

insert into 表  (字段)  values  ('12:00:30');

>  12:00:30

insert into 表  (字段)  values  (120030);

>  12:00:30

insert into 表  (字段)  values  ('120030');

>  12:00:30

insert into 表  (字段)  values  ('35 12:00:30');

>  838:59:59

insert into 表  (字段)  values  (0);

>  00:00:00

insert into 表  (字段)  values  (current_time());

>  15:27:08

date

[1000-01-01 ~ 9999-12-31]

1、'YYYY-MM-DD'或'YYYYMMDD'格式的字符串表示

2、MySQL支持不严格的语法格式。

例如:'YYYY/MM/DD'、'YYYY@MM/DD'、'YY@MM.DD'等

3、'YY-MM-DD'或者'YYMMDD'格式的字符串表示。其中,

'YY'取值'00' ~ '69'转换为2000 ~ 2069,

'70' ~ '99'转换为1970 ~ 19999

4、使用current_date、current_date()或now()获取当前系统的时间

insert into 表  (字段)  values  ('2018-06-28');

>  2018-06-28

insert into 表  (字段)  values  ('20180628');

>  2018-06-28

insert into 表  (字段)  values  ('1000-01-01');

>  1000-01-01

insert into 表  (字段)  values  ('1000-00-00');

>  1000-00-00

insert into 表  (字段)  values  ('0000-00-00');

>  0000-00-00

insert into 表  (字段)  values  ('06-28');

>  0000-00-00

insert into 表  (字段)  values  ('2018-13-31');

>  0000-00-00

insert into 表 (字段)  values  ('9999-12-31');

>  9999-12-31

insert into 表  (字段)  values  (20180628);

>  2018-06-28

insert into 表  (字段)  values  (1005);

>  2000-10-05

insert into 表  (字段)  values  ('2018.06.28');

>  2018-06-28

insert into 表  (字段) values ('20180628 15:20:00');

>  0000-00-00

datetime

1、'YYYY-MM-DD HH:MM:SS'或'YYYYMMDDHHMMSS'格式的字符串

2、MySQL支持不严格的语法格式。例如:

2018@06/28 16.03*10

3、'YY-MM-DD HH:MM:SS'或'YYMMDDHHMMSS'格式的字符串

其中,

'00 ~ 69'转换为2000 ~ 2069,'79' ~ '99'转换为1970 ~ 1999

可使用不严格语法

4、使用now()获取当前系统的日期和时间

insert into 表 (字段) values ('2018-06-28 16:03:10');

>  2018-06-28 16:03:10

insert into 表 (字段) values (20180628160310);

>  2018-06-28 16:03:10

insert into 表 (字段) values ('9999-12-31 23:59:59');

>  9999-12-31 23:59:59

timestamp  

1、timestamp类型使用4个字节表示日期和时

timestamp类型的范围是1970-01-01 08:00:01 ~ 2038-01-19 11:14:07

2、MySQL中以'YYYY-MM-DD HH:MM:SS'的形式显示timestamp类型的值

3、值为null时,系统会输入系统当前时间和日期

4、可使用current_timestamp或current_timestamp()获取体统当前时间

5、timestamp会根据不同时区进行时间转换,但时间范围比较小

6、MySQL支持不严格语法

insert into 表 (字段)  values  (null);

>  2018-06-28 16:30:10

insert into 表 (字段) values  ('null');

>  0000-00-00 00:00:00

insert into 表 (字段) values  (current_timestamp())

>  2018-06-28 16:30:10

insert into 表 (字段) values (20180628163010);

>  2018-06-28 16:30:10

insert into 表 (字段) values ('20180628163010');

>  2018-06-28 16:30:10

insert into 表 (字段) values (180628163010);

>  2018-06-28 16:30:10


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值