是否有设置分工SQL?(Is there set division in SQL?)

2019-06-25 11:14发布

我充分认识到设定的分割可以通过一系列其他操作来完成,所以我的问题是:

有没有在SQL设定的分割命令?

Answer 1:

http://vadimtropashko.files.wordpress.com/2007/02/ch3.pdf

从第32页:

关系司是不是基本的操作员。 它可以在投影,笛卡尔积,并设置差异来表示。

所以不行。 :)



Answer 2:

相关的问题: 对于标签数据库设计

并回答相关的部分是这篇文章

因此,在短期,没有,没有在SQL没有固定的分工。



Answer 3:

下面是一个使用关系代数语法一个很好的解释 。

鉴于表sailorsboatsreserves (从莱玛克里斯南&Gehrke的“数据库管理系统”的例子),你可以计算出谁已经预留与下面的查询所有船只的水手:

SELECT name FROM sailors
WHERE Sid NOT IN (
    -- A sailor is disqualified if by attaching a boat,
    -- we obtain a tuple <sailor, boat> that is not in reserves
    SELECT s.Sid
    FROM sailors s, boats b
    WHERE (s.Sid, b.Bid) NOT IN (
        SELECT Sid, Bid FROM reserves
    )
);

-- Alternatively:
SELECT name FROM sailors s
WHERE NOT EXISTS (
    -- Not reserved boats
    (SELECT bid FROM boats)
    EXCEPT
    (SELECT r.bid FROM reserves r
    WHERE r.sid = s.sid)
);


文章来源: Is there set division in SQL?