SQL 连接

来源:互联网 发布:java逐个读取单词 编辑:程序博客网 时间:2024/05/21 10:46

自然连接

此操作仅仅把在R和S模式中有某共同属性,且此属性有相同的值的元组配对。
如果一个元组不能和另外关系中的任何一个元组配对的话,这个元组被称为悬浮元组

关系U

A B C 1 2 3 6 7 8 9 7 8

关系V

B C D 2 3 4 2 3 5 7 8 10

关系U与关系V的自然连接

A B C D 1 2 3 4 1 2 3 5 6 7 8 10 9 7 8 10

外连接:通过悬浮元组里填充空值来是指成为查询结果
内连接:连接的表里面都要有对应的数据,否则无法显示

  1. JOIN…ON θ连接
    movies JOIN starsIn ON title=movieTitle AND year = movieYear

    NATURAL JOIN 自然连接 类似于JOIN
    两个等值的属性只投影一个
    movieStar NATURAL JOIN movieExec`
  2. JOIN: 如果表中有至少一个匹配,则返回行
    LEFT JOIN 左外连接: 即使右表中没有匹配,也从左表返回所有的行(LEFT OUTER JOIN)
    RIGHT JOIN 右外连接: 即使左表中没有匹配,也从右表返回所有的行(RIGHT OUTER JOIN)
    FULL JOIN 完全外连接: 只要其中一个表中存在匹配,就返回行(FULL OUTER JOIN)
    外连接表示即使其中一张表没有匹配也会显示另一张表的数据,没有数据的显示为空。
  3. INNER JOIN 内连接:在表中存在至少一个匹配时,INNER JOIN 关键字返回行
    INNER JOIN 与JOIN相同
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsINNER JOIN Orders ON Persons.Id_P=Orders.Id_PORDER BY Persons.LastName

建立连接视图(内连接)

CREATE OR REPLACE VIEW v_distribution_goodsAS    SELECT DG.*,                  G.f_brandCode, G.f_brandName, G.f_name f_goodsName, G.f_saleSpec, G.f_unitName,                 SGP.f_execPrice,                 D.f_warehouseCode,                 (ST.f_quantity-ST.f_lockedQuantity)f_stockQuantity -- 库存量等于数量减去锁定量    FROM t_distribution_goods DG             INNER JOIN t_distribution D ON DG.f_distNumber=D.f_distNumber            INNER JOIN v_goods G ON DG.f_goodsId=G.f_id            INNER JOIN t_shop_goods_price SGP ON SGP.f_shopCode=D.f_shopCode AND SGP.f_goodsId=DG.f_goodsId            INNER JOIN t_stock_total ST ON G.f_id=ST.f_goodsId AND D.f_warehouseCode=ST.f_warehouseCode;

左连接(外连接)

CREATE OR REPLACE VIEW v_goods_tempAS     SELECT T.*, S.f_code f_superCategoryCode, U.f_code f_unitCode, B.f_code f_brandCode     FROM t_goods_temp T         LEFT JOIN t_super_category S ON T.f_superCategoryName=S.f_name        LEFT JOIN t_unit U ON T.f_unitName=U.f_name        LEFT JOIN t_brand B ON T.f_brandName=B.f_name;
原创粉丝点击