Sql简单的初学者操作

时间:2012-03-06 09:31:51

标签: mysql sql database

我有一个名为USERS的表,其中user_id为主键,user_name

我有另一张表USERS_ACT,其中包含user_act_id主键user_act_user_id和另外两列。

我需要user_act_user_id成为USERS中的外键吗?我怎样才能做到这一点?

这是我在SQL的第一天,所以请善意解释我的问题是不是错了。

4 个答案:

答案 0 :(得分:1)

如果没有参考完整性,你可以让它发挥作用,周围没有“魔力”。

使用来自USERS的pk值填充你的user_act_user_id,你就拥有了它。

您可能想要添加约束,但这可能不是您所要求的, http://msdn.microsoft.com/en-us/library/ms175464.aspx

简而言之,他们将桌子之间的钥匙保持良好状态。

答案 1 :(得分:1)

让我们假设您不是数据库管理员,而您只想获得所有活跃用户'名字;))

select users.user_name
from users
join users_act on users.user_id = users_act.user_act_user_id

答案 2 :(得分:1)

如果MySql甚至支持外键,则取决于您的数据库类型。例如,您可以使用InnoDB格式的外键,但不能使用MyIsam格式。 使用MySql时,我个人更喜欢使用MyIsam,并在编程时进行大部分完整性检查。 通常,您只需在表USERS中添加user_act_user_id,但不要将其标记为任何键。之后你可以简单地使用JOIN,但是没有给出参考完整性,所以如果你想要f.e,必须在编程网站上编写你自己的“触发器”。自动删除属于另一个表中用户的数据。否则,您必须使用约束或触发器,但这在使用SQL时可能并不那么容易。

答案 3 :(得分:1)

假设您正在使用InnoDB(这是唯一支持外键的引擎):

ALTER TABLE users_act
    ADD CONSTRAINT fk_users_act_users
        FOREIGN KEY (user_act_user_id) 
        REFERENCES users (user_id);