熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> MySQL >> 正文

Oracle與MySQL的幾點區別

2022-06-13   來源: MySQL 
Oracle數據庫與MySQL數據庫的區別是本文我們主要介紹的內容希望能夠對您有所幫助

   組函數用法規則

  mysql中組函數在select語句中可以隨意使用但在oracle中 如果查詢語句中有組函數那其他列名必須是組函數處理過的或者是group by子句中的列 否則報錯

  eg

  select namecount(money) from user ;這個放在mysql中沒有問題 在oracle中就有問題了

   自動增長的數據類型處理

  MYSQL有自動增長的數據類型插入記錄時不用操作此字段會自動獲得數據值ORACLE沒有自動增長的數據類型需要建立一個自動增長的序列號插入記錄時要把序列號的下一個值賦於此字段

  CREATE SEQUENCE 序列號的名稱 (最好是表名+序列號標記) INCREMENT BY START WITH MAXVALUE CYCLE NOCACHE;

  其中最大的值按字段的長度來定 如果定義的自動增長的序列號 NUMBER() 最大值為

  INSERT 語句插入這個字段值為: 序列號的名稱NEXTVAL

   單引號的處理

  MYSQL裡可以用雙引號包起字符串ORACLE裡只可以用單引號包起字符串在插入和修改字符串前必須做單引號的替換把所有出現的一個單引號替換成兩個單引號

   翻頁的SQL語句的處理

  MYSQL處理翻頁的SQL語句比較簡單用LIMIT 開始位置 記錄個數;PHP裡還可以用SEEK定位到結果集的位置ORACLE處理翻頁的SQL語句就比較繁瑣了每個結果集只有一個ROWNUM字段標明它的位置 並且只能用ROWNUM< 不能用ROWNUM>

  以下是經過分析後較好的兩種ORACLE翻頁SQL語句( ID是唯一關鍵字的字段名 )

  語句一

  SELECT ID [FIELD_NAME] FROM TABLE_NAME WHERE ID IN ( SELECT ID FROM (SELECT ROWNUM AS NUMROW ID FROM TABLE_NAME WHERE 條件 ORDER BY 條件) WHERE NUMROW > AND NUMROW < ) ORDER BY 條件;

  語句二

  SELECT * FROM (( SELECT ROWNUM AS NUMROW c* from (select [FIELD_NAME] FROM TABLE_NAME WHERE 條件 ORDER BY 條件) c) WHERE NUMROW > AND NUMROW < ) ORDER BY 條件;

   長字符串的處理

  長字符串的處理ORACLE也有它特殊的地方INSERT和UPDATE時最大可操作的字符串長度小於等於個單字節 如果要插入更長的字符串 請考慮字段用CLOB類型方法借用ORACLE裡自帶的DBMS_LOB程序包插入修改記錄前一定要做進行非空和長度判斷不能為空的字段值和超出長度字段值都應該提出警告返回上次操作

   日期字段的處理

  MYSQL日期字段分DATE和TIME兩種ORACLE日期字段只有DATE包含年月日時分秒信息用當前數據庫的系統時間為SYSDATE 精確到秒或者用字符串轉換成日期型函數TO_DATE(YYYYMMDD)年小時:分鐘:秒 的格式YYYYMMDD HH:MI:SS TO_DATE()還有很多種日期格式 可以參看ORACLE DOC日期型字段轉換成字符串函數TO_CHAR(YYYYMMDD HH:MI:SS)

  日期字段的數學運算公式有很大的不同MYSQL找到離當前時間天用 DATE_FIELD_NAME > SUBDATE(NOW()INTERVAL DAY)ORACLE找到離當前時間天用 DATE_FIELD_NAME >SYSDATE ;

  MYSQL中插入當前時間的幾個函數是NOW()函數以`YYYYMMDD HH:MM:SS返回當前的日期時間可以直接存到DATETIME字段中CURDATE()以YYYYMMDD的格式返回今天的日期可以直接存到DATE字段中CURTIME()以HH:MM:SS的格式返回當前的時間可以直接存到TIME字段中insert into tablename (fieldname) values (now())

  而oracle中當前時間是sysdate

   空字符的處理

  MYSQL的非空字段也有空的內容ORACLE裡定義了非空字段就不容許有空的內容按MYSQL的NOT NULL來定義ORACLE表結構 導數據的時候會產生錯誤因此導數據時要對空字符進行判斷如果為NULL或空字符需要把它改成一個空格的字符串

   字符串的模糊比較

  MYSQL裡用 字段名 like %字符串%ORACLE裡也可以用 字段名 like %字符串% 但這種方法不能使用索引 速度不快用字符串比較函數 instr(字段名字符串)> 會得到更精確的查找結果

   程序和函數裡操作數據庫的工作完成後請注意結果集和指針的釋放


From:http://tw.wingwit.com/Article/program/MySQL/201404/30556.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.