MySQL-4数据类型

1.数据类型(列类型)

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

具体分位下述几大类

数字:int ,decimal(浮点数,需要指定总共有多少位和小数有多少位)

decimal(5,2) 共5位 小数点两位

字符串:char varchar text (char varchar 都是有限长度的字符串 需要指定最长字符,其中varchar 为可变字符串,init时 需要指定长度 ,text 为未知长度文本)

其中  char(8) 不足8个字符时 在右侧以空格补齐 'abcd    '

varchar(8)不补空格 'abcd'

日期:datetime

布尔:bit

--1.整数型

5种整数型
创建包含4种int类型的表
类型错误

SQL中的数据类型全部都是默认有符号,有时候需要使用无符号数据,需要给数据类型限定无符号,xxxx unsigned 无符号 从0起始

alter table king_int add int_5 tinyint unsigned;
insert king_int values (127,1000,10000,100000,255);

--2.小数型     带有小数点或者范围超出整形的数值类型

在 SQL中 将小数型分为 浮点型和顶点型,

浮点型,精度有限,且会丢失精度,

定点型,精度固定,不会丢失精度

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

浮点型分为float单精度,double双精度

float 直接使用,表示没有小数部分,float(M,D) 其中,M表示总长度,D表示小数部分长度,整数部分长度为M-D

创建浮点数类型表
插入数据测试

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

整数部分不能超出长度
浮点数超出精度 一定会四舍五入,浮点数如果是因为系统仅为导致整数部分超出指定的长度,那么系统也允许成立

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

小数超出

--3.时间日期类型

时间日期类型
创建时间日期表

插入数据

time 可以是负数 year 可以使用2位数插入,也可以使用4位数

各种插入时间所得到的结果

其中 timestamp 类型 只要当前所在的记录被更新,该字段一定会更新成当前时间

其中 timestamp 类型 只要当前所在的记录被更新,该字段一定会更新成当前时间

--4.字符串

在SQL中,将字符串分为 char varchar text,blob,enum,set 六类

定长字符串 char 磁盘在定义结构时,就已经确定了最终的存储长度 char(length) 其中length位存储长度,单位为字符,最大长度值可以为255

例如 char(4)在utf8环境下,需要4*3 = 12字节

变长字符串 varchar 在分配空间的时候,按照最大的空间分配,但是实际上是根据具体数据确定实际使用空间

varchar (L)理论上长度是65536个字符,但是会用1到2个字节来表示存储的实际长度,既超过255 字符 需要用2字节表示,小于255字符,需要用1字节表示

实际情况是如果长度超过255 使用text文本类型存储

例如 varchar(10) utf8下存储10汉字 既3*10+1 = 31字节

定长于变长在utf8下存储相同内容的实际存储空间

--5.枚举字符串

定义 enum(可能出现的元素列表);

例如 :

enum('男','女');

创建枚举类型数据

枚举可以防止数据超出约定范围

判断字段类型技巧
enum实际从1开始编号

--6.集合字符串

set(元素列表) 

创建set

插入数据可以使用多个元素字符串组合,也可以直接插入数值

直接插入一条set

而在集合中 每一个元素都是对应一个二进制位 选中为1未选中为0

所以直接插入数值并不是选中数值所对应的元素,而是将数值转换为二进制 ,再根据二进制数值进行选中

插入三条set 分别为 001 010 011 其中set第一个元素为二进制最后一位
查看集合中元素的真实值

集合的强大在于规范数据和节省空间

--7.text类型 占用十个字节长度

text类型的长度

你可能感兴趣的:(MySQL-4数据类型)