自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談三大主流數(shù)據(jù)庫 哪一款你更喜愛

運(yùn)維 數(shù)據(jù)庫運(yùn)維 存儲(chǔ)軟件
Oracle 能在所有主流平臺(tái)上運(yùn)行(包括Windows)。完全支持所有的工業(yè)標(biāo)準(zhǔn)。采用完全開放策略??梢允箍蛻暨x擇最適合的解決方案。對(duì)開發(fā)商全力支持,Oracle并行服務(wù)器通過使一組結(jié)點(diǎn)共享同一簇中的工作來擴(kuò)展Windows NT的能力,提供高可用性和高伸縮性的簇的解決方案。

Oracle

Oracle 能在所有主流平臺(tái)上運(yùn)行(包括Windows)。完全支持所有的工業(yè)標(biāo)準(zhǔn)。采用完全開放策略。可以使客戶選擇最適合的解決方案。對(duì)開發(fā)商全力支持,Oracle并行服務(wù)器通過使一組結(jié)點(diǎn)共享同一簇中的工作來擴(kuò)展Windows NT的能力,提供高可用性和高伸縮性的簇的解決方案。如果Windows NT不能滿足需要,用戶可以把數(shù)據(jù)庫移到UNIX中。Oracle的并行服務(wù)器對(duì)各種UNIX平臺(tái)的集群機(jī)制都有著相當(dāng)高的集成度。Oracle獲得***認(rèn)證級(jí)別的ISO標(biāo)準(zhǔn)認(rèn)證.Oracle性能***,保持開放平臺(tái)下的TPC-D和TPC-C的世界記錄Oracle多層次網(wǎng)絡(luò)計(jì) 算,支持多種工業(yè)標(biāo)準(zhǔn),可以用ODBC、JDBC、OCI等網(wǎng)絡(luò)客戶連接。

[[242493]]

Oracle 在兼容性、可移植性、可聯(lián)結(jié)性、高生產(chǎn)率上、開放性也存在優(yōu)點(diǎn)。Oracle產(chǎn)品采用標(biāo)準(zhǔn)SQL,并經(jīng)過美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)所(NIST)測(cè)試。與 IBM SQL/DS,DB2,INGRES,IDMS/R等兼容?!racle的產(chǎn)品可運(yùn)行于很寬范圍的硬件與操作系統(tǒng)平臺(tái)上??梢园惭b在70種以上 不同的大、中、小型機(jī)上;可在VMS、DOS、UNIX、WINDOWS等多種操作系統(tǒng)下工作。能與多種通訊網(wǎng)絡(luò)相連,支持各種協(xié)議(TCP/IP、 DECnet、LU6.2等)。提供了多種開發(fā)工具,能極大的方便用戶進(jìn)行進(jìn)一步的開發(fā)。Oracle良好的兼容性、可移植性、可連接性和高生產(chǎn)率是 Oracle RDBMS具有良好的開放性。

Oracle價(jià)格是比較昂貴的。據(jù)說一套正版的Oracle軟件早在2006年年底的時(shí)候在市場(chǎng)上的價(jià)格已經(jīng)達(dá)到了6位數(shù)。所以如果你的項(xiàng)目不是那種超級(jí)大的項(xiàng)目,還是放棄Oracle吧。

SQL Server

SQL Server 是 Microsoft推出一套產(chǎn)品,它具有使用方便、可伸縮性好、與相關(guān)軟件集成程度高等優(yōu)點(diǎn),逐漸成為Windows平臺(tái)下進(jìn)行數(shù)據(jù)庫應(yīng)用開發(fā)較為理想的 選擇之一。SQLServer是目前流行的數(shù)據(jù)庫之一,它已廣泛應(yīng)用于金融、保險(xiǎn)、電力、行政管理等與數(shù)據(jù)庫有關(guān)的行業(yè)。而且,由于其易操作性及友好的界 面,贏得了廣大用戶的青睞,尤其是SQLServer與其它數(shù)據(jù)庫,如Access、FoxPro、Excel等有良好的ODBC接口,可以把上述數(shù)據(jù)庫 轉(zhuǎn)成SQLServer的數(shù)據(jù)庫,因此目前越來越多的讀者正在使用SQLServer。

SQL Server由于是微軟的產(chǎn)品,又有著如此強(qiáng)大的功能,所以他的影響力是幾種數(shù)據(jù)庫系統(tǒng)中比較大,用戶也是比較多的。它一般是和同是微軟產(chǎn)品的.net平臺(tái)一起搭配使用。當(dāng)然其他的各種開發(fā)平臺(tái),都提供了與它相關(guān)的數(shù)據(jù)庫連接方式。因此,開發(fā)軟件用SQL Server做數(shù)據(jù)庫是一個(gè)正確的選擇。

MySQL

MySQL不支持事務(wù)處理,沒有視圖,沒有存儲(chǔ)過程和觸發(fā)器,沒有數(shù)據(jù)庫端的用戶自定義函數(shù),不能完全使用標(biāo)準(zhǔn)的SQL語法。 

從數(shù)據(jù)庫行家聽說的***件事就是MySQL缺乏transactions,rollbacks, 和subselects的功能。如果你計(jì)劃使用MySQL寫一個(gè)關(guān)于銀行、會(huì)計(jì)的應(yīng)用程序,或者計(jì)劃維護(hù)一些隨時(shí)需要線性遞增的不同類的計(jì)數(shù)器,你將缺乏transactions功能。在現(xiàn)有的發(fā)布版本的 MySQL下,請(qǐng)不要有任何的這些想法。(請(qǐng)注意,MySQL的測(cè)試版3.23.x系列現(xiàn)在已經(jīng)支持transactions了)。 

在非常必要的情況下,MySQL的局限性可以通過一部分開發(fā)者的努力得到克服。在MySQL中你失去的主要功能是subselect語句,而這正是其它的所有數(shù)據(jù)庫都具有的。換而言之,這個(gè)失去的功能是一個(gè)痛苦。 

MySQL沒法處理復(fù)雜的關(guān)聯(lián)性數(shù)據(jù)庫功能,例如,子查詢(subqueries),雖然大多數(shù)的子查詢都可以改寫成join  另一個(gè)MySQL沒有提供支持的功能是事務(wù)處理(transaction)以及事務(wù)的提交(commit)/撤銷(rollback)。一個(gè)事務(wù)指的是被當(dāng)作一個(gè)單位來共同執(zhí)行的一群或一套命令。如果一個(gè)事務(wù)沒法完成,那么整個(gè)事務(wù)里面沒有一個(gè)指令是真正執(zhí)行下去的。對(duì)于必須處理線上訂單的商業(yè)網(wǎng)站來說,MySQL沒有支持這項(xiàng)功能,的確讓人覺得很失望。但是可以用MaxSQL,一個(gè)分開的服務(wù)器,它能通過外掛的表格來支持事務(wù)功能?!?nbsp;

外鍵(foreignkey)以及參考完整性限制(referentialintegrity)可以讓你制定表格中資料間的約束,然后將約束 (constraint)加到你所規(guī)定的資料里面。這些MySQL沒有的功能表示一個(gè)有賴復(fù)雜的資料關(guān)系的應(yīng)用程序并不適合使用MySQL。當(dāng)我們說 MySQL不支持外鍵時(shí),我們指的就是數(shù)據(jù)庫的參考完整性限制--MySQL并沒有支持外鍵的規(guī)則,當(dāng)然更沒有支持連鎖刪除(cascadingdelete)的功能。簡(jiǎn)短的說,如果你的工作需要使用復(fù)雜的資料關(guān)聯(lián),那你還是用原來的Access吧?!?nbsp;

你在MySQL中也不會(huì)找到存儲(chǔ)進(jìn)程(storedprocedure)以及觸發(fā)器(trigger)。(針對(duì)這些功能,在Access提供了相對(duì)的事件進(jìn)程(eventprocedure)。

MySQL+php+apache三者被軟件開發(fā)者稱為“php黃金組合”。

Oracle和MySQL的主要區(qū)別

Oracle:客戶端和命令窗口,都是由用戶決定內(nèi)容-> conn user_name/password;

MySQL:客戶端和命令窗口,都是由數(shù)據(jù)庫決定內(nèi)容-> use datebase;

都可以創(chuàng)建多數(shù)據(jù)庫多用戶,個(gè)人傾向于Oracle一個(gè)數(shù)據(jù)庫中多個(gè)用戶的形式,MySQL多個(gè)數(shù)據(jù)庫多個(gè)用戶形式(***每個(gè)數(shù)據(jù)庫對(duì)應(yīng)一個(gè)用戶)

Oracle是大型數(shù)據(jù)庫而MySQL是中小型數(shù)據(jù)庫,Oracle市場(chǎng)占有率達(dá)40%,MySQL只有20%左右,同時(shí)MySQL是開源的而Oracle價(jià)格非常高。

Oracle支持大并發(fā),大訪問量,是OLTP(On-Line Transaction Processing聯(lián)機(jī)事務(wù)處理系統(tǒng))***的工具。

安裝所用的空間差別也是很大的,MySQL安裝完后才152M而Oracle有3G左右,且使用的時(shí)候Oracle占用特別大的內(nèi)存空間和其他機(jī)器性能。

Oracle也與MySQL操作上的一些區(qū)別

組函數(shù)用法規(guī)則

MySQL中組函數(shù)在select語句中可以隨意使用,但在Oracle中如果查詢語句中有組函數(shù),那其他列名必須是組函數(shù)處理過的,或者是group by子句中的列否則報(bào)錯(cuò)

eg:

select name,count(money) from user;這個(gè)放在MySQL中沒有問題在Oracle中就有問題了。

自動(dòng)增長(zhǎng)的數(shù)據(jù)類型處理

MySQL有自動(dòng)增長(zhǎng)的數(shù)據(jù)類型,插入記錄時(shí)不用操作此字段,會(huì)自動(dòng)獲得數(shù)據(jù)值。Oracle沒有自動(dòng)增長(zhǎng)的數(shù)據(jù)類型,需要建立一個(gè)自動(dòng)增長(zhǎng)的序列號(hào),插入記錄時(shí)要把序列號(hào)的下一個(gè)值賦于此字段。

CREATE SEQUENCE序列號(hào)的名稱(***是表名+序列號(hào)標(biāo)記)INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;

其中***的值按字段的長(zhǎng)度來定,如果定義的自動(dòng)增長(zhǎng)的序列號(hào)NUMBER(6),***值為999999

INSERT語句插入這個(gè)字段值為:序列號(hào)的名稱.NEXTVAL

單引號(hào)的處理

MySQL里可以用雙引號(hào)包起字符串,Oracle里只可以用單引號(hào)包起字符串。在插入和修改字符串前必須做單引號(hào)的替換:把所有出現(xiàn)的一個(gè)單引號(hào)替換成兩個(gè)單引號(hào)。

翻頁的SQL語句的處理

MySQL處理翻頁的SQL語句比較簡(jiǎn)單,用LIMIT開始位置,記錄個(gè)數(shù);PHP里還可以用SEEK定位到結(jié)果集的位置。Oracle處理翻頁的SQL語句就比較繁瑣了。每個(gè)結(jié)果集只有一個(gè)ROWNUM字段標(biāo)明它的位置,并且只能用ROWNUM<100,不能用ROWNUM>80。

以下是經(jīng)過分析后較好的兩種Oracle翻頁SQL語句(ID是唯一關(guān)鍵字的字段名):

語句一:

  1. 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; 

語句二:

  1. 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; 

長(zhǎng)字符串的處理

長(zhǎng)字符串的處理Oracle也有它特殊的地方。INSERT和UPDATE時(shí)***可操作的字符串長(zhǎng)度小于等于4000個(gè)單字節(jié),如果要插入更長(zhǎng)的字符串,請(qǐng)考慮字段用CLOB類型,方法借用Oracle里自帶的DBMS_LOB程序包。插入修改記錄前一定要做進(jìn)行非空和長(zhǎng)度判斷,不能為空的字段值和超出長(zhǎng)度字段值都應(yīng)該提出警告,返回上次操作。

日期字段的處理

MySQL日期字段分DATE和TIME兩種,Oracle日期字段只有DATE,包含年月日時(shí)分秒信息,用當(dāng)前數(shù)據(jù)庫的系統(tǒng)時(shí)間為SYSDATE,精確到秒,或者用字符串轉(zhuǎn)換成日期型函數(shù)TO_DATE('2001-08-01','YYYY-MM-DD')年-月-日24小時(shí):分鐘:秒的格式Y(jié)YYY-MM-DD HH24:MI:SS TO_DATE()還有很多種日期格式,可以參看Oracle DOC.

日期型字段轉(zhuǎn)換成字符串函數(shù)TO_CHAR('2001-08-01','YYYY-MM-DD HH24:MI:SS')

日期字段的數(shù)學(xué)運(yùn)算公式有很大的不同。MySQL找到離當(dāng)前時(shí)間7天用DATE_FIELD_NAME > SUBDATE(NOW(),INTERVAL 7 DAY)Oracle找到離當(dāng)前時(shí)間7天用 DATE_FIELD_NAME >SYSDATE - 7;

MySQL中插入當(dāng)前時(shí)間的幾個(gè)函數(shù)是:NOW()函數(shù)以`'YYYY-MM-DD HH:MM:SS'返回當(dāng)前的日期時(shí)間,可以直接存到DATETIME字段中。CURDATE()以'YYYY-MM-DD'的格式返回今天的日期,可以直接存到DATE字段中。CURTIME()以'HH:MM:SS'的格式返回當(dāng)前的時(shí)間,可以直接存到TIME字段中。例:insert into tablename (fieldname) values (now())

而Oracle中當(dāng)前時(shí)間是sysdate

空字符的處理

MySQL的非空字段也有空的內(nèi)容,Oracle里定義了非空字段就不容許有空的內(nèi)容。按MySQL的NOT NULL來定義Oracle表結(jié)構(gòu),導(dǎo)數(shù)據(jù)的時(shí)候會(huì)產(chǎn)生錯(cuò)誤。因此導(dǎo)數(shù)據(jù)時(shí)要對(duì)空字符進(jìn)行判斷,如果為NULL或空字符,需要把它改成一個(gè)空格的字符串。

字符串的模糊比較

MySQL里用字段名like%'字符串%',Oracle里也可以用字段名like%'字符串%'但這種方法不能使用索引,速度不快,用字符串比較函數(shù)instr(字段名,'字符串')>0會(huì)得到更精確的查找結(jié)果。

程序和函數(shù)里,操作數(shù)據(jù)庫的工作完成后請(qǐng)注意結(jié)果集和指針的釋放。

主鍵

MySQL一般使用自動(dòng)增長(zhǎng)類型,在創(chuàng)建表時(shí)只要指定表的主鍵為auto increment,插入記錄時(shí),不需要再指定該記錄的主鍵值,MySQL將自動(dòng)增長(zhǎng);Oracle沒有自動(dòng)增長(zhǎng)類型,主鍵一般使用的序列,插入記錄時(shí)將序列號(hào)的下一個(gè)值付給該字段即可;只是ORM框架是只要是native主鍵生成策略即可。

責(zé)任編輯:武曉燕 來源: 全棧開發(fā)者社區(qū)
相關(guān)推薦

2019-01-02 13:34:13

Python IDEGeditEclipse

2020-01-13 15:24:22

框架SparkHadoop

2020-08-03 08:32:38

Windows軟件辦公

2021-08-31 07:54:23

數(shù)據(jù)庫選型

2012-09-18 10:39:19

現(xiàn)代數(shù)據(jù)中心數(shù)據(jù)中心數(shù)據(jù)中心分類

2024-02-21 23:40:56

2019-04-25 10:44:18

PHP開源庫C 語言

2015-02-13 09:47:27

華為認(rèn)證思科認(rèn)證

2011-03-01 09:10:19

開源數(shù)據(jù)庫

2022-08-08 07:26:14

Web3數(shù)據(jù)庫Tableland

2018-11-20 09:00:00

TiDBNewSQL數(shù)據(jù)庫

2019-07-02 15:10:58

瀏覽器Chrome移動(dòng)端

2015-08-24 09:21:27

類型程序員

2019-05-23 10:18:19

監(jiān)控組件cpu

2022-09-21 10:40:57

TensorFlowPyTorchJAX

2017-11-08 11:53:54

開源人工智能軟件

2020-03-27 10:54:14

數(shù)據(jù)庫工具技術(shù)

2019-07-30 08:30:40

Python主流數(shù)據(jù)庫

2023-11-13 15:36:24

開源數(shù)據(jù)庫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)