Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询没有';行不通_Sql_Sql Server 2008 - Fatal编程技术网

SQL查询没有';行不通

SQL查询没有';行不通,sql,sql-server-2008,Sql,Sql Server 2008,这是我第一次使用SQL Server,我创建了以下表: create table Department ( D_Number int not null, D_Name varchar(20), D_MgrSSN int, D_MgrDate datetime, primary key(D_Number), unique(D_Name), ) create table Empolyee ( E_SSN int not null, E

这是我第一次使用SQL Server,我创建了以下表:

create table Department
(
    D_Number int not null,
    D_Name varchar(20),
    D_MgrSSN int,
    D_MgrDate datetime,
    primary key(D_Number),
    unique(D_Name),
)

create table Empolyee
(
    E_SSN int not null,
    E_FName varchar(20),
    E_LName varchar(20),
    E_Sex varchar(6),
    E_BDate datetime,
    E_Salary decimal(10,2),
    E_Address varchar(50),
    E_Department varchar(20),
    E_SuperSSN int,
    primary key(E_SSN),
    foreign key(E_Department) references Department(D_Number),
)
当我运行时,会出现以下错误:

列“Department.D_Number”与外键“FK_Empolyee_E_Depa_0CBAE877”中引用列“Empolyee.E_Department”的数据类型不同


就我个人而言,我认为SQL Server在错误消息方面做得非常好,它准确地告诉您需要修复的内容

查看您定义的两个字段,一个是
varchar(20)
另一个是
整数

为了使外键与其主键匹配,外键必须是同一类型。 要么将两者都更改为
int
,要么将两者都更改为
varchar
。任何对您的商业模式有意义的东西。

您的:

E_Department is varchar and D_Number is integer //thats the problem so make E_Department integer //same data type 急诊科是瓦查尔 和 D_数是整数 //这就是问题所在 因此,将E_部门设置为整数//相同的数据类型
D_编号是一个int,E_部门是varchar(50)。它们必须相同,外键声明才能工作。

这是因为
E_部门
varchar(20)
,但它引用的列
D_编号
,是
int
。您需要使这两种类型相同(
int
,因为您称之为“Number”)。

一些提示: -雇员拼写错误 -永远不要将SSN用作主键,因为您无法轻松索引它。
-D_编号未设置为部门表的标识,也未设置为唯一

问题是:
-类型E_Department是一个varchar(20),D_Number是一个int,因此它当然不起作用

您正在运行的实际查询是什么?我使用SQL SERVER 2008,这就是您需要的吗?错误说明了一切,您的密钥
E_Department
D_Number
的类型不同。你可以把E_Department
改成type
int
。它不允许您创建Employee表,也不显示任何研究工作。您只是尝试运行查询并粘贴错误,而没有费心去理解它的含义。