zoukankan      html  css  js  c++  java
  • 集合运算(UNION)

    表的加法

    集合运算:就是满足统一规则的记录进行的加减等四则运算。
    通过集合运算可以得到两张表中记录的集合或者公共记录的集合,又或者其中某张表中记录的集合。
    集合运算符:用来进行集合的运算符。

    UNION(并集),集合运算符会取出重复记录(去重)
    -- 对两张表进行加法计算:product表+product2表
    select product_id, product_name from product
    union
    select product_id, product_name from product2;
    
    注意点:
    1.作为运算对象的记录的列数必须相同,列数不一致会发生错误导致无法加法运算
    2.作为运算对象的记录中累的类型必须一致,否则会发生错误
    3.可以使用任何select子句,但order by只能在最后使用一次
    SELECT product_id, product_name
    	FROM Product
     WHERE product_type = '厨房用具'
    UNION
    SELECT product_id, product_name
    	FROM Product2
     WHERE product_type = '厨房用具'
    ORDER BY product_id;
    
    All选项——包含重复的集合运算 ,可以保留重复数据
    select product_id, product_name from product
    union all
    select product_id, product_name from product2;
    
    INTERSECT——选取表中公共部分(mysql不支持此功能)

    Oracle, SQL Server, DB2, PostgreSQL

    SELECT product_id, product_name FROM Product
    INTERSECT
    SELECT product_id, product_name FROM Product2
    ORDER BY product_id;
    
    EXCEPT——记录的减法(语法与union相同,但mysql不支持此功能)
    -- Oracle中使用MINUS而不是EXCEPT
    SELECT product_id, product_name
     FROM Product
    MINUS
    SELECT product_id, product_name
     FROM Product2
    ORDER BY product_id;
    

    结果中只包含 Product 表中记录除去 Product2
    表中记录之后的剩余部分。

    建表语句

    -- 创建Product2结果与之前Product相同
    CREATE TABLE Product2
    (product_id      CHAR(4)      NOT NULL,
     product_name    VARCHAR(100) NOT NULL,
     product_type    VARCHAR(32)  NOT NULL,
     sale_price      INTEGER,
     purchase_price  INTEGER,
     regist_date      DATE,
     PRIMARY KEY (product_id));
    
    -- 插入数据
    -- MySQL
    START TRANSACTION;
    
    INSERT INTO Product2 VALUES ('0001', 'T恤', '衣服', 1000, 500, '2009-09-20');
    INSERT INTO Product2 VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11');
    INSERT INTO Product2 VALUES ('0003', '运动T恤', '衣服', 4000, 2800, NULL);
    INSERT INTO Product2 VALUES ('0009', '手套', '衣服', 800, 500, NULL);
    INSERT INTO Product2 VALUES ('0010', '水壶', '厨房用具', 2000, 1700, '2009-09-20');
    COMMIT;
    
    CREATE TABLE Product
    (product_id      CHAR(4)      NOT NULL,
     product_name    VARCHAR(100) NOT NULL,
     product_type    VARCHAR(32)  NOT NULL,
     sale_price      INTEGER ,
     purchase_price  INTEGER ,
     regist_date     DATE ,
     PRIMARY KEY (product_id));
    
    INSERT INTO Product VALUES ('0001', 'T恤' ,'衣服', 1000, 500, '2009-09-20');
    INSERT INTO Product VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11');
    INSERT INTO Product VALUES ('0003', '运动T恤', '衣服', 4000, 2800, NULL);
    INSERT INTO Product VALUES ('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');
    INSERT INTO Product VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');
    INSERT INTO Product VALUES ('0006', '叉子', '厨房用具', 500, NULL, '2009-09-20');
    INSERT INTO Product VALUES ('0007', '擦菜板', '厨房用具', 880, 790, '2008-04-28');
    INSERT INTO Product VALUES ('0008', '圆珠笔', '办公用品', 100, NULL, '2009-11-11');
    
    COMMIT;
    CREATE TABLE Product
    (product_id      CHAR(4)      NOT NULL,
     product_name    VARCHAR(100) NOT NULL,
     product_type    VARCHAR(32)  NOT NULL,
     sale_price      INTEGER ,
     purchase_price  INTEGER ,
     regist_date     DATE ,
     PRIMARY KEY (product_id));
    
    INSERT INTO Product VALUES ('0001', 'T恤' ,'衣服', 1000, 500, '2009-09-20');
    INSERT INTO Product VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11');
    INSERT INTO Product VALUES ('0003', '运动T恤', '衣服', 4000, 2800, NULL);
    INSERT INTO Product VALUES ('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');
    INSERT INTO Product VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');
    INSERT INTO Product VALUES ('0006', '叉子', '厨房用具', 500, NULL, '2009-09-20');
    INSERT INTO Product VALUES ('0007', '擦菜板', '厨房用具', 880, 790, '2008-04-28');
    INSERT INTO Product VALUES ('0008', '圆珠笔', '办公用品', 100, NULL, '2009-11-11');
    
    COMMIT;
    
  • 相关阅读:
    Hive(八)Hive的Shell操作与压缩存储
    Hive(七)Hive分析窗口函数
    Hive(六)内置函数与高级操作
    Hive(五)数据类型与库表操作以及中文乱码
    Hive(四)Hive的3种连接方式与DbVisualizer连接Hive
    iOS性能调优系列(全)
    iOS性能优化-内存优化
    iOS 25个性能优化/内存优化常用方法
    iOS CoreData版本升级和数据库迁移
    FMDB数据迁移
  • 原文地址:https://www.cnblogs.com/sanzashu/p/10996108.html
Copyright © 2011-2022 走看看