做古玩的網(wǎng)站google play 應(yīng)用商店
前言
這里主要是 由于之前的一個(gè) datetime 存儲(chǔ)的時(shí)間 導(dǎo)致的問(wèn)題的衍生出來(lái)的探究?
探究的主要內(nèi)容為 int 類類型的存儲(chǔ), 浮點(diǎn)類類型的存儲(chǔ), char 類類型的存儲(chǔ), blob 類類型的存儲(chǔ), enum/json/set/bit 類類型的存儲(chǔ)?
本文主要 的相關(guān)內(nèi)容是 int 類類型的相關(guān)數(shù)據(jù)的存儲(chǔ)??
這部分?jǐn)?shù)據(jù) 客戶端 和 服務(wù)器這邊的交互 主要是以字符串的形式交互?
服務(wù)器這邊的存儲(chǔ) 主要是 單字節(jié)存儲(chǔ), 雙字節(jié)存儲(chǔ), 三字節(jié)存儲(chǔ), 四字節(jié)存儲(chǔ), 八字節(jié)存儲(chǔ)?
?
?
mysql類型?和 java類型對(duì)應(yīng)
驅(qū)動(dòng)的?ResultSetImpl 獲取數(shù)據(jù)的時(shí)候有一層封裝?
因此不管是?tinyint, smallint, medinumint, int 在業(yè)務(wù)代碼上面獲取到的都是?Integer?接收?
unsigned_int 因?yàn)?java 中?int?已經(jīng)覆蓋不了值域,?因此使用了?long 來(lái)接受?
bigint 對(duì)應(yīng)于類型?long 接收?
unsigned_bigint 和上面?unsigned_int 同理,?使用了?BigInteger 接收?
decimal, unsigned_bigdecimal 使用了?BigDecimal 接收?
float, double 使用?Float, Double 接收?
?
?
mysql 中?tinyint 的服務(wù)器客戶端的數(shù)據(jù)交互?
創(chuàng)建表?以及插入測(cè)試數(shù)據(jù)
CREATE TABLE `tz_test` (`id` int(11) NOT NULL AUTO_INCREMENT,`field1` tinyint(4) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8INSERT INTO `test`.`tz_test`(`id`, `field1`) VALUES (1, '122');
?
測(cè)試腳本如下?
package com.hx.test07;/*** Test06MysqlTimezone** @author Jerry.X.He* @version 1.0* @date 2023/4/24 16:26*/
public class Test06MysqlTimezone {// Test06MysqlTimezonepublic static void main(String[] args) {String url = "jdbc:mysql://10.60.50.16:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&autoReconnectForPools=true&useSSL=false";String username = "root";String password = "root";JdbcTemplate jdbcTemplate = Test14GenExpertSql.getMysqlJdbcTemplate(url, username, password);String sql = " select * from tz_test; ";List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);int x = 0;}}
?
mysql 是將給定的?tiny?int 的數(shù)據(jù)以?字符串的形式 交互給客戶端的
mysql 服務(wù)器中對(duì)應(yīng)的類型為?TINY?
?
與客戶端的交互, 將給定的?tinyint 轉(zhuǎn)換為?十進(jìn)制 的字符串表示,?然后?響應(yīng)回去
因?yàn)槭菙?shù)字在大多數(shù)的編碼中都是相同的,?所以這里?my_charset_numeric 直接在?mysql 中定義的是?my_charset_latin1
?
?
mysql服務(wù)器 中?tinyint 的數(shù)據(jù)存儲(chǔ)?
以單字節(jié)存儲(chǔ), 可以分為 無(wú)符號(hào) 和 有符號(hào)
這里可以看出, 如果你設(shè)置的數(shù)字超出了 單字節(jié) 可以表示的數(shù)據(jù)的值域, mysql 會(huì)將值調(diào)整為邊界, 比如如下 語(yǔ)句, 會(huì)將 field1 更新為 127
update tz_zone set field1 = 399 where id = '1';
?
?
mysql 中?smallint 的服務(wù)器客戶端的數(shù)據(jù)交互
和上面 tinyint 相同?
mysql 服務(wù)器中對(duì)應(yīng)的類型為?SHORT
?
與客戶端的交互 的轉(zhuǎn)換 和 tinyint 的處理類似?
?
?
mysql 服務(wù)器 smallyint 的存儲(chǔ)
以雙字節(jié)存儲(chǔ), 可以分為 無(wú)符號(hào) 和 有符號(hào)
這里可以看出, 如果你設(shè)置的數(shù)字超出了 單字節(jié) 可以表示的數(shù)據(jù)的值域, mysql 會(huì)將值調(diào)整為邊界, 比如如下 語(yǔ)句, 會(huì)將 field1 更新為 32767
update tz_zone set field1 = 399999999 where id = '1';
?
?
mysql 中?mediumint 的服務(wù)器客戶端的數(shù)據(jù)交互?
和上面 tinyint 相同?
mysql 服務(wù)器中對(duì)應(yīng)的類型為?INT24
?
與客戶端的交互 的轉(zhuǎn)換 和 tinyint 的處理類似?
?
?
mysql 服務(wù)器 mediumint 的存儲(chǔ)
以三字節(jié)存儲(chǔ), 可以分為 無(wú)符號(hào) 和 有符號(hào)
這里可以看出, 如果你設(shè)置的數(shù)字超出了 單字節(jié) 可以表示的數(shù)據(jù)的值域, mysql 會(huì)將值調(diào)整為邊界, 比如如下 語(yǔ)句, 會(huì)將 field1 更新為 8388607
update tz_zone set field1 = 399999999 where id = '1';
?
?
mysql 中?int 的服務(wù)器客戶端的數(shù)據(jù)交互
和上面 tinyint 相同?
mysql 服務(wù)器中對(duì)應(yīng)的類型為?LONG
?
與客戶端的交互 的轉(zhuǎn)換 和 tinyint 的處理類似?
?
?
mysql 服務(wù)器 int 的存儲(chǔ)
以四字節(jié)存儲(chǔ), 可以分為 無(wú)符號(hào) 和 有符號(hào)
這里可以看出, 如果你設(shè)置的數(shù)字超出了 單字節(jié) 可以表示的數(shù)據(jù)的值域, mysql 會(huì)將值調(diào)整為邊界, 比如如下 語(yǔ)句, 會(huì)將 field1 更新為 2147483647
update tz_zone set field1 = 39999999999999 where id = '1';
?
?
mysql 中?bigint 的服務(wù)器客戶端的數(shù)據(jù)交互?
?
和上面 tinyint 相同?
mysql 服務(wù)器中對(duì)應(yīng)的類型為?LONGLONG
?
與客戶端的交互 的轉(zhuǎn)換 和上面同理,?獲取到?longlong, 然后再基于?longlong10_to_str?轉(zhuǎn)換為?字符串表示?
?
?
mysql 服務(wù)器 bigint 的存儲(chǔ)
將傳入的 longlong 轉(zhuǎn)換為 longlong, 然后以八字節(jié)存儲(chǔ)?
?
?
完
?
?
?