mysql alter float_mysql-数据类型

mysql 中的数据类型

整型

tinyint 默认有符号最大127 ,为非严格模式 tinyint 无符号最大255

smallint 默认有符号,最大32767,smallint 无符号最大65535,为非严格模式

mediumint,默认有符号,最大值8388607, 无符号最大值16777215

int ,默认有符号,最大值2147483647, 无符号最大值4294967295

bigint,默认有符号,最大值9223372036854775807,默认无符号 最大值 18446744073709551615

整型默认是有符号,且为非严格默认

非严格模式--> 如果数据超出范围,会自动取最大值

?

浮点型

float

double

decimal 需要指定位数,(a,b)a代表整数位数最大65位数,b代表小数位数最大30位数

浮点型没有无符号

字符串

char 定长字符串 (如果输超出规定范围,会报错)

varchar 长度可变的字符串 (如果输超出规定范围,不会报错)

text 虽然有长度限制,但是会自动补充后面长度的数据,最大长度为2的32次方

blob

枚举和集合

枚举是提前规定一个范围 你的值只能是其中之一 多选一

集合是提前规定一个范围 你的值可以是其中的多个 多选多

集合在插入数据时 ,多个值之前用逗号隔开 但他们必须包含在同一个字符串内!

日期和时间

year

? date

? time

? year date time 都可以用字符串或数字两种方式输入值

? datetime

? timestamp

? datetime和timestamp 只能使用字符串输入

#1 tinyint

#创建表

#create table t1(nums tinyint);

# 测试tinyint 有无符号/是否为严格模式

mysql> create table t1(nums tinyint);

mysql> insert into t1 values(200);

# tinyint 默认有符号最大127 ,为非严格模式

# 修改为无符号

atler table t1 modify nums tinyint unsigned;

mysql> insert into t1 values(200);

+------+

| nums |

+------+

| 127 |

| 200 |

+------+

#tinyint 无符号最大255

# 2 smallint

# 测试smallint 有无符号

create table t2(nums smallint);

mysql> insert into t2 values(3333333);

# smallint 默认有符号,最大32767

# 修改为无符号

mysql> alter table t2 modify nums smallint unsigned;

+-------+

| nums |

+-------+

| 32767 |

| 65535 |

+-------+

# smallint 无符号最大65535,为非严格模式

# 3 mediumint

# 测试mediumint 有无符号

mysql> create table t3(nums mediumint);

# 默认有符号,最大值8388607

#修改为无符号

mysql> alter table t3 modify nums mediumint unsigned;

+----------+

| nums |

+----------+

| 8388607 |

| 16777215 |

+----------+

# 无符号最大值16777215

# 4 int

# 测试Int有无符号

mysql> create table t4(nums int);

# 默认有符号,最大值2147483647

# 修改为无符号

mysql> alter table t4 modify nums int unsigned;

+------------+

| nums |

+------------+

| 2147483647 |

| 4294967295 |

+------------+

# 无符号最大值4294967295

# 5 bigint

# 测试bigint 有无符号

mysql> insert into t5 values(123454566789012312345);

# 默认有符号,最大值9223372036854775807

# 修改为无符号

mysql> alter table t5 modify nums bigint unsigned;

+----------------------+

| nums |

+----------------------+

| 9223372036854775807 |

| 18446744073709551615 |

+----------------------+

#默认无符号 最大值 18446744073709551615

# 整型默认是有符号,且为非严格默认

# 非严格模式--> 如果数据超出范围,会自动取最大值

# 6 float

mysql> create table t6(id float);

mysql> insert into t6 values(12.1234544);

# float 精确到小数点后4位

# 修改无符号

mysql> alter table t6 modify id float unsigned;

Query OK, 1 row affected (1.02 sec)

Records: 1 Duplicates: 0 Warnings: 0

mysql> insert into t6 values(12.1234544);

+---------+

| id |

+---------+

| 12.1235 |

| 12.1235 |

+---------+

2 rows in set (0.00 sec)

mysql> select @@sql_mode;

+------------------------+

| @@sql_mode |

+------------------------+

| NO_ENGINE_SUBSTITUTION |

+------------------------+

1 row in set (0.00 sec) # float没有无符号

# 7 double

mysql> create table t7(nums double);

mysql> insert into t7 values(12.1241566124345124);

# 小数后15位

# 修改为无符号

mysql> alter table t7 modify id double unsigned;

mysql> insert into t7 values(12.1241566124345124);

Query OK, 1 row affected (0.13 sec)

mysql> select * from t7;

+--------------------+

| nums |

+--------------------+

| 12.124156612434513 |

| 12.124156612434513 |

+--------------------+

4 rows in set (0.00 sec) # double么有无符号

# 8 decimal

mysql> create table t8(nums decimal);

mysql> insert into t8 values(12.124156612434512412341236512361235);

mysql> select * from t8;

+------+

| nums |

+------+

| 12 |

+------+

1 row in set (0.00 sec) # 需要制定位数

# 指定位数

mysql> create table t10(nums decimal(6,3));

mysql> insert into t10 values(12.12423);

mysql> select * from t10;

+--------+

| nums |

+--------+

| 12.124 |

+--------+

1 row in set (0.00 sec) # 整数位不能超过6位,小数位不能超过3位

# decimal 需要指定位数,(a,b)a代表整数位数最大65位数,b代表小数位数最大30位数

# 9 char 定长字符串 (如果输超出规定范围,会报错)

mysql> create table t11(b char(10));

mysql> insert into t11 values('qwerqweqwerqwetqetqwet');

Query OK, 1 row affected, 1 warning (0.12 sec) # 不能超过10个字符,

mysql> insert into t11 values('qwerqwe');

Query OK, 1 row affected (0.37 sec)

+---------+

| b |

+---------+

| qwerqwe |

+---------+

#注意:虽然输入没有10个字符串,但是也会占用10个字符长度,如果输超出规定范围,会报错,最大范围255

# 优点: 读取/存储速度快于varchar

# 缺点: 浪费磁盘空间

# 10 varchar 长度可变的字符串 (如果输超出规定范围,不会报错)

mysql> create table t12(b varchar(10));

mysql> insert into t12 values('qwerqweqwerqwetqetqwet');

Query OK, 1 row affected, 1 warning (0.12 sec)

+------------+

| b |

+------------+

| qwerqweqwe |

+------------+

# 只是取到规定范围的数据,不会报错,最大值65535

# 优点:节省空间

# 缺点:速度慢于char类型

# 11 text

mysql> create table t13(b text(10));

mysql> insert into t13 values('qwerqweqwerqwetqetqwet');

+------------------------+

| b |

+------------------------+

| qwerqweqwerqwetqetqwet |

+------------------------+

# text 虽然有长度限制,但是会自动补充后面长度的数据,最大长度为2的32次方

# 12 blob

# 没有编码的大二进制 可以用来存储 多媒体数据 视频 音频等..... 一般不会存这种数据

# 注意: mysql会自动将字符串后面的空格删掉 所以你的数据在存储前应该先把空格处理掉

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值