2017-10-13 150 views
1

我是编程新手。我的问题是,如果你有一个主键不是唯一的(我明白在这一点上它不再是主键),那么返回的是什么?多个记录是否返回?当您的主键不唯一时会返回什么

EmployeeID HoursWorked 
01   100 
01   120 
02   75 
02   115 
03   140 
03   80 

举例来说,如果你写一个查询来搜索的01员工ID,哪些将被退回?

再一次,我对这一切都很陌生,所以原谅我,如果这是一个愚蠢的问题。

+2

“我明白在这一点上它不再是主键”我的感觉是你*不明白这一点。这里没有主键。 – Strawberry

+0

“如果您编写查询来搜索01的员工ID,将返回什么?”。您将在员工编号列中获得包含01的所有记录的列表。我想也许你可能需要做更多的学习和尝试SQL。是的,正如草莓所说,包含重复值的列不能被视为主键。主键的值_必须是唯一的。如果将列定义为主键列,则数据库引擎将执行该列并且不允许您创建重复的条目。 – ADyson

+0

我给你+1的问题,因为新的意味着你需要帮助。可悲的是在堆栈中从不提及我是新的。这是一个被禁止的词。很快你会说我是新人,有些人会给你低价。真的很伤心。你在专家交流论坛上从来没有见过这样的人。 –

回答

2

如果你这样做

SELECT * FROM employees WHERE EmployeeID = 01; 

您将获得两行:

EmployeeID HoursWorked 
01   100 
01   120 

但一般 - 如果您将该列设置为主键 - MySQL 将不允许您插入行没有唯一的ID。

+0

这是从我身边+1正确的解决方案:)。 – AsifAli72090

0

,如果你不使用primary key然后重复ID记录可以是inserted

所以,如果你会得到01比它会返回表01 ID的所有记录像100 and 120

0

主要的整点以防止使用相同的主键或任何唯一索引插入两条记录(行)。这是不可能的,你会得到一个错误。

因此,如果您设置了主键,则选择查询将返回任何内容或一行,如果您确切指定了您想要的值。如果您尝试使用已存在的键插入新记录,则会出现错误。

您将有同样的行为具有独特的键

相关问题