1. 程式人生 > >每天學習點--------第六天(2017-10-10) 摘要: mysql和Oracle的區別

每天學習點--------第六天(2017-10-10) 摘要: mysql和Oracle的區別

field 最大值 create ora sys 返回 sequence 系統 doc

1、自動增長數據類型的處理

  Mysql有自動增長的數據類型,插入記錄時不用操作此字段,會自動獲取數據值。Oracle沒有自動增長的數據類型,需要建立一個自動增長的序列號,插入記錄時要把序列號的下一個值賦予此字段

  CREATE SEQUENCE 序列號的名稱(表明+序列號 標記)increment by 1 start with 1 maxvalue 99999 cycle nocache

  其中最大的值按字段的長度決定,如果定義的自動增長的序列號NUMBER(6),最大值為999999 。INSERT 語句插入這個字段為.NEXTVAL

2、單引號的 處理

  Mysql可以用雙引號包起字符串,Oracle只可以用單引號包起字符串。在插入和修改字符串前必須做單引號的轉換;把所有出現的一個單引號換成雙引號

3、翻頁SQL語句的處理

  Mysql處理翻頁的Sql語句比較簡單,用limit開始位置,記錄個數;PHP裏還可以用SEEK定位到結果集的位置。Oracle處理翻頁的SQL語句就比較繁瑣了。每個結果集只有一個ROWNUM字段標明它的位置,並且只能用ROWNUM < 100 不能用ROQNUM > 80

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

技術分享

技術分享

4、長字符串的處理

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

5、日期字段的處理

MYSQL日期字段分為DATE何TIME兩種。ORACLE日期字段只有DATE,包含年 月 日 時 分 秒信息,用當前數據庫當前系統時間為SYSDATE,精確到秒,或者用字符串轉化成日期型函數TO_DATE(‘<st1:chsdate isrocdate="False" islunardate="False" day="1" month="8" year="2001">2001-08-01</st1:chsdate>’,’YYYY-MM-DD’年-月-日 24小時:分鐘:秒 的格式YYYY-MM-DD HH24:MI:SS TO_DATE()還有很多種日期格式可以參看ORACLE DOC.日期型字段轉換成字符串函數TO_CHAR(‘<st1:chsdate isrocdate="False" islunardate="False" day="1" month="8" year="2001">2001-08-01</st1:chsdate>’,’YYYY-MM-DD HH24:MI:SS’)

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

6、空字符串的處理

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

7、字符串的模糊的比較

MYSQL中用字段名 LIKE ‘%字符串%’,ORACLE裏面也可以用 字段名 LIKE ‘%字符串%’,但是這種方法不能使用索引,速度不快。用字符串比較函數instr(‘’字段名),‘’字符串> 0 會得到更精確的查找結果

8、程序和函數裏操作數據庫的工作完成以後請註意結果集和指針的釋放

每天學習點--------第六天(2017-10-10) 摘要: mysql和Oracle的區別