2012-01-12 134 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!