MySQL数据库中salary列的类型在数据库中是number(8,2)时候怎么填呢?分别代表什么意思呢
1.常规Hibernate 映射
mysqlnumber类型_mysql中数字类型
integer 或者 int
int 或者 ja.lang.Integer
INTEGER
4 字节
long
long Long
BIGINT
8 字节
short
short Short
SMALLINT
2 字节
byte
byte Byte
TINYINT
1 字节
float
float Float
FLOAT
4 字节
double
double Double
DOUBLE
8 字节
big_decimal
ja.math.BigDecimal
NUMERIC
NUMERIC(8,2)8 位
character
char Character String
CHAR(1)
定长字符
string
String
VARCHAR
变长字符串
boolean
boolean Boolean
BIT
布尔类型
yes_no
boolean Boolean
CHAR(1) (Y-N)
布尔类型
true_false
boolean Boolean
CHAR(1) (T-F)
布尔类型
2 、 Ja 时间和日期类型的 Hibernate 映射
映射类型
Ja 类型
标准 SQL 类型
描述
date
util.Date 或者 sql.Date
DATE
YYYY-MM-DD
time
Date Time
TIME
HH:MM:SS
timestamp
Date Timestamp
TIMESTAMP
YYYYMMDDHHMMSS
calendar
calendar
TIMESTAMP
YYYYMMDDHHMMSS
calendar_date
calendar
DATE
YYYY-MM-DD
3 、 Ja 大对象类型的 Hibernate 映射类型
映射类型
Ja 类型
标准 SQL 类型
MySQL 类型
Oracle 类型
binary
byte[]
VARBINARY( 或 BLOB)
BLOB
BLOB
text
String
CLOB
TEXT
CLOB
serializable
Serializable 接口任意实现类
VARBINARY( 或 BLOB)
BLOB
BLOB
clob
ja.sql.Clob
CLOB
TEXT
CLOB
blob
ja.sql.Blob
BLOB
BLOB
BLOB
在程序中通过 Hibernate 来保存 ja.sql.Clob 或者 ja.sql.Blob 实例时,必须包含两个步骤:
1.在一个数据库事务中先保存一个空的 Blob 或 Clob 实例。
2.接着锁定这条记录,更新上面保存的 Blob 或 Clob 实例,把二进制数据或文本数据写到 Blob 或 Clob 实例中
oracle中的number类型对应mysql里面什么类型啊
Number在Oracle中是数值型的统称,可以表示Oracle中的所有数值。而MySQL没有数值的统称,只有分别的数据类型,例如 INT、FLOAT、DOUBLE等。
MySQL的数值类型有如下几种 :
扩展资料
ORACLE的数据类型
CHAR 固定长度字符串,长度2000 bytes;
VARCHAR2 可变长度的字符串 长度4000 bytes 可做索引的长度749;
NCHAR 根据字符集而定的固定长度字符串 长度2000 bytes;
NVARCHAR2 根据字符集而定的可变长度字符串 长度4000 bytes;
DATE 日期(日-月-年) DD-MM-YY(HH-MI-SS);
LONG 数据类型中存储的是可变长字符串,长度限制是2GB;
RAW 固定长度的二进制数据 长度2000 bytes 可存放多媒体图象声音等;
LONG RAW 可变长度的二进制数据 长度2G 可存放多媒体图象声音等;
BLOB 二进制数据 长度4G;
CLOB 字符数据 长度4G;
CLOB 根据字符集而定的字符数据 长度4G ;
BFILE 存放在数据库外的二进制数据 长度4G ;
ROWID 数据表中记录的行号 10 bytes ..格式,为0或1;
NROWID 二进制数据表中记录的行号 长度4000 bytes;
NUMBER(P,S) 数字类型 P为总位数,S为小数位数;
DECIMAL(P,S) 数字类型 P为总位数,S为小数位数;
INTEGER 整数类型 小的整数;
FLOAT 浮点数类型 NUMBER(38),双精度;
REAL 实数类型 NUMBER(63),精度更高。
MySQL的数据类型
整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT;
浮点数类型:FLOAT、DOUBLE、DECIMAL;
字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB;
日期类型:Date、DateTime、TimeStamp、Time、Year;
其他数据类型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection。
参考资料来源:
参考资料来源:
mysql建索致insert失败
我们知道,mysql 如果设置了主键或者约束,再插入相同的值会报错。
假设表中设置name字段为索引,在存在 name = '张三' 的情况下,再插入"张三",
insert into sc (name,class,score) values ('张三','三年二班',90);
报错信息如下:> 1062 - Duplicate entry '张三' for key 'name'
那么,对于这种存在键冲突时,如何避免呢?下面,介绍三种方式:
1. insert ignore
insert ignore会忽略数据库中已经存在的数据(根据主键或者索引判断),如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据.
insert ignore into sc (name,class,score) values ('张三','三年二班',90)
执行上面的语句,会发现并没有报错,但是主键还是自动增长了。
2. replace into
replace into 首先尝试插入数据到表中。如果发现表中已经有此行数据(根据主键或者索引判断)则先删除此行数据,然后插入新的数据,否则,直接插入新数据。
使用replace into,你必须具有delete和insert权限
replace into sc (name,class,score) values ('张三','三年二班',90);
此时会发现吕布的班级跟年龄都改变了,但是id也变成的了,所以不是更新,是删除再新增.
3. insert on duplicate key update
如果在insert into 语句末尾指定了on duplicate key update,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致重复的问题,则插入新行,跟普通的insert into一样。
使用insert into,你必须具有insert和update权限
如果有新记录入,则受影响行的值显示1;如果原有的记录被更新,则受影响行的值显示2;如果记录被更新前后值是一样的,则受影响行数的值显示0
insert into sc (name,class,score) values ('张三','三年二班',90) on duplicate key update score=100;
旧数据中张三是三年二班,90分,现在插入,发现只有分数变成了100,班级并没有改变。
id没有发生变化,数据只更新,但是auto_increment还是增长1了。
结论:
这三种方法都能避免主键或者索引重复导致的插入失败问题。
insert ignore 能忽略重复数据,只插入不重复的数据。
replace into 和 insert … on duplicate key update,都是替换原有的重复数据,区别在于replace into是删除原有的行后,再插入新行,如有自增id,这个会造成自增id的改变;insert … on duplicate key update在遇到重复行时,会直接更新原有的行,具体更新哪些字段怎么更新,取决于update后的语句。
oracle的number 19插入到mysql的int 19报错
可能的原因是你为int型增加了精度或者是你的oracle版本过低造成的。
因为在oracle中int型与integer型都是number类型的子类型(int是integer的简写),是为了兼容ANSI/ISO和IBM的数据类型而定义的,它的存储精度是38位,在创表时不要用int型,用int会浪费存储空间,int型列可以定义为number(数字)。
如果是oracle版本过低造成的,您可以尝试安装版本。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至836084111@qq.com 举报,一经查实,本站将立刻删除。