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类型的长度
网友评论