sql,给表建外键,第 4 行: ')' 附近有语法错误。,错哪了啊??
createtabledepartment(idintprimarykeyidentity(1,1),namevarchar(50)foreignkey)--------...
create table department(
id int primary key identity(1,1),
name varchar(50) foreign key
)
-------------------
第 4 行: ')' 附近有语法错误。 展开
id int primary key identity(1,1),
name varchar(50) foreign key
)
-------------------
第 4 行: ')' 附近有语法错误。 展开
若以下回答无法解决问题,邀请你更新回答
1个回答
展开全部
语法有问题
在下例中,将创建一个名为 Skills 的表,其中包含潜在技能列表,然后创建一个与 Skills 表具有外键关系、名为 EmployeeSkills 的表。请注意,EmployeeSkills.SkillID 与 Skills 表的主键列 (Id) 存在外键关系。
CREATE TABLE Skills (
Id INTEGER PRIMARY KEY,
SkillName CHAR(40),
Description CHAR(100)
);
CREATE TABLE EmployeeSkills (
EmployeeID INTEGER NOT NULL,
SkillID INTEGER NOT NULL,
SkillLevel INTEGER NOT NULL,
PRIMARY KEY( EmployeeID ),
FOREIGN KEY (SkillID) REFERENCES Skills ( Id )
);
您也可以在创建完表后使用 ALTER TABLE 语句将外键添加到该表。在下例中,将创建与上例中类似的表,唯一不同之处是在创建表后再添加外键。
CREATE TABLE Skills2 (
ID INTEGER PRIMARY KEY,
SkillName CHAR(40),
Description CHAR(100)
);
CREATE TABLE EmployeeSkills2 (
EmployeeID INTEGER NOT NULL,
SkillID INTEGER NOT NULL,
SkillLevel INTEGER NOT NULL,
PRIMARY KEY( EmployeeID ),
);
ALTER TABLE EmployeeSkills2
ADD FOREIGN KEY SkillFK ( SkillID )
REFERENCES Skills2 ( ID );
可以在创建外键时指定外键的属性。例如,以下语句将创建与示例 2 中相同的外键,但它将外键定义为 NOT NULL,同时定义更新或删除时的限制。
ALTER TABLE Skills2
ADD NOT NULL FOREIGN KEY SkillFK ( SkillID )
REFERENCES Skills2 ( ID )
ON UPDATE RESTRICT
ON DELETE RESTRICT;
外键列名和主键列名将根据在两个列表中的位置进行一对一式的配对。如果在定义外键时未指定主表列名,则使用主键列。例如,假设按如下方式创建两个表:
CREATE TABLE Table1( a INT, b INT, c INT, PRIMARY KEY ( a, b ) );
CREATE TABLE Table2( x INT, y INT, z INT, PRIMARY KEY ( x, y ) );
然后,按如下方式创建外键 fk1,明确指定如何对两个表之间的列进行配对:
ALTER TABLE Table2 ADD FOREIGN KEY fk1( x,y ) REFERENCES Table1( a, b );
使用下面的语句创建第二个外键 fk2,仅指定外表列。数据库服务器会自动将这两个列与主表主键中的前两列配对。
ALTER TABLE Table2 ADD FOREIGN KEY fk2( x, y ) REFERENCES Table1;
使用下面的语句创建外键,不指定主表或外表的列:
ALTER TABLE Table2 ADD FOREIGN KEY fk3 REFERENCES Table1;
由于没有指定引用列,数据库服务器会在外表 (Table2) 中查找与主表 (Table1) 中的列同名的列。如果存在,数据库服务器会确保数据类型匹配,然后使用这些列创建外键。否则,将在 Table2 中创建这些列。在此示例中,Table2 没有名为 a 和 b 的列,因此将创建这两个列且数据类型与 Table1.a 和 Table1.b 相同。这些自动创建的列不会成为外表主键的一部分。
在下例中,将创建一个名为 Skills 的表,其中包含潜在技能列表,然后创建一个与 Skills 表具有外键关系、名为 EmployeeSkills 的表。请注意,EmployeeSkills.SkillID 与 Skills 表的主键列 (Id) 存在外键关系。
CREATE TABLE Skills (
Id INTEGER PRIMARY KEY,
SkillName CHAR(40),
Description CHAR(100)
);
CREATE TABLE EmployeeSkills (
EmployeeID INTEGER NOT NULL,
SkillID INTEGER NOT NULL,
SkillLevel INTEGER NOT NULL,
PRIMARY KEY( EmployeeID ),
FOREIGN KEY (SkillID) REFERENCES Skills ( Id )
);
您也可以在创建完表后使用 ALTER TABLE 语句将外键添加到该表。在下例中,将创建与上例中类似的表,唯一不同之处是在创建表后再添加外键。
CREATE TABLE Skills2 (
ID INTEGER PRIMARY KEY,
SkillName CHAR(40),
Description CHAR(100)
);
CREATE TABLE EmployeeSkills2 (
EmployeeID INTEGER NOT NULL,
SkillID INTEGER NOT NULL,
SkillLevel INTEGER NOT NULL,
PRIMARY KEY( EmployeeID ),
);
ALTER TABLE EmployeeSkills2
ADD FOREIGN KEY SkillFK ( SkillID )
REFERENCES Skills2 ( ID );
可以在创建外键时指定外键的属性。例如,以下语句将创建与示例 2 中相同的外键,但它将外键定义为 NOT NULL,同时定义更新或删除时的限制。
ALTER TABLE Skills2
ADD NOT NULL FOREIGN KEY SkillFK ( SkillID )
REFERENCES Skills2 ( ID )
ON UPDATE RESTRICT
ON DELETE RESTRICT;
外键列名和主键列名将根据在两个列表中的位置进行一对一式的配对。如果在定义外键时未指定主表列名,则使用主键列。例如,假设按如下方式创建两个表:
CREATE TABLE Table1( a INT, b INT, c INT, PRIMARY KEY ( a, b ) );
CREATE TABLE Table2( x INT, y INT, z INT, PRIMARY KEY ( x, y ) );
然后,按如下方式创建外键 fk1,明确指定如何对两个表之间的列进行配对:
ALTER TABLE Table2 ADD FOREIGN KEY fk1( x,y ) REFERENCES Table1( a, b );
使用下面的语句创建第二个外键 fk2,仅指定外表列。数据库服务器会自动将这两个列与主表主键中的前两列配对。
ALTER TABLE Table2 ADD FOREIGN KEY fk2( x, y ) REFERENCES Table1;
使用下面的语句创建外键,不指定主表或外表的列:
ALTER TABLE Table2 ADD FOREIGN KEY fk3 REFERENCES Table1;
由于没有指定引用列,数据库服务器会在外表 (Table2) 中查找与主表 (Table1) 中的列同名的列。如果存在,数据库服务器会确保数据类型匹配,然后使用这些列创建外键。否则,将在 Table2 中创建这些列。在此示例中,Table2 没有名为 a 和 b 的列,因此将创建这两个列且数据类型与 Table1.a 和 Table1.b 相同。这些自动创建的列不会成为外表主键的一部分。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询