5

我试图找到关于MySQL,PostgreSQL,SQLite等开源数据库的正确RDBMS SQL queries的信息。是他们的任何预装配清单那里还是我只需要梳理的文档,每个数据库引擎(在某些情况下的猜测,正确实施?ALTER TABLE VS CREATE INDEX开放源代码数据库的常见SQL查询列表?

例如,到目前为止,我有这样的(部分)列表为MySQL:

CREATE TABLE `%s` (...); 
DROP TABLE IF EXISTS `%s` %s; 
ALTER TABLE `%s` RENAME TO `%s`; 

ALTER TABLE `%s` ADD COLUMN %s; 
ALTER TABLE `%s` DROP COLUMN `%s` %s; 
ALTER TABLE `%s` RENAME COLUMN `%s` to `%s`; 

ALTER TABLE `%s` ADD CONSTRAINT `%s` FOREIGN KEY (`%s`) REFERENCES `%s` (`%s`) ON DELETE CASCADE ON UPDATE CASCADE; 
ALTER TABLE `%s` ADD CONSTRAINT `%s` UNIQUE (`%s`); 
ALTER TABLE `%s` DROP CONSTRAINT `%s` %s; 

CREATE INDEX `%s` USING BTREE ON `%s` (`%s`); 
DROP INDEX IF EXISTS `%s` %s; 
+0

“1992年7月”,你确定吗?这是20年前的SQL。 –

+0

@FrankHeikens,ANSI-92仍然在广泛使用,涵盖了这个问题,但我不介意使用另一种标准,如ANSI-99或甚至更新。 – Xeoncross

+1

你正在寻找一张备忘单或者你想要实现一个DDL生成工具还是其他的东西? –

回答

0

您可以查看一些ActiveRecord实现的线索。他们尝试为查询实现通用层。大多数框架为SQL引擎提供某种类型的抽象。 Win可移植性会丢失每个数据库供应商的特殊实现细节。

如果您有时间可以查看每个数据库文档并创建解析器。 对于Postgresql数据库,您可以查看手册中的命令结构:http://www.postgresql.org/docs/9.0/static/sql-commands.html

一个小例子的Postgresql在表上添加模式名称。默认使用公共模式。

CREATE TABLE "%s"."%s" (...); 
0

我想到的一个窍门是使用像Hibernate这样的O/R引擎对它进行建模。开发带注释的类或.hbm.xml文件,只需打开hbm2ddl = auto并根据数据库列表运行它。使用show_sql财产记录所有的DML/DDL是Hibernate是生产...

我假设O/Hibernate等[R框架已经见过世面的,可以处理的建立关系型数据库平台的所有细微差别。但我不确定,如果hibernate尝试生成尽可能通用的或本地方言的DDL脚本。

希望这有助于;)