JAVA数据库数据类型及使用

本文详细介绍了JAVA数据库中涉及的各类数据类型,包括整数类型(TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT)及其无符号属性,实数类型(FLOAT, DOUBLE, DECIMAL)以及在精度和效率上的考虑,字符串类型(CHAR, VARCHAR, BINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT)的使用场景,以及日期和时间类型(DATE, TIME, YEAR, DATETIME, TIMESTAMP)的差异。此外,还提到了位数类型BIT以及MySQL8中的JSON类型。最后,文章提供了创建和操作表的基本知识,如表头设置、查询、插入、更新和删除数据的方法。" 80275946,5605272,远程操作:服务器上的MATLAB图形界面,"['服务器开发', 'MATLAB编程', '远程操作', '图形界面工具', '软件安装']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数据库数据类型
1、整数类型
(1).TINYINT(tinyint):大小为1个字节,有符号范围(-128 to 127)、无符号范围(0 to 255)mySQL没有布尔类型,直接使用tinyint表示。
(2)、SMALLINT(smallint):大小为2个字节,有符号范围(-32768 to 32767)、无符号范围(0 to 65535)。
(3)、MEDIUMINT(mediumint):大小为3个字节,有符号范围(-8388608 to 8388607 )、无符号范围(0 to 16777215)。
(4)、INT(int):大小为4个字节,有符号范围(-2147483648 to 2147483647)、无符号范围(0 to 4294967295)一般使用int类型。
(5)、BIGINT(bigint):大小为8个字节,有符号范围(-9223372036854775808 to
9223372036854775807 )、无符号范围(0 to 18446744073709551615 )。’
(6)、整数类型有可选的unsigned属性,表示不允许负值,这可以使正数的上限提高一倍(还多1)。有符号和无符号类型使用相同的存储空间,并且具有相同的性能,因此可以根据实际情况选择合适的类型。
(7)、mysql可以为整数类型指定宽度,例如INT(11),对大多数应用来说这是没有意义的:它不会限制合法范围,只是规定了mysql的一些交互工具(例如mysql命令行客户端)用来显示字符的个数。对于存储和计算来说,INT(1)和INT(20)是相同的。

2、实数类型
(1)、FLOAT(float):大小为4个字节,有符号范围(-3.402823466E+38 to -1.175494351E-38,
0, and 1.175494351E-38 to 3.402823466E+38 )、无符号范围(0, and 1.175494351E-38 to
3.402823466E+38)。
(2)、DOUBLE(double):大小为8个字节,有符号范围(-1.7976931348623157E+308 to
-2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to
1.7976931348623157E+308)、无符号范围(0, and 2.2250738585072014E-308 to
1.7976931348623157E+308)。
(3)、DECIMAL(decimal):大小未知,有符号范围(根据M和D的值)、无符号范围(根据M和D的值),小数考虑使用decimal前两个数据类型容易造成精度丢失。
(4)、注意FLOAT和DOUBLE可表示的范围不是完全连续的浮点数,由于精度的限制,有些极小的小数是表示不了的。
(5)、DECIMAL类型最多允许65个数字,表示为DECIMAL(M,D)的格式。例如DECIMAL(5,2)表示最多保存5个数字,其中2个是小数,表示的范围在-999.99 到 999.99之间。如果小数位数D为0,则DECIMAL值不包含小数点或小数部分。
(6)、FLOAT和DOUBLE类型只能使用标准的浮点运算进行近似运算,如果需要精确运算,例如金额计算,则需要使用DECIMAL类型。
(7)、因为cpu不支持对DECIMAL的直接计算,所以在mysql5.0以上的版本中,mysql服务器自身实现了DECIMAL的高精度计算。相对而言,cpu直接支持原生的浮点计算,所以浮点计算明显更快。
(8)、涉及到金额计算,在数据量比较大的时候,可以考虑用BIGINT代替DECIMAL。例如金额单位精确到分,99.99可以用9999表示,以分为单位存储在BIGINT字段里,这样可以同时避免浮点数计算的不精确和DECIMAL精确计算代价高的问题。

3、字符串类型
(1)、CHAR(char)大小(0-255)字节,用途:定长字符串,CHAR类型是定长的,会根据定义的长度分配空间。
(2)、VARCHAR(varchar)大小(0-65535)字节,用途:变长字符串,VARCHAR用于存储可变长的字符串,它比定长类型更节省空间,字符串的列长度比平均长度大很多列的更新很少,碎片不是问题,使用了想UTF-8这样复杂的字符集,每个字符都使用了不同的字节数进行存储。

(3)、BINARY(binary)大小(0-255)字节,用途:定长二进制。
(4)、VARBINARY(varbinary)大小(0-65535)字节,用途:变长二进制,BINARY和VARBINARY它们存储的是二进制字符串。二进制字符串和常规的字符串非常相似,但是二进制字符串存储的字节码而不是字符。填充也不一样:mysql填充BINARY采用的是 \0(零字节)而不是空格,在检索时也不会去掉填充值。当需要存储二进制数据时,可以使用 BINARY或VARBINARY,mysql比较二进制字符串时,每次按一个字节,并且根据该字节的数值进行比较。因此二进制比较比字符串比较简单的多,所以也更快。
(5)、TINYBLOB(tinyblob)大小(0-255)字节,用途:变长二进制。
(6)、BLOB(blob)大小(0-65535)字节,用途:变长二进制,BLOB和TEXT都是为了存储很大数据而设计的字符串数据类型,分别采用二进制和字符方式存储。
(7)、MEDIUMBLOB(mediumblob)大小(0-16777215)字节,用途:变长二进制。
(8)、LONGBLOB(longblob)大小(0-4,294,967,295 or 4GB (232 − 1) )字节,用途:变长二进制。
(9)、TINYTEXT(tinytext)大小(0-255)字节,用途:变长字符串。
(10)、TEXT(text)大小(0-65535)字节,用途:变长字符串。
(11)、MEDIUMTEXT(mediumtext)大小(0-16777215)字节,用途:变长字符串。
(12)、LONGTEXT(longtext)大小(0-4,294,967,295 or 4GB (232 − 1) )字节,用途:变长字符串。

4、日期和时间类型
(1)、DATE(date)大小3个字节,范围(‘1000-01-01’ to ‘9999-12-31’),格式(YYYY-MM-DD),用途:日期值。
(2)、TIME(time)大小3个字节,范围(-838:59:59’ to ‘838:59:59’ ),格式(hh:mm:ss)用途:时间值。
(3)、YEAR(year)大小1个字节,范围(1901 to 2155),格式(YYYY),用途:年份值。
、DATETIME(date)大小8个字节,范围(1000-01-01 00:00:00’ to ‘9999-12-31
23:59:59’),格式(YYYY-MM-DD hh:mm:ss),用途:日期和时间值。
(4)、TIMESTAMP(timestamp)大小4个字节,范围(‘1970-01-01 00:00:01’ UTC to ‘2038-
01-19 03:14:07’ UTC ),格式(YYYY-MM-DD hh:mm:ss),用途:日期和时间值。
(5)、DATETIME使用8个字节的存储空间,和时区无关。
(6)、TIMESTAMP使用4个字节的存储空间,显示的时间依赖时区,保存了从1970年1月1号午夜(格林尼治标准时间)以来的秒数,它和unix的时间戳相同。TIMESTAMP只能表示从1970年到2038年。
(7)、如果插入和更新数据时没有指定TIMESTAMP的值,mysql会默认的更新TIMESTAMP的值当前系统时间。

5、位数类型
(1)、BIT(bit)范围(1 to 64)位mySQL没有布尔类型,也可以直接使用bit表示。
(2)、BIT(1)定义一个包含1个位的数据,BIT(2)包含2个位,以此类推,最大长度为64个位。
mysql把BIT当做字符串类型,而不是数字类型。当检索BIT的值时,结果是对应二进制表示的ASCII码转换后的字符,然而在数字上下文场景中检索的时候,会使用二进制表示的数字。 例如,如果存储一个值b’00111001’(十进制的值为57)到BIT(8)的列并检索它时,得到的结果是9(9的ASCII码是57),如果对该字段进行加减,则返回结果57。

6、JSON类型
(1)、mysql8支持直接存储json格式字符串,对应的是json数据类型。
json数据列会自动验证json的数据格式,如果格式不正确会报错。
(2)、最优化存储格式。json数据类型会把json格式的字符串转换成内部格式,能够快速的读取其中的元素。
(3)、更小的更好
选择你认为不会超越范围的最小类型,更小的数据类型通常更快,因为它们占用更少的磁盘、内存和cpu缓存,并且处理时需要的cpu周期更少。
(4)、简单就好
简单的数据类型操作通常更快,例如整形的操作比字符串更快,因为字符串有字符集和校对规则(排序规则)比整形更复杂。
(5)、尽量避免null
如果字段可以不存储null值,尽量把字段设置成not null。因为可为null的列使得索引、索引统计和值比较都更复杂,可为null的列会使用更多的存储空间,在mysql里也需要特殊处理。
7、新建表知识
(1)、表名为小写字母,单词之间使用下划线分割。
(2)、引擎使用InnoDB,字符集使用utf-8或utf8mb4。
在这里插入图片描述
(3)、新建两个表,设置表头,
在这里插入图片描述
在这里插入图片描述
8、查询表:
SELECT 查询
(1).查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
(2).SELECT 命令可以读取一条或者多条记录。
(3).你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
(4).你可以使用 WHERE 语句来包含任何条件。
(5).你可以使用 LIMIT 属性来设定返回的记录数。
(6).你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
WHERE 子句
(1).如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中。
(2).查询语句中你可以使用一个或者多个表,表之间使用逗号, 分割,并使用WHERE语句来设定查询条件。
(3).你可以在 WHERE 子句中指定任何条件。
(4).你可以使用 AND 或者 OR 指定一个或多个条件。
(5).WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。
(6).WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。
LIKE子句
(1).你可以在 WHERE 子句中使用LIKE子句。
(2).你可以使用LIKE子句代替等号 =。
(3).LIKE 通常与 % 一同使用,类似于一个元字符的搜索。
(4).你可以使用 AND 或者 OR 指定一个或多个条件。
(5).你可以在 DELETE 或 UPDATE 命令中使用 WHERE…LIKE 子句来指定条件。

在这里插入图片描述
JOIN:
(1).INNER JOIN内连接,或等值连接:获取两个表中字段匹配关系的记录,取两个之间的交集两条数据都有的才被查询出来。
(2).LEFT JOIN 左连接:获取左表所有记录,即使右表没有对应匹配的记录。
(3).RIGHT JION 右连接:与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
在这里插入图片描述
LIMIT:
(1).语句:LIMIT 1 代表查询第几条数据,
(2).语句:LIMIT 0,2代表分页查询,从第几条数据到等几条数据。
9、新增
(1).向MySQL数据表插入数据通用的 INSERT INTO SQL语法:如果数据是字符型,必须使用单引号或者双引号,如:‘value’。
(2).如果主键是自增的,新增数据不用增加主键。
在这里插入图片描述
10.修改
(1).UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法:
(2).可以同时更新一个或多个字段。
(3).可以在 WHERE 子句中指定任何条件。
(4).可以在一个单独表中同时更新数据。
(5).当需要更新数据表中指定行的数据时 WHERE 是非常重要的。
在这里插入图片描述
11.删除
(1).SQL DELETE 语句从 MySQL 数据表中删除数据的通用语法:
(2).如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
(3).可以在 WHERE 子句中指定任何条件
(4).可以在单个表中一次性删除记录。
(5).当你想删除数据表中指定的记录时WHERE 是非常重要的。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值