当前位置:   article > 正文

c mysql 添加数据类型_MYSQL数据类型——数值类型

c mysql 添加数据类型_MYSQL数据类型——数值类型

一.数据类型

定义:是指对数据进行统一的分类,从系统的角度出发是为了使用统一的方式进行管理,管理更好的利用有限空间。

SQL中将数据类型分成了三大类:数值类型、字符串类型和时间日期类型。

1.数值类型

数值型数据:都是数值,系统将数值型分为整数型和小数型。

1.1 整数型

存放整型数据:在SQL中因为更多考虑如何节省磁盘空间,所以系统将整型又细分成了5类

1.Tinyint:迷你整型,使用一个字节存储,表示的状态最多为256种,-128~127(常用)。

2.Smallint:小整型,使用2个字节存储,表示的状态最多为65536种。

3.Mediumint:中整型,使用3个字节存储。

4.Int:标准型,使用6个字节存储(常用)。

5.Bigint:大整型,使用8个字节存储。

(a)创建一张整型表:

1 show databases;2 setnames gbk;3 usemy_database;4 --创建一张整型表:

5 create table my_int(int_1 tinyint,int_2 smallint, int_3 int, int_4 bigint) charset utf8;

(b)插入数据:

1 insert into my_int values(100,100,100,100); --有效数据

2 insert into my_int values('a','b','199','f'); --无效数据:类型限定 (数据类型不正确)

3 insert into my_int values(255,10000,100000,1000000); --错误:超出范围

注意:SQL中的数值类型全部默认有符号,分正负,有时候需要使用无符号数据,需要给数据类型限定:int unsigned; --无符号,即从0开始。

(c)给表增加一个无符号类型:

1 Alter table my_int add int_5 tinyint unsigned; --无符号

注意:查看表结构,发现每个字段的数据类型之后都会自带一个括号,里面有指定的指定的数字;里面带的数字为显示宽度:数据显示的位数,如-123是4位显示宽度(包含符号),255是3位宽度

--显示宽度:没有特别的含义,只是默认的告诉用户可以显示的形式而已,实际上用户是可以控制的,这种控制不会改变数据本身的大小。

1 alter table my_int add int_6 tinyint(1) unsigned; --指定显示宽度为1

2 insert into my_int values(127,0,0,0,255,255);

显示宽度的意义:在于当数据不够显示宽度的时候,会自动让数据变成对应的显示宽度,通常需要搭配一个前导0来增加宽度,不改变值大小:zerofill(零填充),零填充会导致数值自动变成无符号。

1 alter table my_int add int_7 tinyint(2) zerofill; --显示宽度为2,0填充(超过2位不管,低于2位0填充,比如1变为01)

零填充+显示宽度的效果:

1 insert into my_int values(1,1,1,1,1,1,1);2 insert into my_int values(100,100,100,100,100,100,100);

零填充的意义(显示宽度):保证数据格式。

1.2 小数型

定义:带有小数点或者范围超出整型的数值类型,在SQL中,将小数型细分成2种:浮点型和定点型。

浮点型:小数点浮动,精度有限,而且会丢失精度。

定点型:小数点固定,精度固定,不会丢失精度。

1.2.1 浮点型

浮点型数据是一种精度型数据,因为超出指定范围之后,会丢失精度(自动四舍五入)。

浮点型:理论分为两种精度

Float:  单精度,占用4个字节存储,精度范围(有效数字范围)大概为7位左右,最小值很小很小,最大值很大很大

Double: 双精度,占用8个字节存储,精度范围大概为15位左右,最小值很小很小,最大值很大很大。

(a)创建浮点数表: 浮点的使用方式,直接float 表示没有小数部分,float(M,D),M代表总长度,D代表小数部分长度,整数部分长度为M-D。

1 CREATE TABLE my_float (f1 float ,f2 float(10,2),f3 float(6,2))charset utf8; --10位在精度范围之外,6位在精度范围之内,

(b)插入数据:可以是直接小数,也可以是科学计数法。

1 Insert into my_float values(1000.10,1000.10,1000.10); --符合条件

2 Insert into my_float values(1234567890,12345678.90,1234.56); --符合条件

3 insert into my_float values(3e38,3.01e7,1234.56); --符合条件

4 insert into my_float values(9999999999,99999999.99,9999.99); --最大值 --符合条件

注: 浮点数据的插入,整数部分是不能超出长度的,但是小数部分可以超出长度(系统会自动四舍五入)。

(c)超出长度插入数据

1 insert into my_float values(123456,1234.123456768,123.9876543);--小数部分超出ok

2 insert into my_float values(123456,1234.12,12345.56);--整数部分超出(f3)

结果:浮点数一定会进行四舍五入(超出精度范围),浮点数如果是因为系统进位导致整数部分超出指定的长度,那么系统也允许成立.

1.2.2  定点型

定点型:绝对的保证整数部分不会被四舍五入(不会丢失精度),小数部分有可能(理论上小数部分也不会丢失精度)。

(a) 创建定点数表:以浮点数作为对比

1 CREATE table my_decimal(f1 float(10,2), d1 decimal(10,2))charset utf8;

(b) 插入数据

1 insert into my_decimal values(12345678.90,12345678.90); --有效数据

2 insert into my_decimal values(1234.123456,1234.123456); --小数部分超出:ok

(c)查看警告代码:

1 show warnings;

注意: 浮点数如果进位导致长度溢出没有问题,但是定点数不行。

(d)插入今晚导致超出长度数据

1 insert into my_decimal values(99999999.99,99999999.99); --没有问题

2 insert into my_decimal values(99999999.99,99999999.999); --d1进位超出范围,不行

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/904475
推荐阅读
相关标签
  

闽ICP备14008679号