- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库的跨平台设计--.doc
数据库的跨平台设计
开发者们应该知道,使用那些非标准的SQL命令(比如Oracle、微软和MySQL等数据库系统)存在程度相当高的危险。也就是说,从跨平台和遵守标准的角度出发,你应该尽量采用ANSI SQL,它是一种和平台无关的数据库语言。不管你在使用哪种数据库系统,如果它完全支持SQL那么它就应该支持ANSI SQL-92标准。可是,应该支持和确实支持完全是两码事。在进行DBMS跨平台编程的时候,并不是所有的系统都完全支持ANSI SQL标准。这篇文章主旨就是提出使用非标准SQL时所存在的风险及其相关的建议。
别使用存储过程
在某些编程环境下,出于效率和安全等方面的原因,存储过程成为程序员开发数据库应用程序的唯一方法。Visual Basic、C和Java程序员都并不需要了解SQL。然而,在其他某些编程环境下,存储过程又是完全禁用的。MySQL通常和Apache ySQL不支持存储过程。
存储过程的定义
所谓存储过程就是组成一个逻辑单元而且执行特别任务的一组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的不正常反应。
引用的完整性:键和数据类型
使用关系数据库的决定性原因就是明确数据之间的关系而且维持那些关系的完整性。这样才能让开发者以最小的冗余性、最高效的方式存储数据。键定义了关系。数据类型定义了存储和操作数据的规则。这些就是一个数据库的基本方面,但是具体的语法却可能因为数据库的不同而不同。
数据类型
只有很少部分的数据类型得到所有数据库服务器的支持。每一种DBMS都有它自己的数据类型以及为什么要这样使用它们的原因。某些专有数据类型(比如Microsoft Access的AUTONUMBER)用起来确实相当方便。
以下是ANSI数据类型:
BIT, CHARACTER, DATE, DECIMAL, DOUBLE PRECISION, FLOAT, INTEGER, INTERVAL, NUMERIC, REAL, SMALLINT, TIMESTAMP, TIME, VARBIT, VARCHAR, CHAR
以下是Oracle/Access/SQL不支持的标准数据类型:
INTERVAL, TIME, VARBIT
只有Oracle才支持DATE,但是以下的标准数据类型不被Oracle支持:
BIT, DECIMAL, NUMERIC, TIMESTAMP
以下的标准数据类型不被Access支持:
BIT, C
您可能关注的文档
最近下载
- Unit 6 Rain or Shine (第3课时) 课件人教版(2024)英语七年级下册.pptx VIP
- 港珠澳大桥岛隧工程沉管隧道混凝土质量控制措施.pdf
- 2025年中考数学复习热搜题速递之尺规作图(2024年7月).docx
- 股市风险预警机制-深度研究.pptx
- 政策解读2025年中央一号文件PPT.pptx VIP
- 5.0MPa路面抗折混凝土配合比.docx VIP
- 17J927-1 车库建筑构造(OCR).pdf VIP
- XX市疾病预防控制中心-艾滋病HIV筛查实验室管理手册_精品.doc
- 2025年春季小学学校德育工作计划(1975字).docx VIP
- 渤海水泥厂包装车间除尘系统设计.docx
文档评论(0)