orecal數據庫和mysql的區別(orcal與mysql區別)

本文目錄一覽:

oracle和mysql區別

oracle和mysql區別:

1、體積不同。oracle是oracle的數據庫產品,它體積比較龐大,一般是用來開發大型應用(例如分佈式)的。而mysql的體積相對來說比較小,較之oracle更容易安裝、維護以及管理,操作也簡單,最重要的是它是三個中唯一一個開源數據庫,但目前也屬於Oracle公司的產品了。

2、容量不同。Oracle容量無限,根據配置決定;而mysql使用MyISAM存儲引擎,最大表尺寸為65536TB。MySQL數據庫的最大有效表尺寸通常是由操作系統對文件大小的限制決定的,而不是由MySQL內部限制決定。

3、平台支持及速度的區別。Oracle支持大對數平台;而mysql支持各種平台,適合Linux。至於速度,oracle在linux下的性能,在少量數據時速度低於mysql,在千萬級時速度快於Mysql。

4、數據庫崩潰造成的影響不同。oracle數據庫崩潰後恢復很麻煩,因為他把很多東西放在內存里;數據庫連接要慢些,最好用連接池;而mysql使用缺省的ip端口,但是有時候這些ip也會被一些黑客闖入,使用myisam配置,不慎損壞數據庫,結果可能會導致所有的數據丟失。

5、性能的區別。Oracle全面,完整,穩定,但一般數據量大,對硬件要求較高;而mysql使用CPU和內存極少,性能很高,但擴展性較差。

6、授權價格區別。Oracle價格較貴,例如Oracle10G//11G標準版[10用戶]¥25600,Oracle10G//11G標準版[1CPU無限用戶]¥157600。而MySQL採用雙重授權,他們是GPL和MySQLAB制定的商業許可協議。如果你在一個遵循GPL的自由項目中使用MySQL,那麼你可以遵循GPL協議免費使用MySQL。否則,你需要購買MySQLAB制定的那個商業許可協議。

mysql和oracle的區別有什麼?

mysql和oracle的區別如下

1、主鍵不同

Mysql一般使用自動增長類型,在創建表時只要指定表的主鍵為autoincrement,插入記錄時,不需要再指定該記錄的主鍵值,Mysql將自動增長。Oracle沒有自動增長類型,主鍵一般使用的序列,插入記錄時將序列號的下一個值付給該字段即可;只是ORM框架是只要是native主鍵生成策略即可。

2、長字符串的處理不同

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

3、單引號的處理不同

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

oracle和mysql區別是什麼?

oracle和mysql區別是:所屬公司的不同、數據庫的層次結構的不同、數據庫中表字段類型的不同。

1、所屬公司的不同

mysql與oracle都是關係型數據庫,應用於各種平台。mysql最開始是一個瑞典公司開發的,但後來被sun公司收購,後來sun又被oracle收購,所以現在可以說mysql屬於甲骨文公司了,mysql開源免費的,而oracle則是收費的,並且價格非常高。

mysql默認端口:3306,默認用戶:root。

oracle默認端口:1521,默認用戶:system。

2、數據庫的層次結構的不同

mysql:默認用戶是root,用戶下可以創建好多數據庫,每個數據庫下還有好多表,一般情況下都是使用默認用戶,不會創建多個用戶。

oracle:創建一個數據庫,數據庫下有好多用戶:sys、system、scott等,不同用戶下有好多表,一般情況下只創建一個數據庫用。

3、數據庫中表字段類型的不同

mysql:int、float、double等數值型,varchar、char字符型,date、datetime、time、year、timestamp等日期型。

oracle:number(數值型),varchar2、varchar、char(字符型),date(日期型)等…

其中char(2)這樣定義,這個單位在oracle中2代表兩個位元組,mysql中代表兩個字符。

其中varchar在mysql中,必須給長度例如varchar(10)不然插入的時候出錯。

oracle數據庫和mysql數據庫的區別

Oracle數據庫與MySQL數據庫的區別是本文我們主要介紹的內容,希望能夠對您有所幫助。

1.組函數用法規則

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

eg:

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

2.自動增長的數據類型處理

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

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

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

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

3.單引號的處理

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

4.翻頁的SQL語句的處理

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

以下是經過分析後較好的兩種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 條件1 ORDER BY 條件2) WHERE NUMROW 80 AND NUMROW

100 ) ORDER BY 條件3;

語句二:

SELECT * FROM (( SELECT ROWNUM AS

NUMROW, c.* from (select [FIELD_NAME,…] FROM TABLE_NAME WHERE 條件1

ORDER BY 條件2) c) WHERE NUMROW 80 AND NUMROW 100 ) ORDER BY

條件3;

5.長字符串的處理

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

6.日期字段的處理

MYSQL日期字段分DATE和TIME兩種,ORACLE日期字段只有DATE,包含年月日時分秒信息,用當前數據庫的系統時間為SYSDATE,精確到秒,或者用字符串轉換成日期型函數TO_DATE(『2001-08-01』,』YYYY-MM-DD』)年-月-日24小時:分鐘:秒的格式YYYY-MM-DD

HH24:MI:SS TO_DATE()還有很多種日期格式,可以參看ORACLE

DOC.日期型字段轉換成字符串函數TO_CHAR(『2001-08-01』,』YYYY-MM-DD HH24:MI:SS』)

日期字段的數學運算公式有很大的不同。MYSQL找到離當前時間7天用DATE_FIELD_NAME

SUBDATE(NOW(),INTERVAL 7 DAY)ORACLE找到離當前時間7天用 DATE_FIELD_NAME

SYSDATE – 7;

MYSQL中插入當前時間的幾個函數是:NOW()函數以`’YYYY-MM-DD

HH:MM:SS’返回當前的日期時間,可以直接存到DATETIME字段中。CURDATE()以』YYYY-MM-DD』的格式返回今天的日期,可以直接存到DATE字段中。CURTIME()以』HH:MM:SS』的格式返回當前的時間,可以直接存到TIME字段中。例:insert

into tablename (fieldname) values (now())

而oracle中當前時間是sysdate

7.空字符的處理

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

8.字符串的模糊比較

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

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

=======================================================================================

1. Oracle是大型數據庫而Mysql是中小型數據庫,Oracle市場佔有率達40%,Mysql只有20%左右,同時Mysql是開源的而Oracle價格非常高。

2. Oracle支持大並發,大訪問量,是OLTP最好的工具。

3. 安裝所用的空間差別也是很大的,Mysql安裝完後才152M而Oracle有3G左右,且使用的時候Oracle佔用特別大的內存空間和其他機器性能。

4.Oracle也Mysql操作上的區別

①主鍵

Mysql一般使用自動增長類型,在創建表時只要指定表的主鍵為auto increment,插入記錄時,不需要再指定該記錄的主鍵值,Mysql將自動增長;Oracle沒有自動增長類型,主

鍵一般使用的序列,插入記錄時將序列號的下一個值付給該字段即可;只是ORM框架是只要是native主鍵生成策略即可。

②單引號的處理

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

③翻頁的SQL語句的處理

MYSQL處理翻頁的SQL語句比較簡單,用LIMIT 開始位置, 記錄個數;ORACLE處理翻頁的SQL語句就比較繁瑣了。每個結果集只有一個ROWNUM字段標明它的位置, 並且只能用

ROWNUM100, 不能用ROWNUM80

④ 長字符串的處理

長字符串的處理ORACLE也有它特殊的地方。INSERT和UPDATE時最大可操作的字符串長度小於等於4000個單位元組, 如果要插入更長的字符串, 請考慮字段用CLOB類型,方法借用

ORACLE里自帶的DBMS_LOB程序包。插入修改記錄前一定要做進行非空和長度判斷,不能為空的字段值和超出長度字段值都應該提出警告,返回上次操作。

⑤空字符的處理

MYSQL的非空字段也有空的內容,ORACLE里定義了非空字段就不容許有空的內容。按MYSQL的NOT NULL來定義ORACLE表結構, 導數據的時候會產生錯誤。因此導數據時要對空字符

進行判斷,如果為NULL或空字符,需要把它改成一個空格的字符串。

⑥字符串的模糊比較

MYSQL里用 字段名 like ‘%字符串%’,ORACLE里也可以用 字段名 like ‘%字符串%’ 但這種方法不能使用索引, 速度不快。

⑦Oracle實現了ANSII SQL中大部分功能,如,事務的隔離級別、傳播特性等而Mysql在這方面還是比較的弱。

mysql跟oracle的區別

1. mysql和oracle都是關係型數據庫,可以應用於各種平台。我們用的oracle的版本是oracle11g ,用的mysql的版本是mysql5.5。mysql最開始是瑞典一個公司開發的,開源的,但是後來被sun公司收購,後來sun又被oracle收購,所以現在可以說mysql屬於甲骨文公司了!現在用mysql的公司也有很多,mysql價錢便宜些,處理千萬級別的數據不成問題的,並且開源,很友好!

2. mysql默認端口:3306 默認用戶root

oracle默認端口 1521 默認用戶system

3. mysql的安裝卸載簡單,oracle很麻煩,動不動就要害的大家重做系統(迷醉)

4. oracle在命令行用命令登陸:sqlplus—然後錄入賬號密碼

mysql在命令行用命令登陸: mysql -hlocalhost -uroot -p123123

(開頭字母代表 —– h:host u:user p:password,並且這些命令要想正常運行,那必須要在環境變量path中配置好)

5. 在初學階段,圖形化工具,oracle 一般用PLSQL ,mysql 一般用navicat。假如別的你用着習慣比如sqlyog小海豚啥的當然也沒有問題。

6. 關於數據庫的層次結構:

oracle:創建一個數據庫,數據庫下有好多用戶:sys,system,scott等,不同用戶下還有好多表。我們自己練習一般就創建一個數據庫用。

mysql:默認用戶是root,用戶下可以創建好多數據庫,每個數據庫下還有好多表。我們一般自己練習就用默認用戶,不會創建多個用戶。

7.數據庫中表字段的類型:

oracle:number(數值型),varchar2,varchar,char (字符型),date 日期型 等

mysql:int,float,double等數值型,varchar,char字符型,date,datetime,time,year,timestamp等日期型。

其中char(2)這樣定義,這個單位在oracle中2代表兩個位元組,mysql中代表兩個字符。

其中varchar在mysql中 必須給長度例如varchar(10) 不然插入的時候出錯。

8.主鍵遞增操作:

oracle:可以藉助序列

mysql:利用自增 auto_increment

原創文章,作者:MLZUU,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/127563.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
MLZUU的頭像MLZUU
上一篇 2024-10-03 23:15
下一篇 2024-10-03 23:16

相關推薦

  • Python中new和init的區別

    new和init都是Python中常用的魔法方法,它們分別負責對象的創建和初始化,本文將從多個角度詳細闡述它們的區別。 一、創建對象 new方法是用來創建一個對象的,它是一個類級別…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • Sublime Test與Python的區別

    Sublime Text是一款流行的文本編輯器,而Python是一種廣泛使用的編程語言。雖然Sublime Text可以用於編寫Python代碼,但它們之間有很多不同之處。接下來從…

    編程 2025-04-29
  • Shell腳本與Python腳本的區別

    本文將從多個方面對Shell腳本與Python腳本的區別做詳細的闡述。 一、語法差異 Shell腳本和Python腳本的語法存在明顯差異。 Shell腳本是一種基於字符命令行的語言…

    編程 2025-04-29
  • Python中while語句和for語句的區別

    while語句和for語句是Python中兩種常見的循環語句,它們都可以用於重複執行一段代碼。然而,它們的語法和適用場景有所不同。本文將從多個方面詳細闡述Python中while語…

    編程 2025-04-29
  • Web程序和桌面程序的區別

    Web程序和桌面程序都是進行軟件開發的方式,但是它們之間存在很大的區別。本文將從多角度進行闡述。 一、運行方式 Web程序運行於互聯網上,用戶可以通過使用瀏覽器來訪問它。而桌面程序…

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的數據庫存儲引擎

    本文將介紹兩款高性能的數據庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • TensorFlow和Python的區別

    TensorFlow和Python是現如今最受歡迎的機器學習平台和編程語言。雖然兩者都處於機器學習領域的主流陣營,但它們有很多區別。本文將從多個方面對TensorFlow和Pyth…

    編程 2025-04-28

發表回復

登錄後才能評論