18.Java与数据库(二)【Java学习笔记Hatter】Java开发工程师

/ 华南女子学院软件学院Java开发工程师 / 2017-03-20

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

1.数据类型(列类型)

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

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


2.数值型:都是数值

系统将数值型分为整数型和小数型


(1)整数型:存放整数型数据。系统为例节省磁盘空间,将整数型有分为5类

①Tinyint:迷你整型,使用一个字节存储(常用)

②Smallint:小整型,使用2个字节存储

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

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

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

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

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


插入成功

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

插入数据类型错误

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

插入数据超出范围

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

SQL中的数值类型全部都是默认有符号,分正负。

使用无符号数据:需要给数据类型限定:int unsigned;

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

显示宽度:无特别意义,只是默认告诉用户可显示的形式,用户虽然可以控制的,但这种控制不会改变数据本身的大小,数据本身的大小是由数据类型来决定,它的意义是在于当数据不够显示宽度的时候,会自动让数据变成对应的显示宽度,所以通常需要搭配一个前导0来增加宽度,不改变值大小:zerofill(零填充)。零填充会自动让数值变成无符号。

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

效果(保证数据格式)

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

(2)小数型

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

①浮点型:精度有限,而且超出指定范围之后会丢失精度(四舍五入)。

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

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

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

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

插入数据:可以是直接小数,也可科学计数法;整数部分是不能超出长度,但是小数部分可以超出长度(系统会自动四舍五入)

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

②定点型:精度固定,而且不会丢失精度。

创建定点数表:

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

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

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

浮点数如果进位导致长度溢出是没有问题的,但是定点数则不允许。

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

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)

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

创建时间日期表

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

插入数据:时间time可以是负数,可以是很大的负数,year可以使用2位数插入,也可以是4位数

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

时间使用负数

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

-2表示过去两天:48小时

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

year可以使用2位或者4位

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

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。

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

定长的磁盘空间比较浪费,但是效率高;若数据基本确定长度都一样,就使用定长。

变长的磁盘空间比较节省,但是效率低;若数据长度不同有变化。


5.text(文本字符串)

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

根据存储数据的格式进行分类:text和blob


text:存储文字

blob:存储二进制(通常不用,二进制数据实际上都是存储路径)


6.enum(枚举字符串)(枚举是单选)

事先将所有可能出现的结果都设计好,实际上存储的数据必须是规定好的数据中的一个。

枚举的使用方式


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

使用:存储数据,只能存储定义好的数据。


创建枚举表

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

插入数据:

作用之一:规范数据格式:数据只能是规定的数据中的其中一个

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

作用之二:节省存储空间:枚举实际存储的是数值而不是字符串本身

在mysql中, 系统也是自动转换数据格式的

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

按照元素出现的顺序,从1开始编号


枚举原理:枚举在进行数据规范的时候(定义时),系统会自动建立一个数字与枚举元素的对应关系(关系放到日志中);然后在进行数据插入的时候,系统将字符转换为对应的数字存储,然后在进行数据提取的时候,系统将自动将数值转换成对应的字符串显示。


因为枚举实际存储的是数值,所以枚举可以直接插入数值。

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

7.集合字符串

实际存储的是数值,而不是字符串(集合是多选)

集合使用方式:

定义:Set(元素列表)

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


创建集合表

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

插入数据:

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

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

查看集合数据

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串

其中98转为二进制位=01100010(集合中:每一个元素都是对应一个二进制位,被选中为1,没有则为0,最后反过来)

能够规范数据和节省空间。

Java开发初学者,Java学习经验分享,数据库,MySQL,数据库中的数值类型,整数型,小数型,时间日期型,字符串型,文本字符串,enum,集合字符串


公众号,微信

汇鱼网海峡创乐汇
汇鱼网海峡创乐汇