Java类 | MySQL | Oracle | 字节 | 范围 |
Character | char(1) | char(1) | 2 | 0~65535 |
String | varchar(255) | varchar2(255) | ||
String-clob | longtext | clob | ||
Date-date | date | date | ||
Date-time | time | date | ||
Date-timestamp | datetime | date | ||
Boolen | tinyint(1) | number(1) | 1 | true|false |
Byte | tinyint(4) | number(3) | 1 | -128~127 |
Short | smallint(6) | number(5) | 2 | -32768~32767 |
Integer | int(11) | number(10) | 4 | -2147483648~2147483647 |
Long | bigint(20) | number(19) | 8 | -9223372036854775808 ~ 9223372036854775807 |
Float | float | float | 4 | -3.4E38~3.4E38 |
Double | double | float | 8 | -1.7E308~1.7E308 |
BigDecimal | decimal(19,2) | number(19,2) | ||
byte[]-blob | longblob | clob |
1. Float, Double尽量用BigDecimal替代,避免引起精度问题
2. Boolean在数据库中有很多种表示方式,如0|1, Y|N, YES|NO, 甚至用是|否表示 ,所以可以用number(1), char(1)甚至varchar2表示
3. Date类型是一个7字节的定长数据类型,没啥好说的,一个例子:性能a>b>c
a、Where date_colum>=to_date(’01-11-2007’,’dd-mon-yyyy’)
c、Where to_char(date_colum,’yyyy’)=’2007’
4.为什么MySQL和Oracle相差1,看了下面了你应该知道:
类型 | 字节 | 最小值 | 最大值 |
|
| (带符号的/无符号的) | (带符号的/无符号的) |
TINYINT | 1 | -128 | 127 |
|
| 0 | 255 |
SMALLINT | 2 | -32768 | 32767 |
|
| 0 | 65535 |
MEDIUMINT | 3 | -8388608 | 8388607 |
|
| 0 | 16777215 |
INT | 4 | -2147483648 | 2147483647 |
|
| 0 | 4294967295 |
BIGINT | 8 | -9223372036854775808 | 9223372036854775807 |
|
| 0 | 18446744073709551615 |
5.表示数字的有float,decimal等类型,表示文本的有varchar,char,text等类型,如果你想存百分比的话,最好是建个float字段,把百分比计算成数值存进去;
如果你非要存到库里面显示0%-100%这样的数值的话,那就用varchar类型的就可以了,取出的时候,你再换算
举例:
这里我用的是ORACLE9I, 建立了表C_EMP1_T,结构如下:
create table C_EMP1_T
(
EMP_ID NUMBER(20) not null, //用户ID
EMP_NO VARCHAR2(20), //用户编号
EMP_DESC LONG, //用户简历
USED_DATE DATE, //注册日期
EMP_IC_MAC RAW(50), //用户IC卡的MAC号
EMP_ADMIN_FLAG CHAR(1), //管理员标志
EMP_PICTURE BLOB //用户图像
credits FLOAT // 学分
)