【发布时间】:2018-11-10 21:20:12
【问题描述】:
教授给了一个.sql文件做一些练习,下面是其中的一部分:
创建表部门
(DEPTNO NUMERIC(2) CONSTRAINT PK_DEPT PRIMARY KEY, (error 1)
DNAME VARCHAR(14),
LOC VARCHAR(13) );
创建表 EMP
(EMPNO NUMERIC(4) CONSTRAINT PK_EMP PRIMARY KEY, (error 2)
ENAME VARCHAR(10),
JOB VARCHAR(9),
HIREDATE DATE,
SAL NUMERIC(7,2),
DEPTNO NUMERIC(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT); (error 3)
我们在课堂上用 pgadmin 3 运行了这个文件,一切都很顺利,但是我下载了 MySQL 而不是 postgres 来在家继续练习,它给出了一个错误:“意外约束”。因为它适用于 postgres 但不适用于 MySQL 可能是 MySQL 的语法错误?
【问题讨论】:
-
每个数据库引擎使用的语法略有不同。您不能只在所有引擎上运行相同的 SQL 代码。
-
MySQL 支持各种语法,但显然不是那种。我习惯了更冗长的形式
CONSTRAINT name FOREIGN KEY (columnOfThisTable) REFERENCES ThatTable (columnOfThatTable)。我认为这适用于 MySQL 和大多数其他数据库。不确定 Postgres,但可能也有。
标签: mysql sql postgresql syntax