0

我想创建数据库。我有一个这样的脚本文件 .sql :

CREATE TABLE [AlleleFreqBySsPop]
(
[subsnp_id] [int] NOT NULL ,
[pop_id] [int] NOT NULL ,
[allele_id] [int] NOT NULL ,
[source] [varchar](2) NOT NULL ,
[cnt] [real] NULL ,
[freq] [real] NULL ,
[last_updated_time] [datetime] NOT NULL
)
GO

它似乎与mysql或postgresql不同。

这是什么类型的语言?我该如何使用它?

4

3 回答 3

6

从方括号和GO关键字来看,我会说这是T-SQL (MS SQL Server)。要在 MySQL 中使用它,您可能只需删除方括号并从那里解决不兼容问题(即类型或缺少转义)。

我刚刚在SQL Fiddle中对此进行了测试,在这种情况下,只需删除方括号就足够了。但是,对于其他 DDL 语句,您可能必须替换类型(即datetime2MySQL 不支持 from T-SQL),并且您可能会遇到其他问题 - 例如需要转义在一种方言中保留关键字但不支持的列名其他等。通常的 SQL 数据库不使用 100% 符合标准的 SQL

于 2012-07-02T17:15:11.693 回答
4

我猜你指的是[text], 专注于括号?这只是名称的分隔符。

这是一个 SQLFiddle 来展示这个在 MS SQL Server 中的工作

这是一个 SQLFiddle 来展示这个在 SqlLite 中的工作(但前提是你GO在最后删除了(感谢 Ypercube 指出这一点)......否则,只有 MSSQL 才能工作)

它在 MySQL、PostgreSQL 和 Oracle 中似乎确实出错。希望这有助于澄清问题。SqlFiddle 是一个很好的工具来检查这样的事情:)

这是关于分隔标识符的 SQL Server 文档

于 2012-07-02T17:15:32.753 回答
0

它的 SQL 使用[and]作为分隔符或“非引用标识符”,可能来自 TSQL 源。

我相信,如果您在平台[]设置上替换有效分隔符,或者只是删除它们,那么它应该是完全有效的 SQL。

一般来说,分隔符是个好东西,可以帮助 SQL 引擎解析查询。

于 2012-07-02T17:17:53.617 回答