Sql Can';我不知道如何进行子查询

Sql Can';我不知道如何进行子查询,sql,database,subquery,Sql,Database,Subquery,如果我在TBLTeams中更新teamnm,我如何更新TBLWedstrijd uitteamnm中的引用。我知道这是一个子查询,但我真的不知道怎么做。你说得有点不对。如果要更改团队名称,则不应将其用作键(因为这将破坏所有引用) 您将希望从TBLWedstrijd引用他们的ID,而不是使用他们的名称 因此,您的声明将成为: CREATE TABLE TBLTeams ( teamnm varchar(30) NOT NULL, teamid

如果我在TBLTeams中更新teamnm,我如何更新TBLWedstrijd uitteamnm中的引用。我知道这是一个子查询,但我真的不知道怎么做。

你说得有点不对。如果要更改团队名称,则不应将其用作键(因为这将破坏所有引用)

您将希望从TBLWedstrijd引用他们的ID,而不是使用他们的名称

因此,您的声明将成为:

        CREATE TABLE TBLTeams
(
    teamnm        varchar(30) NOT NULL,
    teamid          varchar(10),
    rondenm         varchar(10) 
    primary key(teamnm)
)

CREATE TABLE TBLWedstrijd
(
    thuisteamnm        varchar(30) NOT NULL,
    uitteamnm            varchar(30) NOT NULL,
    wedstrijdid            varchar(10) 
    primary key(wedstrijdid)
)

alter table TBLWedstrijd add foreign key (thuisteamnm) references TBLTeams(teamnm)
alter table TBLWedstrijd add foreign key (uitteamnm) references TBLTeams(teamnm)

CREATE TABLE TBLUitslag
(
    thuisteamnm        varchar(30) NOT NULL,
    uitteamnm            varchar(30) NOT NULL,
    wedstrijdid            varchar(10) NOT NULL,
    uitteampunt            int,
    thuisteampunt        int 
    primary key(thuisteamnm)
)

alter table TBLUitslag add foreign key (wedstrijdid) references TBLWedstrijd(wedstrijdid)
这同样适用于您的TBLUitslag表,您应该只引用TBLWedstrijd,因为该表已经包含了关于哪些球队正在比赛的信息。更不用说,分数几乎是一场比赛的一部分,所以把分数分成两张表没有多大意义。这就变成了:

CREATE TABLE TBLWedstrijd
(
    wedstrijdid        varchar(10),
    thuisteamid        varchar(10) NOT NULL,
    uitteamid          varchar(10) NOT NULL,
    primary key(wedstrijdid)
)

alter table TBLWedstrijd add foreign key (thuisteamid) references TBLTeams(teamid)
alter table TBLWedstrijd add foreign key (uitteamid) references TBLTeams(teamid)

如果你想在谷歌上搜索一些东西以获取更多信息,这称为“表规范化”。

你能指定你在这台SQL Server上到底想做什么的查询吗?(或MySQL,或Oracle,或PostgreSQL,或MariaDB,或……)您可能希望在设置外键关系时查看
CASCADE
关键字。在创建这些键之后,您还应该非常小心地修改它们。这几乎总是个坏主意。这就是为什么有代理键,通常是整数来提高性能。(在SQL Server中,这些是
IDENTITY
列。)拥有这些列可以让您仅在一个表中存储易失性字符串键,然后在其他表中使用整数代理键作为外键。另外:强烈建议对PKs和FKs使用代理键。您可以插入值,无需更新。另一个提示:将ID作为整数数据类型。
CREATE TABLE TBLWedstrijd
    (
        wedstrijdid        varchar(10),
        thuisteamid        varchar(10) NOT NULL,
        uitteamid          varchar(10) NOT NULL,
        uitteampunt        int,
        thuisteampunt      int 
        primary key(wedstrijdid)
    )