首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >何为SQL整数及浮点类型?

何为SQL整数及浮点类型?

作者头像
小Bob来啦
发布2020-12-08 15:04:39
发布2020-12-08 15:04:39
3.3K0
举报

上次小编已经将SQL的三大操作(库操作,表操作以及数据操作)简单介绍完啦,后面还会有相关的列类型和列属性以及索引...今天就先来介绍MySQL的列类型啦,说到SQL的数据类型,其实有很多和C语言差不多的,比如整数类型,浮点数类型,字符串类型等等,当然其中也会有改动,都有各自的特点。

这里就先介绍SQL数值类型中的整数类型和浮点数类型啦~

SQL:数据类型

数据类型:所谓的数据类型,其实是对数据进行统一的分类,从系统的角度来看是为了能够使用统一的方式进行管理,从而更好的利用有限的空间。

SQL中将数据类型分成了三大类:数值类型,字符集类型和时间日期类型。大致示意图如下:

数值型:这一听就知道是数值啦,系统将相关数值分成了整数类型和小数类型。

列类型:整数型

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

  1. Tinyint(常用):使用一个字节存储表示的状态最多为256种(八个字节最大表示256个)
  2. Smallint:使用2个字节存储,表示的状态最多为65536
  3. mediumint:使用3个字节存储
  4. int(常用):使用四个字节存储
  5. Bigint:使用八个字节存储

在表中创建相关整数类型:

代码语言:javascript
复制
--  创建整形
 create table my_int(
 int_1 tinyint,
 int_2 smallint,
 int_3 int,
 int_4 bigint 
 )charset utf8;
  • 创建一张整形表(如上):插入数据:只能插入范围内的整型

在表中插入相关数据:

代码语言:javascript
复制
 -- 插入数据
insert into my_int values (100,100,100,100);  -- 有效数据
insert into my_int values ('a','b','199','f');  -- 无效数据
insert into my_int values (255,10000,100000,1000000);  
-- 错误:超出范围

分别执行如下:

在SQL中,数值类型全部都是默认为有符号,比如正负。

而有时候需要使用无符号数据限定,例如需要给数据类型进行限定(使用):int unsigned;- -无符号:

从0开始语句:alter table my_int add int_5 tinyint unsigned;

执行如下:

根据需要,有时候会在类型中添加零填充,如:zerofill(零填充)→自动变成无符号。其意义(显示宽度):保证数据格式(比如在需要用年月份时)

相关语句:

代码语言:javascript
复制
alter table my_int add int_7 tinyint(2) zerofill;
insert into my_int values (1,1,1,1,1,1,1);
insert into my_int values (100,100,100,100,100,100,100);

执行如下:

To:在使用整型数据时,需要关注的大概为:如何创建整型表,如何插入整型数据以及需要注意是否为无符号类型,至于对于表的一些操作还是需要大家自己去康康表操作啦,相关表操作:MySQL基础学习之大战表操作

列类型:浮点数

学过C语言的大概都清楚浮点数类型啦,简单来说就是小数,但在SQL中又有所不同。

小数型:带有小数点或者范围超出整型的数值范围。

在SQL中:由于系统的需要,将小数细分成两种:浮点型(小数点浮动,精度有限,且会丢失精度)和定点型(小数点固定,精度固定,不会丢失精度)

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

浮点型理论分为两种:

  • float(单精度):占用4个字节存储数据,精度范围大概为7位左右
  • double(双精度):占用8个字节存储数据,精度范围大概为15位左右

创建浮点数表

创建浮点数表,浮点的使用方式:直接float表示。

用法:float(M,D)【M代表总长度,D代表小数部分长度,整数部分长度为M-D】

相关语句:

代码语言:javascript
复制
-- 浮点数(10位在精度范围之外,6位在精度范围之内)
create table my_float(
f1 float,
f2 float(10,2),
f3 float(6,2)
)charset utf8;

执行如下:

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

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

相关语句:

代码语言:javascript
复制
-- 插入数据
insert into my_float values (1234.10,1234.10,1234.10);-- 符合条件
insert into my_float values (123456789,12345678.99,9999.99);-- 最大值
insert into my_float values (3e38,3.01e7,1234.56);  -- 科学计数法

上面是符合规范的,下面演示相关错误语句:

代码语言:javascript
复制
-- 超出长度的限制
insert into my_float values (123456,1234.12345678,123.1234567);  
-- 小数部分可行,整数部分超出(不会报错)
insert into my_float values (123456,1234.12,12345.12);  
-- 整数部分超出(会报错)

执行如下:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档