几种后端数据库如(sql server,sybase等)所用sql语言是否有不兼容的问题?(100分)

  • 主题发起人 主题发起人 TomTom
  • 开始时间 开始时间
T

TomTom

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在用sql server数据库,但发现有一些sql能在interbase中用的sql命令
在sql server不能用。sql是否有一个标准,标准是什么,我该遵循那种标准???
谢谢!!
 
sql 本身就是一个工业标准。怎莫会不兼容呢!!不太可能吧?
可能 interbase 与 sqlserver 环境不同等方面原因。
sql 命令是不会有问题的
 
每个数据库都有自己的一些函数,如果你用了这些函数,有可能出现不兼容的情况.
 
SQL是一种数据库语言,有标准的版本.
但是不同的公司在他们自己的数据库产品中,对标准SQL语言做了各自的扩充,
使得不同的产品之间会有差异,需要你去查看相关的产品手册
 
当然有了,sql server和sybase相差的不多,不过sql server和oracle等等就
差的多了,以为该死的ms扩充了很多
 
标准的Select,insert,update,delete一般是都差不多的
可是其他的存储过程,游标,触发器,局部变量
之类就...
 
SQL SERVER 与interbase的某些sql语句是不兼容的。它们对SQL都做了不同的扩充。SQL SERVER使用的是Transact-SQL,Transact-SQL包含了标准SQL(ANSI SQL)
 
SQL有标准:
有 ANSI-SQL86,ANSI-SQL92,最新标准好像叫SQL3.

决大多数数据库都符合SQL92标准,Oracle符合SQL3标准.

SQL92包括:
ALTER DATABASE(DOMAIN,EXCEPTION,INDEX,PROCEDURE,TABLE,TRIGGER...)
CREATE ...
DROP ...
INSERT,UPDATE,DELETE......
最基本的库,表,视图,触发器,存储过程,索引,域,插入,更新,删除等
语句都是支持的.
问题是ANSI-SQL的函数比较少,只有:AVG(),CAST(),MAX(),MIN(),SUM(),
UPPER(),COUNT(),GEN_ID()。各个数据库可能会有不同的扩充.
另外语法差异较大.

 
如果不考虑兼容,当然用你的数据库所定义的扩充SQL,功能也是扩充的。
 
以我的经验, 没有一个语句是完全相同的!!
MSSQL server/DB2/oracle/sybase/interbase

最象的就是mssql/sybase这一对了,不过现在也各自扩充了很多东东
 
sybase sql server 是ms sql server 的前身, 因此,
他们的兼容性好一些. 但现在的差别也越来越大.
如果非要使用"通用"的sql, 就不要怕麻烦, 不要使用
扩展语法,(也可以考虑ODBC) 不过, 这样的代价太大了.
你还是把一着数据库搞透了比较好, 这样充分发挥
他的功能.
 
大多数数据库都符合SQL92标准,
用它没有问题, 但实际系统少有不同.
 
各个数据库系统都对ANSI SQL作了他们认为必要的扩充。大体上说,都是ANSI SQL
的扩集。

如果考虑移植性,很多实用的函数你不敢用。再说即使小心翼翼,也不可能无缝移植。干脆,你就盯住一家产品,用着爽!

吐血推荐:M$ 和 ORACLE
 
去找找ansi sql89, sql92, sql3(new)的标准吧,
其实每个厂家的dbms中sql都是增强的 , 如
sql server 用的是transact-sql, oracle 的是sql*plus等,
 
现在市面上出了一本很棒的好书"SQL3大全",
以后各个数据库的新版都会支持SQL3(99年出台新的SQL标准),
买一本去吧,非常超值,开发数据库程序必备书.
描述很周到全面.
 
接受答案了.
 
后退
顶部