2012-01-12 133 views
8

這是我第一次嘗試使用數據庫,所以請耐心等待。MySQL/SQLite/etc數據庫之間的區別?

我需要編寫一個程序來使用我還沒有訪問的數據庫。我知道有MySQL,SQLite和其他一些SQL的東西,但我不確定它們之間的區別是什麼。在我可以使用它之前,我是否需要知道它是什麼類型的數據庫(即,是不同於SQLite .db文件的MySQL .db文件?),還是文件本身將是相同的,區別在於它被訪問?

編輯:我正在編寫Android平板電腦,這可能很重要。但我不會創建數據庫,它將被提供給我,我必須使用它。

+0

到目前爲止所有的答案都很好。全部檢查出來。 – 2012-01-12 17:15:09

回答

8

您可能想要通過創建MySQL數據庫的視圖教程和SQLite實例來查看它們的工作方式以及如何輕鬆地與它們進行交互。

訪問每個涉及適配器,儘管創建您需要的表,用戶訪問(用戶名/密碼/角色來訪問表)。

這裏有一個直接的sqlite的教程: http://zetcode.com/db/sqlite/

這裏有一個staight進SQL教程: http://zetcode.com/databases/mysqlphptutorial/

我記得被淹沒與數據庫我的第一次。我的建議是從一個支持良好的社區,以及搜索結果開始 - 大量的教程,,您可以在其中掌握基本知識

然後,根據您的應用程序要求和平臺限制,您可以確定樞軸的位置。但是回顧一下數據庫之間的差異,而沒有真正與他們合作,就像嘗試壽司而不吃魚一樣。

編輯:

如果您使用的是Android建設,是的,學習的SQLite。

我強烈推薦這個教程,以幫助您看到在Android項目中使用的SQLite: http://developer.android.com/resources/tutorials/notepad/index.html

對於數據抽象/ ORM,你應該熟悉與內容提供商和光標(http://developer.android.com/guide/topics/providers/content-providers.html

好查詢!

4

首先,您需要知道它是什麼類型的數據庫才能連接到它,因爲您需要爲您的平臺使用適當的數據庫驅動程序。 mySQL,Oracle,Postgres,SQL Server等都將使用不同的驅動程序作爲與之通信的二進制協議(來回驗證和傳輸信息)是不同的。

至於你的實際SQL代碼,它取決於。大多數情況下,您可以依靠SELECT * FROM Foo與地球上任何符合SQL的數據庫一起工作。但是,一旦你開始做更復雜的事情或者使用非標準的關鍵字,你可能會遇到麻煩。例如,某些數據庫支持USING關鍵字JOIN,有些則不支持。

你可能會看到的一件事是ORM。這將允許您從程序中提取實際的SQL方言,然後(大部分)不必擔心實際的SQL。一些流行的ORM是ActiveRecord(用於Ruby on Rails)和Entity Framework for .NET。希望這可以幫助!

UPDATE:

由於Android標記剛添加到了後,我做了支持Android和與this想出了SqlLite奧姆斯快速搜索。也許值得檢查一下,或者有人可以評論它是否有好處:)

3

數據庫抽象層是一個聰明的中間人的策略,所以你可以在不知道你的底層數據庫系統的情況下進行編程。數據庫抽象在實踐中並不像聽起來那麼烏托邦,大多數人直接爲特定數據庫編程。您可能會發現,您選擇的數據庫獲得的經驗越多,希望您越瞭解其特定的細微差別就越好。所以最簡單的答案是有足夠的差異來說明問題!

如果使用模型 - 視圖 - 控制器這樣的軟件架構模式,它可以使您無論使用哪種數據庫都可以執行大量編程。以Model-View-Controller爲例,您可以在不知道您使用的數據庫的情況下對控制器和視圖進行編程。

在決定數據庫系統之前,你可以做什麼的限制是不好的事實,好的編程習慣需要胖模型和皮包骨架控制器。因此,您的實際編程工作中很大一部分被您選擇的數據庫解決方案所挾持。

如果我不知道將使用什麼數據庫,我會開始編程我的視圖,然後我的控制器。如果PHP是你的語言,你可能會發現一個CodeIgniter教程的啓發。

2

關於「適當使用SQLite的」

http://www.sqlite.org/whentouse.html

總結的文章:清單選擇正確的數據庫引擎

  1. 是通過網絡從應用程序分離的數據? →選擇客戶端/服務器
  2. 許多併發作者? →選擇客戶端/服務器
  3. 大數據? →選擇客戶端/服務器
  4. 否則→選擇SQLite!