第3章数据类型——数值类型及实例MySQL+实用教程(第4版)
MySQL8.0包含丰富的数据类型,可以方便处理各种数据。系统数据类型如表3.1所示。数据类型符号标识整数类型tinyint,smallint,mediumint,int,bigint向下兼容:bool(boolean)实数类型float,double,decimal,numeric日期与时间类型year,time,date,datetime,timestamp字符串类型char,varchar,tinytext,text,mediumtext,longtextbit,binary,varbinary,tinyblob,blob,mediumblob,longblob枚举、集合类型enum,setJSON数据类型json空间数据类型point,multipoint,polygon,multipolygon,geometry,geometrycollection,linestring,multilinestring,
01整数类型
整数类型整数类型可表示有符号或无符号的整数数值,其最大值和最小值(含符号位)确定了默认的显示位数。表3.2列出了MySQL中所有的整数类型主要属性。数据类型字节数有符号范围无符号范围tinyint1-128~127(-27~27-1)0~255(0~28-1)smallint2-32768~32767(-215~215-1)0~65535(0~216-1)mediumint3-8388608~8388607(-223~223-1)00~224-1)intinteger4-2147483648~2147483647(-231~231-1)0~4294967295(0~232-1)bigint8±9.22×1018(-263~263-1)0~1.84×1019(0~264-1)(1)上表“数据类型”定义的都是有符号的,加上unsigned关键字,定义成无符号的类型。(2)MySQL中是没有布尔类型的,但为了兼容SQL标准,也可以定义声明bool(boolean)类型,但它们最终都会被转换成tinyint(1)类型存储。
02实数类型1.浮点数2.定点数3.数值显示长度
实数类型1.浮点数浮点数又有两种格式:单精度浮点数(float)和双精度浮点数(double),遵循IEEE754标准。real是double的同义词,除非启用了real_as_float模式才能作为单精度浮点数使用。在IEEE754标准下,浮点格式主要分为四种类型,即单精度格式、双精度格式、扩展单精度格式和扩展双精度格式。其中32位单精度格式与64位双精度格式作为基础格式更为常用,扩展格式则有特殊目的,一般对用户透明。浮点格式可分为符号位s、指数位e以及尾数位f三部分,如图3.1所示。
实数类型2.定点数定点数有decimal和numeric两种类型,在MySQL中,numeric被实现为decimal,因此两者具有相同的性质。decimal类型通常写为decimal(m,d),用于存储必须为确切精度的数值,占用m+2字节空间。其中:m:精度,表示总共的位数,取值范围1~65,取0时会被设为默认值,超出范围会报错。m的默认取值为10。d:标度(d≤m),表示小数的位数,取值范围0~30,超出范围会报错。d的默认取值为0。3.数值显示长度创建表的时候,MySQL会为每种数值类型设定默认的长度,这个默认长度值是根据该类型所能表示取值范围内的最大数值位数确定的,有符号的整数类型tinyint、smallint和int在其取值范围内最大可能的数值位数分别为3、5、11,这就是它们的默认长度。
实数类型【例3.1】定义类型设置的长度与显示长度的关系。USEmydb;DROPTABLEIFEXISTStest;CREATETABLEtest( i1 smallint, i2 smallint(3), f1 float, f2 float(6,2), f3 float(9,3), d1 decimal(9,3), c1 float(10,2) AS(f3*10), c2 decimal(10,2) AS(d1*10));INSERTINTOtest(i1,i2,f1,f2,f3,d1) VALUES(12345,-12345,1234567,1234.567,123456.734,123456.734);SELECT*FROMtest;
实数类型运行结果如图3.2所示。说明:(1)i1smallin