4、自动增添类型的区别。* X1 a( N S( N- T) _+ b9 B
+ `3 j4 x% B* m! \; s1 K& m7 l
Oracle有sequence,mysql中没有,但有auto_increment属性。9 P( V/ A& ^& b/ T" x$ S9 V
+ w+ ]1 \" C! y2 r 解决法子是把Oracle中sequence转换成使用auto_increment属性,某些情形可能还有一种法子可以解决问题,新建一个自力的表用来专门记实自动增添型的数据。
) o* h1 {+ ~- o0 l- [9 S' h! z" z$ f" p) l
5、索引长度限制的区别。
4 M. |4 ^" e) U5 T- j; \4 H: w8 n) A$ _7 V }
年夜MySQL 4.1.2起头,MyISAM和InnoDB表索引长度撑持1000字节,也就是说索引字段的长度不能跨越1000字节,如不美观跨越会报这样的错:ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes。如不美观是UTF-8编码,相当于333个字符的长度(因为UTF8一个字符占3个字节)。Oracle的索引长度限制比mysql要宽松得多。
[$ B2 j$ V, b. K6 e! T n. M' m8 @8 A- X: {
解决的法子就不需要多说了,要么改索引的界说,要么改字段的界说长度。7 n6 l$ ~$ Y, ?
0 ~! S$ e/ T9 c) J7 N8 e( L, x
二、为了数据库的兼容性我们应该注重些什么。, G) \, t d. _1 J
1 a& M$ d& O# \( `9 l1 H1 S
数据库的兼容性应该是数据库设计应该正视的一个问题,因为有时辰客户存在已经在用的数据库,而且不但愿同时维护两个数据库,这样的话兼容多种数据库还能成为产物的一个卖点。/ ^) Z" g3 u8 F2 C( k
5 v9 |# ]& t8 G; l0 E5 f$ ^
作到数据库的兼容性关头是遵守尺度用法。/ x( I" A0 z8 O
2 @5 E' j# k8 \+ y$ _ P
1、 遵守尺度用法,尽量不使用某种数据库特有的用法。/ C: f K2 r; j2 P+ Q
7 V& V" y+ A. ?- R/ k
如msyql的‘`’符号的用法,
2 r5 u( c1 C& s1 M7 }% |1 E* z
) `# ], {) {; O 再好比,良多人有这种用法,在使用oracle开发的时辰建树sequence,往表中插数据之前先SELECT seq.nextval FROM DUAL; ,然后把发芽获得的值作为value插入表中,这种用法没法顺应没有sequence的数据库,每个数据库都有自动增添型的用法,如不美观需要使用就应该完全地使用。1 a2 B$ B& d i, Q1 M" @
$ O# R' z( [, |( i) m q& b$ K
再举个例子,分歧的数据库对分页发芽作了扩展,postgresql有offset,limit,oracle就没有。! a2 ]7 Z9 K' c! {
) C3 t2 I: W' p$ _
2、 避免数据库巨细写敏感的问题。
* o9 {1 p H% x1 C: V
5 Y& S4 `: X, C; b- s/ L 选择数据库表名和字段名采用年夜写仍是小写,而且在数据库的设计和编码过程中完全统一。. j7 s& k5 k( q* ~ H9 `1 i
4 Z* K% W' S0 e1 X% P# p( @
3、 保留字。
( c7 E" I1 E+ D
9 `' H V# b; C' Z* @7 ` 要求数据库设计者尽量不使用保留字作表名和字段名。也有良多人有这种用法,在表名和字段名前加‘_’,像这样:create table _tablename ( _id integer)。这样永远不会呈现保留字引起的问题。 |