18.Java与数据库(二)【Java学习笔记Hatter】Java开发工程师
1.数据类型(列类型)
是对数据进行统一的分类。从系统的角度出发:是为了能够使用统一的方式进行管理,更好的利用有限的磁盘空间。
SQL中将数据类型分成了三大类:数值类型,字符串类型,时间日期类型。
2.数值型:都是数值
系统将数值型分为整数型和小数型
(1)整数型:存放整数型数据。系统为例节省磁盘空间,将整数型有分为5类
①Tinyint:迷你整型,使用一个字节存储(常用)
②Smallint:小整型,使用2个字节存储
③Mediumint:中整型,使用3个字节存储
④Int:标准整型,使用4个字节存储(常用)
⑤Bigint:大整型,使用8个字节存储
插入数据只能插入范围内的整型
插入成功
插入数据类型错误
插入数据超出范围
SQL中的数值类型全部都是默认有符号,分正负。
使用无符号数据:需要给数据类型限定:int unsigned;
显示宽度:无特别意义,只是默认告诉用户可显示的形式,用户虽然可以控制的,但这种控制不会改变数据本身的大小,数据本身的大小是由数据类型来决定,它的意义是在于当数据不够显示宽度的时候,会自动让数据变成对应的显示宽度,所以通常需要搭配一个前导0来增加宽度,不改变值大小:zerofill(零填充)。零填充会自动让数值变成无符号。
效果(保证数据格式)
(2)小数型
带有小数点或者范围超出整数型的数值类型
①浮点型:精度有限,而且超出指定范围之后会丢失精度(四舍五入)。
float:单精度,占用4个字节存储数据,精度范围大概为7位左右
double:双精度,占用8个字节存储数据,精度范围大概为15位左右
创建浮点数表:浮点的使用方式:直接float表示没有小数部分;float(M,D):M代表总长度,D代表小数部分长度,整数部分长度为M-D。
插入数据:可以是直接小数,也可科学计数法;整数部分是不能超出长度,但是小数部分可以超出长度(系统会自动四舍五入)
②定点型:精度固定,而且不会丢失精度。
创建定点数表:
插入数据:定点数的整数部分一定不能超出长度(进位不可以),小数部分长度可超出(系统自动四舍五入)
浮点数如果进位导致长度溢出是没有问题的,但是定点数则不允许。
3.时间日期类型
格式是YYYY-mm-dd HH:ii:ss,表示的范围是从1000到9999年,有0值:
0000-00-00 00:00:00
Date:日期,是datetime中的date部分
Time:时间段,指定的某个区间之间,-时间到+时间
Timestamp: 时间戳,只是从1970年开始的YYYY-mm-dd HH:ii:ss格式与datetime完全一致
Year:两种形式year(2)和year(4)
创建时间日期表
插入数据:时间time可以是负数,可以是很大的负数,year可以使用2位数插入,也可以是4位数
时间使用负数
-2表示过去两天:48小时
year可以使用2位或者4位
timestamp只要当前所在的记录被更新,该字段一定会自动更新成当前时间。
4.字符串类型
在SQL中将字符串类型分为了6类:char ,varchar,text,blob,enum和set
(1)char(L)(定长字符串):二维表在定义结构的时候,就已经确定了最终数据的存储长度;L代表可以存储的长度,单位为字符,最大长度值为255
char(4)=3*4
(2)varchar(L)(变长字符串):在分配空间的时候按照最大的空间分配,但实际上最终用多少,是根据具体的数据来确定。L表示字符长度,理论长度是65536个字符,但会多出1(小于255)-2(大于255)个字节来确定存储的实际长度。实际上若是长度超过255,就用text
varchar(10):存了10个汉字,(utf8环境每个字符占3字节,gbk环境每个字符占2个字节),10*3+1。
定长的磁盘空间比较浪费,但是效率高;若数据基本确定长度都一样,就使用定长。
变长的磁盘空间比较节省,但是效率低;若数据长度不同有变化。
5.text(文本字符串)
若数据量非常大,超过255个字符就会使用文本字符串
根据存储数据的格式进行分类:text和blob
text:存储文字
blob:存储二进制(通常不用,二进制数据实际上都是存储路径)
6.enum(枚举字符串)(枚举是单选)
事先将所有可能出现的结果都设计好,实际上存储的数据必须是规定好的数据中的一个。
枚举的使用方式
定义:enum(可能出现的元素列表);
使用:存储数据,只能存储定义好的数据。
创建枚举表
插入数据:
作用之一:规范数据格式:数据只能是规定的数据中的其中一个
作用之二:节省存储空间:枚举实际存储的是数值而不是字符串本身
在mysql中, 系统也是自动转换数据格式的
按照元素出现的顺序,从1开始编号
枚举原理:枚举在进行数据规范的时候(定义时),系统会自动建立一个数字与枚举元素的对应关系(关系放到日志中);然后在进行数据插入的时候,系统将字符转换为对应的数字存储,然后在进行数据提取的时候,系统将自动将数值转换成对应的字符串显示。
因为枚举实际存储的是数值,所以枚举可以直接插入数值。
7.集合字符串
实际存储的是数值,而不是字符串(集合是多选)
集合使用方式:
定义:Set(元素列表)
使用:可以使用元素列表中的元素(多个),使用逗号分隔
创建集合表
插入数据:
可以使用多个元素字符串组合,或直接插入数值
查看集合数据
其中98转为二进制位=01100010(集合中:每一个元素都是对应一个二进制位,被选中为1,没有则为0,最后反过来)
能够规范数据和节省空间。


1914篇文章