美文网首页
数据类型

数据类型

作者: 咸鱼有梦想呀 | 来源:发表于2017-10-03 16:59 被阅读0次
所谓的数据类型:对数据进行统一的分类
从系统的角度出发为了能够使用统一的方式进行管理:更好的利用有限空间。

SQL中将数据类型分为三大类:

  • 数值类型
  • 字符串型
  • 日期时间型

一、数值型

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

1、整数型

整数型:存放整型数据

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

类型 名称 最大值 字节
Tinyint 迷你整型 255 1
Smallint 小整型 65536 2
Mediumint 中整型 …… 3
Int 标准整型 …… 4
Bigint 大整型 …… 8

①创建一张整型表

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

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

insert into my_int values (100,100,100,100);
插入数据

SQL中所有数值类型都是默认有符号的:分正负
所以,有时候需要使用无符号数据,就需要

给数据类型限定:int unsigned;

③给表增加一个无符号类型

alter table my_int add int_5 tinyint unsigned;
增加无符号类型

④有符号和无符号的区别
插入数据:

无符号225插不进去 有符号可以插进去

⑤类型后自带的显示宽度

显示宽度说明

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

零填充

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

零填充+显示宽度的效果

2、小数型

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

SQL中又将小数型分为:浮点型和定点型
浮点型:小数浮动,精度有限,而且会丢失精度
定点型:小数点固定,精度固定,不会丢失精度

①浮点型:也称精度型数据,超出范围会丢失精度(四舍五入)

分为两种精度

类型 名称 最大值 字节
Float 单精度 3.402823466E+38 4
Double 双精度 1.7976931348623157E+308 8

创建浮点数表:

直接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;

创建浮点数表

插入数据

插入数据

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

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

decimal,储存空间变长,大致是每9个数字,采用4个字节储存。整数和小数分开计算。

创建定点数表

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

创建定点数表

插入数据

定点数的整数部分一定不能超出长度,小数部分的长度可以随意超出

插入数据

查看数据效果

数据效果

由此我们发现,数据如果想要精确就用定点型,需要粗略的数据比较大的可以用浮点型。

3、时间日期型

Datetime:时间日期,格式是YYY-mm-dd HH:ii:ss,表示的范围是从10000到9999年,有0值:0000-00-00 00:00:00
Date:日期,就是Datetime中的date部分
Time:时间(段),指定的某个区间之间
Timestamp:时间戳,只是从1970开始的,格式和Datetime完全一致
Year:年份,YYYY,1901年到2155年

创建时间日期表

create table my_date(
d1 datetime,
d2 date,
d3 time,
d4 timestamp,
d5 year
)charset utf8;

创建时间日期表

插入数据:时间time可以是负数,year可以使用两位数插入,或者四位数插入

数据效果
Timestamp字段:只要当前所在的任何记录被更新,该字段一定会自动更新成但前时间。
Timestamp自动更新日期

3、字符串类型

在SQL中,将字符串分成了6类**char,varchar,text,blob,enum,和set**

①定长字符串(char):磁盘(二维表)在定义结构的时候,就已经确定了最终数据的存储长度

Char(L):L代表length,可以储存的长度,单位为字符,最大长度值可以为255
eg:Char(4):在utf8环境下,需要4*3=12个字节。

②变长字符串(varchar):在分配空间的时候,按照最大的空间分配

Varchar(L):L表示字符长度,理论长度是65536个字符,但是会多出1-2个字节来确定储存的实际长度
Varchar(10):存储3个汉字:3*3+1=10(bytes)

定长的磁盘空间比较浪费,但是效率高。如果数据基本上确定长度都一样,使用定长
例如:身份证号,电话号,手机号码等。
变长的磁盘空间比较节省,但是效率低。如果数据不能确定长度,使用变长。
例如:姓名,地址等。

③文本字符串:数据量非常大,通常超过255个字符就会使用文本字符串

文本字符串根据存储的数据的格式进行分类:text和blob
text:存储文字
blob:存储二进制数据(通常不用)

④枚举字符串(eunm):事先将所有可能出现的结果都设计好,实际上存储的数据必须是规定好的数据中的一个

enum(可能出现的元素列表);
eg:enum('男','女','不男不女','保密');

ps:存储数据只能存储上面定义好的数据

枚举
由此,就有了枚举的作用
1、规范数据格式:数据只能是规定中的一种数据
2、节省存储空间(在MySQL中,系统也是自动转换数据格式的尤其是字符串数字)
枚举实际存储的是数值而不是字符串本身

⑤集合字符串:实际存储的是数据不是字符串(集合是多选)

set(元素列表)
可以使用元素列表中的多个元素,用逗号分隔

集合表
所以:集合中每一个元素都是对应一个二进制位,被选中为1,没有则为0:最后反过来!
所以:实际存储的是数据不是字符串!!!!和枚举是一样的!都会转化为数据!
所以:集合强大在于能够规范数据和节省空间,而且数据的维护可以通过数据进行

相关文章

  • JAVA 之路第一讲

    数据类型: 基础数据类型 包装器数据类型 引用数据类型 null 数据类型 基础数据类型: 整型 byte(字节型...

  • php 数据类型和数据类型转化

    一、数据类型 基础数据类型 复合数据类型 特殊数据类型 二、获取数据类型 三、打印数据类型和值 四、数据类型判断 ...

  • OC和C中的数据类型

    数据类型对比 C语言数据类型C语言数据类型 OC数据类型

  • JAVA 核心笔记 || [2] 数据类型

    JAVA数据类型分为两大数据类型: 1.内置数据类型2.引用数据类型 内置数据类型 引用数据类型 上篇 : 开篇 ...

  • 数据类型

    数据类型作用:数据类型不同,空间大小不同。 数据类型分类:基本数据类型、引用数据类型基本数据类型:整数型、浮点型、...

  • Java知识之数据类型

    Java数据类型图表## Java数据类型分为:### 基础数据类型 引用数据类型 null类型 基础数据类型分別...

  • JAVA基础第四天

    JAVA数据类型---布尔类型; 数据类型转换自动数据类型转换 强制数据类型转换

  • Java数据类型(慢慢积累,对于事物的理解也会不一样)

    Java的数据类型: 1. 内置数据类型(基本数据类型); 2. 引用数据类型; Java基本数据类型:(...

  • 【IOS 开发】 数据类型详解

    1. 数据类型简介及输出 (1) 数据类型简介 数据类型简介: Object - C 数据类型 分为 基本数据类型...

  • iOS 数据类型简介及输出

    一、数据类型简介及输出 1.数据类型简介 数据类型简介 : Object - C 数据类型 分为 基本数据类型, ...

网友评论

      本文标题:数据类型

      本文链接:https://www.haomeiwen.com/subject/wiftyxtx.html