数据库的跨平台设计_MySQL
别使用存储过程
在某些编程环境下,出于效率和安全等方面的原因,存储过程成为程序员开发数据库应用程序的唯一方法。Visual Basic、C和Java程序员都并不需要了解SQL。然而,在其他某些编程环境下,存储过程又是完全禁用的。MySQL通常和Apache Web服务器组合使用,这是因为这两种软件不仅免费、可靠而且功能强大,但是,恰恰是MySQL不支持存储过程。
--------------------------------------------------------------------------------
存储过程的定义
所谓存储过程就是组成一个逻辑单元而且执行特别任务的一组SQL语句。存储过程用来封装针对数据库服务器的一整套操作或查询。
--------------------------------------------------------------------------------
Oracle和SQL服务器两者都包括了“内建”的存储过程,其使用也是很方便的。可是,如果明智的话千万别指望它们,你无法保证数据库管理员是否锁定、删除或修改了这些存储过程。如果你发现可用的某些存储过程正是你需要的,你这才可以在自己的代码中使用它们的功能。
通常,你能在Oracle或SQL Server上使用存储过程但在MySQL上则无法利用。如果你确实用到了它们,那么你得保证自己没有用到同特定平台相关的命令(以后讨论)。
别使用连接
连接是Oracle和SQL Server 这两种DBMS上令人头痛的一个问题,因为这两种系统在连接的概念上有根本的不同。基本上,各个DBMS的连接工作原理不总是一样的,而且你最终可能会得到意外的结果集合。在我们谈论各个系统有关连接的概念差别以及如何解决这些问题之前,你应该理解基本的连接子句:
连接
Join(连接)是从多个数据源获取数据的SQL数据表创建命令。
等连接
Equi-Join从两个独立的数据源获取数据并把它们组合成一个大表。
内/外连接
内连接(Inner Join)把两个表的内部列连接起来。外连接把两个表的外部列连接起来。
左/右连接
左连接(Left Join)连接两个表左边的列。右连接则连接两个表右边的列。
复合/复杂连接
其他各种连接―左/内、左/外、右/内和右/外等。
反正你得记清楚了,如果你想要自己的应用程序能在各种数据库服务器上都能工作那么就别使用连接。
ANSI SQL:CREATE, DROP, ADD, UPDATE, DELETE, INSERT, SELECT
总之,你应当用到的唯一命令如下:
数据定义语言(DDL)下的CREATE 和DROP。
数据操作语言(DML)下的ADD、UPDATE、DELETE和INSERT 。
获取数据的SELECT。
如果你在这些命令中使用了区分大小写的表格或字段名,或者这些名字包含了空格或其它特殊字符,那么你最好用方括号把名字围起来。这样做有助于防止非标准字符引发DBMS的不正常反应。
引用的完整性:键和数据类型
使用关系数据库的决定性原因就是明确数据之间的关系而且维持那些关系的完整性。这样才能让开发者以最小的冗余性、最高效的方式存储数据。键定义了关系。数据类型定义了存储和操作数据的规则。这些就是一个数据库的基本方面,但是具体的语法却可能因为数据库的不同而不同。