毕业设计网站,wordpress文章后添加除非,2817网站,安康市出租车公司文章目录数据类型对照表MySQL 的 int、bigint、mediumint、smallint、tinyint 的对比关于 MySQL 整型显示位数的问题关于 MySQL 的 timestamp关于 JDBC 类型数据类型对照表
MysqlOracleJavaBIGINTNUMBER(19,0)java.lang.LongBITRAWbyte[]BLOBBLOB RAWbyte[]CHARCHARjava.lang.…
文章目录数据类型对照表MySQL 的 int、bigint、mediumint、smallint、tinyint 的对比关于 MySQL 整型显示位数的问题关于 MySQL 的 timestamp关于 JDBC 类型数据类型对照表
MysqlOracleJavaBIGINTNUMBER(19,0)java.lang.LongBITRAWbyte[]BLOBBLOB RAWbyte[]CHARCHARjava.lang.StringDATEDATEjava.sql.DateDATETIMEDATEjava.sql.TimestampDECIMALFLOAT (24)java.math.BigDecimalDOUBLEFLOAT (24)java.lang.DoubleDOUBLE PRECISIONFLOAT (24)java.lang.DoubleENUMVARCHAR2java.lang.StringFLOATFLOATjava.lang.FloatINTNUMBER(10,0)java.lang.IntegerINTEGERNUMBER(10,0)java.lang.IntegerLONGBLOBBLOB RAWbyte[]LONGTEXTCLOB RAWjava.lang.StringMEDIUMBLOBBLOB RAWbyte[]MEDIUMINTNUMBER(7,0)java.lang.IntegerMEDIUMTEXTCLOB RAWjava.lang.StringNUMERICNUMBERREALFLOAT (24)SETVARCHAR2java.lang.StringSMALLINTNUMBER(5,0)java.lang.IntegerTEXTVARCHAR2 CLOBjava.lang.StringTIMEDATEjava.sql.TimeTIMESTAMPDATEjava.sql.TimestampTINYBLOBRAWbyte[]TINYINTNUMBER(3,0)java.lang.BooleanTINYTEXTVARCHAR2java.lang.StringVARCHARVARCHAR2 CLOBjava.lang.StringYEARNUMBERjava.sql.Date
MySQL 的 int、bigint、mediumint、smallint、tinyint 的对比 关于 MySQL 整型显示位数的问题
int(M)tinyint(M)bigint(M)mediumint(M)、smallint(M)后面的 M 不代表占用空间容量即存储的字符数而是代表最小显示位数。也就是说int(1)和int(11)占用的是4个字节tinyint(1)和tinyint(4)占用的是1个字节和M值没有关系。 当存储的数值表面长度小于M值时只有设置了zerofill表示用0来填充才能够看到效果换句话就是说没有zerofillM值就是无用的。
举例子
mysql desc test;
----------------------------------------------
| Field | Type | Null | Key | Default | Extra |
----------------------------------------------
| id1 | tinyint(2) | YES | | NULL | |
| id2 | tinyint(1) | YES | | NULL | |
----------------------------------------------
2 rows in set (0.04 sec)id1是tinyint(2)我插入123行不行
mysql insert into test(id1,id2) values(123,2);
Query OK, 1 row affected (0.00 sec)mysql select * from test;
------------
| id1 | id2 |
------------
| 123 | 2 |
------------
1 row in set (0.00 sec)可见是可以正常插入的。 tinyint(2)的2到底有啥意义我们插入5看下效果
mysql insert into test values(5,10);
Query OK, 1 row affected (0.00 sec)mysql select * from test;
------------
| id1 | id2 |
------------
| 123 | 2 |
| 5 | 10 |
------------
2 rows in set (0.00 sec)有没有发现不论插入的数字表面位数超过2还是小于2都没有任何影响纳闷了到底设置2干啥子呢这就是奇葩了想要看到效果就必须用到zerofill指令如下 mysql alter table test modify id1 tinyint(2) zerofill; // 必须告诉数据库显示位数不足2位时前面要补0
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0mysql select * from test;
------------
| id1 | id2 |
------------
| 123 | 2 |
| 05 | 10 |
------------
2 rows in set (0.00 sec)这样就看到5这个数值最后显示成05了这个意义大不大不大没啥意思 如果不指定显示位数MySQL数据库对于整数型默认分配的显示位数如下 int(11)、tinyint(4)、smallint(6)、mediumint(9)、bigint(20)但是默认情况下没啥意义因为我们创建数据库的时候相关字段根本没有设定zerofill所以就毫无效果
关于 MySQL 的 timestamp
如果不给 timestamp 类型的字段赋值或者赋值 null则默认保存当前系统时间
关于 JDBC 类型
ResultSet 对象中获取列的值的方法
int id rs.getInt(id);
String name rs.getString(name);
int job_id rs.getInt(job_id);
int mgr rs.getInt(mgr);
Date hiredate rs.getDate(hiredate);
// salary 在数据库中的类型是 decimal
BigDecimal salary rs.getBigDecimal(salary);
// bonus 在数据库中的类型是 decimal
BigDecimal bonus rs.getBigDecimal(bonus);
int dept_id rs.getInt(dept_id);PreparedStatement 对象中的设置预编译 SQL 语句参数值的方法
setByte(int parameterIndex, byte x)
setBlob(int parameterIndex, Blob x)
setDouble(int parameterIndex, double x)