数据库_12_数据类型(列类型)

摘要:
SQL将数据类型分为三类:数字类型、字符串类型和时间日期类型。SQL将十进制类型分为两种类型:浮点型和定点型:浮点型、有限精度和精度损失定点型:定点型、固定精度型和无精度损失。

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

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

数据库_12_数据类型(列类型)第1张

1、数值型

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

1.1整数型

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

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

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

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

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

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

数据库_12_数据类型(列类型)第2张

数据库_12_数据类型(列类型)第3张

 创建一张整形表:

-- 创建整型表
create table my_int(
int_1 tinyint,
int_2 smallint,
int_3 int,
int_4 bigint
)charset utf8;

数据库_12_数据类型(列类型)第4张

插入数据:只能插入整型,并且只能插入范围内的整型

-- 插入数据
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,10000,10000); -- 错误:超出范围

数据库_12_数据类型(列类型)第5张注:ERROR 1064指的是语法错误

SQL中的数值类型全部都是默认有符号:分正负
有时候需要使用无符号数据,需要给数据类型限定:intunsigned,无符号,从0开始

-- 给表增加一个无符号类型
alter table my_int add int_5 tinyint unsigned; --无符号类型

数据库_12_数据类型(列类型)第6张

数据库_12_数据类型(列类型)第7张

-- 插入数据
insert into my_int values(127,1000,10000,1000000,255); 

 数据库_12_数据类型(列类型)第8张

 数据库_12_数据类型(列类型)第9张

查看表结构的时候.发现每个字段的数据类型之后都会自带一个括号.里面有指定的数字

 数据库_12_数据类型(列类型)第10张

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

alter table my_int add int_6 tinyint(1) unsigned; -- 指定显示宽度为1;
desc my_int;
insert into my_int values(127,0,0,0,255,255);
select * from my_int;

 数据库_12_数据类型(列类型)第11张
数据库_12_数据类型(列类型)第12张

显示宽度的意义-在于当数据不够显示宽度的时候,会自动让数据变成对应的显示宽度

-通常需要搭配一个前导0来增加宽度.不改变值大小-zerofill(零填充)-零填充会导致数值自动变成无符号

alter table my_int add int_7 tinyint(2) zerofill; -- 指定显示宽度为2,不够则用0填充,超出则不管

 数据库_12_数据类型(列类型)第13张

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

数据库_12_数据类型(列类型)第14张

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

1.2小数型

小数型:带有小数点或者范围超出整型的数值类型。(浮点型属于小数型,浮点型有精度丢失)

SQL中将小数型分成两种:浮点型和定点型

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

1.2.1浮点型

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

  float:单精度,占用4个字节存储数据,精度范围大概为7位左右

  double:双精度,占用8个字节存储数据,精度方位大概为15位左右

数据库_12_数据类型(列类型)第15张

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

-- 浮点数表
create table my_float(
f1 float,
f2 float(10,2), -- 10位在精度范围之外
f3 float(6,2) -- 6位在精度范围之内
)charset utf8;

 数据库_12_数据类型(列类型)第16张

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

-- 插入数据(符合条件)
insert into my_float values(1000.10,1000.10,1000.10);  
insert into my_float values(1234570000,12345678.90,1234.56); 
insert into my_float values(3e38,3.01e7,1234.56); 
insert into my_float values(9999999999,99999999.99,9999.99); -- 最大值

 数据库_12_数据类型(列类型)第17张

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

-- 插入数据(超出范围)
insert into my_float values(123456,1234.12345678,123.9876543);  -- 小数部分超出
insert into my_float values(123456,1234.12,12345.56); -- 整数部分超出

 数据库_12_数据类型(列类型)第18张

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

 数据库_12_数据类型(列类型)第19张

1.2.2定点型

定点型:绝对的保证整数部分不会被四舍五入(不会丢失精度),小数部分有可能(理论小数部分也不会丢失精度)
数据库_12_数据类型(列类型)第20张

创建定点数表:以浮点数为对比

-- 创建定点数表
create table my_decimal(
f1 float(10,2),
d1 decimal(10,2)
)charset utf8;

 数据库_12_数据类型(列类型)第21张

插入数据:定点数的整数部分一定不能超出长度(进位不可以),小数部分的长度可以随机超出(系统自动四舍五入)

-- 插入数据
insert into my_decimal values(12345678.90,12345678.90); -- 有效数据
insert into my_decimal values(1234.123456,1234.123456);  -- 小数部分超出,数据有效

 数据库_12_数据类型(列类型)第22张

数据库_12_数据类型(列类型)第23张

-- 查看警告
show warnings;

 数据库_12_数据类型(列类型)第24张

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

-- 插入数据
insert into my_decimal values(99999999.99,99999999.99); -- 没有问题
insert into my_decimal values(99999999.99,99999999.999);  -- 进位超出范围
-- 查看数据效果:
select * from my_decimal;

 数据库_12_数据类型(列类型)第25张

2、时间日期类型

数据库_12_数据类型(列类型)第26张注:Time中:-指负,+指正。year(2):1970-2069

数据库_12_数据类型(列类型)第27张

创建时间日期表:

-- 创建时间日期表
create table my_date(
d1 datetime,
d2 date,
d3 time,
d4 timestamp,
d5 year
)charset utf8;

数据库_12_数据类型(列类型)第28张

数据库_12_数据类型(列类型)第29张

-- 插入数据
insert into my_date values('2015-9-28 11:50:36','2015-9-28','11:50:54','2015-9-28 11:51:08',2015);

-- 时间使用负数
insert into my_date values('2015-9-28 11:50:36','2015-9-28','-11:50:54','2015-9-28 11:51:08',2015);
insert into my_date values('2015-9-28 11:50:36','2015-9-28','-211:50:54','2015-9-28 11:51:08',2015);
insert into my_date values('2015-9-28 11:50:36','2015-9-28','-2 11:50:54','2015-9-28 11:51:08',2015);-- -2指的是过去两天,会换算成48(小时)

-- year可以使用2位或者4位
insert into my_date values('2015-9-28 11:50:36','2015-9-28','11:50:54','2015-9-28 11:51:08',69);
insert into my_date values('2015-9-28 11:50:36','2015-9-28','11:50:54','2015-9-28 11:51:08',70);

 数据库_12_数据类型(列类型)第30张

 数据库_12_数据类型(列类型)第31张

 数据库_12_数据类型(列类型)第32张

 数据库_12_数据类型(列类型)第33张

 通过函数可以获取到真正的时间戳:

数据库_12_数据类型(列类型)第34张



免责声明:文章转载自《数据库_12_数据类型(列类型)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇数据批量导入HBaseIOS开发:官方自带的JSON使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

BUUCTF-数据包中的线索 1

打开题目里面一个pcapng的文件,于是我们拖进wireshark流量分析一波  发现有http的流量,于是我们过滤http  让后追踪http,然后发现base64的编码, 于是我们看到了base64编码    于是我们拿着base64去解密成图片,https://the-x.cn/base64   然后我们将图片下载下来,得到flag...

超详攻略!Databricks 数据洞察

简介: 5分钟读懂 Databricks 数据洞察 ~ 更多详细信息可登录 Databricks 数据洞察 产品链接:https://www.aliyun.com/product/bigdata/spark(当前产品提供¥599首购试用活动,欢迎试用!) 开源大数据社区 & 阿里云 EMR 系列直播 第四期 主题:Databricks 数据洞察...

阿里云产品之数据中台架构

1. 场景描述 客户打包买了很多阿里云的产品,但是阿里云不负责实施,基于阿里云产品与客户需求,拟采用的数据中台架构,有类似需求的,可以参考下,拿走不谢! 2. 解决方案 阿里产品大数据架构图: 从下到上,简要介绍下各个阿里产品作用及承担的任务: 2.1 云数据库 RDS 阿里云关系型数据库RDS(Relational Database Service)是...

一种面向高维数据的集成聚类算法

聚类集成已经成为机器学习的研究热点,它对原始数据集的多个聚类结果进行学习和集成,得到一个能较好地反映数据集内在结构的数据划分。很多学者的研究证明聚类集成能有效地提高聚类结果的准确性、鲁棒性和稳定性。本文提出了一种面向高维数据的聚类集成算法。该方法针对高维数据的特点,先用分层抽样的方法结合信息增益对每个特征簇选择合适数量比较重要的特征的生成新的具代表意义的...

RS:关于数据挖掘中的推荐系统

一、推荐系统概述和常用评价指标   1.1 推荐系统的特点   在知乎搜了一下推荐系统,果真结果比较少,显得小众一些,然后大家对推荐系统普遍的观点是:   (1)重要性UI>数据>算法,就是推荐系统中一味追求先进的算法算是个误区,通常论文研究类的推荐方法有的带有很多的假设限制,有的考虑工程实现问题较少,推荐系统需要大量的数据整理和转化,同时更需...

数据可视化之powerBI技巧(二十二)利用这个方法,帮你搞定Power BI"增量刷新"

Power BI的增量刷新功能现在已经对Pro用户开通,但由于种种限制,很多人依然无法使用无这个功能,所以,每一次刷新,都要彻底更新数据集。这对于量级比较大的数据集来说,着实是一件耗费时间的事情。 拿我的亲身经历举个例子,我有一份报表涵盖了客户近3年的销售情况,由于客户的业务流量比较大,数据集的每一次手动刷新都在15分钟左右,而计划刷新更是会延迟到35分钟...