MySql和oracle的不同


一、語法的不同

  1、oracle沒有offet,limit關鍵字,所以在oracle中要分頁的話,要換成rownum

  2、oracle建表時,沒有auto_increment,所有要想讓表的主鍵自增,要自己添加序列。

  3、oracle有一個dual表,當select后沒有表時,加上的。不加會報錯的。select 1 這個在mysql不會報錯的,oracle下會。select 1 from dual這樣的話,oracle就不會報錯了。

  4、對空值的判斷,name != ""這樣在mysql下不會報錯的,但是oracle下會報錯。在oracle下的要換成name is not null

  5、oracle下對單引號,雙引號是有要求的,一般不准用雙引號,用了會報錯(ERROR at line 1: ORA-00904: "t": invalid identifier),而mysql就沒有這樣的限制。

  6、oracle表的字段是number型的,如果你$post得到的參數是123456,入庫的時候,你需要用to_number,to_date這樣的函數來強制轉換一下,不然后會被當成字符串來處理。而mysql卻不會。

  7、group_concat這個函數,oracle是沒有的,如果要想用自已寫方法。

  8、mysql的用戶權限管理,是放到mysql自動帶的一個數據庫mysql里面的,而oracle是用戶權限是根着表空間走的。(這點我感覺要好好理解下)

  9、在oracle下用group by的話,group by后面的字段必須在select后面出現,不然會報錯的,而mysql卻不會。

  10、mysql存儲引擎有好多,常用的mysiam,innodb等,而創建oracle表的時候,好像只有一個存儲引擎。

  11、oracle字段無法選擇位置,alter table add column before|after,這樣會報錯的,即使你用sql*plus這樣的工具,也沒法改字段的位置。

  12、oracle的表字段類型也沒有mysql多,並且有很多不同,例如:mysql的int,float對應oracle的number型等。

  13、oracle查詢時from 表名后面 不能加上as不然會報錯的,select t.username from test as t而在mysql下是可以的。

  14、oracle中是沒有substring這個函數的,mysql是有的。

 

二、mysql移植到oracle中的表類型轉換

MYSQL                  ORACLE
BLOB(220)             RAW(220)
BLOB (20)             RAW(20)
BLOG(1024)             RAW(1024)
VARCHAR(n)             VARCHAR2(n)
CHAR CHAR
FLOAT(22,6)            NUMBER(22,6)
DOUBLE(44,12)          NUMBER(44,12)
TINYINT (3)            NUMBER(3)
SMALLINT(5)            NUMBER(5)
MEDIUMINT(8)           NUMBER(8)
INT(10)                NUMBER(10)
BIGINT(20)             NUMBER(20)
DATATIME               DATA

 

 

附錄:

      參見大神的博客: http://www.cnblogs.com/HondaHsu


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM