无法在MySQL中创建表格
我无法在MySQL中创建这些表格。一切看起来都很完整,但我不断收到错误。无法在MySQL中创建表格
这里是我的SQL:
CREATE TABLE Movies(
title char PRIMARY KEY NOT NULL,
Years date NOT NULL,
length decimal not null,
genre char NOT NULL,
academy_award char not null,
FOREIGN KEY(the_name) REFERENCES Studio,
FOREIGN KEY(directorName) REFERENCES Director);
CREATE TABLE StarsIn(
FOREIGN KEY(title) REFERENCES Movies,
FOREIGN KEY(Years) REFERENCES Movies,
FOREIGN KEY(the_name) REFERENCES MovieStar);
CREATE TABLE Director(
the_name char PRIMARY KEY NOT NULL,
birthdate date NOT NULL,
nationality char NOT NULL);
CREATE TABLE MovieStar(
the_name char PRIMARY KEY NOT NULL,
birthdate date NOT NULL,
address char NOT NULL,
gender char NOT NULL);
CREATE TABLE Studio(
the_name char PRIMARY KEY NOT NULL,
address char NOT NULL);
您所遇到的问题是,你在引用不存在的表列。
虽然稍后创建这些表,但DBMS引擎不知道它们将存在。
解决方案 - 创建没有不存在的FK的表格,稍后使用“ALTER TABLE”命令添加它们。
好像你知道语法,所以如果你找不到它,我会让你通知我。
你的语法应该像(我所做的是重新排列,并改变焦炭是射手...):
CREATE TABLE Studio(the_name varchar(50) PRIMARY KEY NOT NULL, address varchar(50) NOT NULL);
CREATE TABLE Director(the_name varchar(50) PRIMARY KEY NOT NULL, birthdate date NOT NULL, nationality varchar(50) NOT NULL);
CREATE TABLE Movies(title varchar(50) PRIMARY KEY NOT NULL, Years date NOT NULL,
length decimal not null, genre varchar(50) NOT NULL, academy_award varchar(50) not null,
the_name REFERENCES Studio(the_name), directorname REFERENCES Director(the_name));
CREATE TABLE MovieStar(the_name char PRIMARY KEY NOT NULL, birthdate date NOT NULL, address char NOT NULL, gender char NOT NULL);
CREATE TABLE StarsIn(title REFERENCES Movies(title),movie REFERENCES Movies(title), moviestar REFERENCES MovieStar(the_name));
一张小纸条,要看版本 - 你” d可能必须使用FOREIGN KEY(col_name)而不是col_name。我更喜欢没有它的语法,但有些版本强迫您在最后一个SQL中使用FOREIGN KEY(title)
而不是title
。
您使用的语法 - 外键名称引用TABLE(列) - 您忘记了列 - 允许您命名FK。如果您不使用“外键”,系统会随机分配一个名称。这通常并不重要,除非您希望DB设计“干净”并能够按名称引用它。
P.S. - 我没有运行它,我相信你通知是否有其他问题 - 我没有检查语法,只是修正了你报告的错误 - 不存在的参考文件... P.S.附:始终检查语法... http://dev.mysql.com/doc/refman/5.1/en/create-table.html
这不起作用,因为您的表格没有按照正确的顺序创建。
父表必须始终首先创建,否则您将尝试引用不存在的列。
例如,看这部分在这里:
CREATE TABLE Movies(title char PRIMARY KEY NOT NULL, Years date NOT NULL,
length decimal not null, genre char NOT NULL, academy_award char not null,
FOREIGN KEY(the_name) REFERENCES Studio, FOREIGN KEY(directorName) REFERENCES Director);
不能引用表工作室或导演,因为他们甚至不存在。
正确的顺序可能是:
Studio
Movie Star
Director
Movies
StarsIn
另外,你必须要在很多其他的问题在这里。
你不定义在星星任何列在表,你只申报的外键:
CREATE TABLE StarsIn(
FOREIGN KEY(title) REFERENCES Movies,
FOREIGN KEY(Years) REFERENCES Movies,
FOREIGN KEY(the_name) REFERENCES MovieStar);
你不仅是没有定义任何列,你是不是引用任何东西。这也会引发错误。您的外键标题必须引用电影表中的某个列。除此之外,您不能为年创建外键参考。主要是因为您不能为另一个表中不是主键的列创建外键,并且为什么您需要两个外键到同一个表中?
这些问题也存在于其他创建表语句中,因此,根据我所说的一切,请返回并查看每个创建的表语句。
下面是一个工作SQL Fiddle,你可以使用作为参考。
编辑
我想补充一点,我不建议使用char数据类型。 Please look into using VARCHAR()。
如果您想要某人调试您的代码,您应该发布您正在获取的错误... – evenro 2014-10-28 23:30:16
键列the_name在表错误中不存在。 – Rohit 2014-10-28 23:33:35
这是我第一次使用SQL,不知道如何创建一个表 – Rohit 2014-10-28 23:34:00