2011-09-02 16 views
31

Soy un desarrollador de software. He usado mysql por años y ahora estoy a punto de tener mi primer encuentro con Oracle en un proyecto.¿Cuáles son las principales diferencias entre los dialectos sql de mysql y oracle?

Me acabo de decir que debo tener cuidado de que el sql se comporte de manera bastante diferente en algunos casos. No tengo idea de que esperar. Principalmente estoy buscando cosas obvias y errores típicos de principiante.

Por ejemplo, me dijeron que el oráculo no tiene incremento automático.

Ese es el tipo de cosas que estoy buscando. Agradecería cualquier otro conocimiento que ayude a evitar crear nuevas soluciones a problemas ya resueltos.

+0

+1 por estar en el tema. – Johan

Respuesta

29

Aquí hay un enlace con todas las diferencias entre Oracle y MySQL, de la compañía que es propietaria tanto :-)

Tenga cuidado cuando Google, hay mucha información desactualizada en la red. Haga caso omiso de cualquier cosa que sea anterior a 3 años.

+1

+1 para hacer referencia a la vista del caballo ;-) – DCookie

+0

oh nunca encontré esto primer documento. Miré su página, pero solo encontré una comparación de rendimiento que no me interesa, pero creo que la tabla 2.1 en ese enlace de Oracle es lo que estaba buscando. gracias – Yashima

+0

Me pregunto si algún tipo de unificación está en los planes de Oracle. Creo que es una tontería tener dos productos relacionados con muchas incompatibilidades superficiales. Tener una mejor compatibilidad incluso beneficiaría a Oracle si facilitara la transición del producto barato al costoso: -D – marcus

4

Por ejemplo, me dijeron que el oráculo no tiene incremento automático.

Oracle tiene secuencias; es solo una notación diferente. La idea de un valor de columna que se incrementa automáticamente en INSERT está ciertamente allí.

Oracle hará que agregue claves primarias y foráneas como restricciones, separadas de la definición de la tabla.

PostgreSQL es lo más parecido a Oracle entre las bases de datos de código abierto. También tiene secuencias.

+0

gracias, así que puedo crear el auto-incremento de una manera diferente que es buena. para mi gran vergüenza tengo que admitir que hasta ahora solo he visto un poquito de sybase además de mysql – Yashima

+4

@duffymo, puedes definir restricciones y PKs dentro de la definición de tabla si lo deseas. Consulte las definiciones de restricciones en línea aquí: http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7002.htm#sthref7519 – DCookie

-1

La agrupación es una gran diferencia, ya que MySQL tiene su propia interpretación de agrupación no estándar. Entonces, si está utilizando una gran cantidad de agrupaciones inteligentes, es posible que Oracle no ejecute sus consultas.

http://dev.mysql.com/doc/refman/5.6/en/group-by-hidden-columns.html

+0

Si desea probar el comportamiento de agrupamiento similar a Oracle en el antiguo MySQL, habilite el 'modo only_full_group_by' ver: http://dev.mysql.com/doc/refman/5.6/en/server-sql-mode.html#sqlmode_only_full_group_by – Johan

Cuestiones relacionadas