本文根据《SQL基础教程》第二版写,里面的概念、代码、例子均来自此书。

1 表的加减法

  • 集合运算就是对满足同一规则的记录进行的加减等四则运算
  • 集合运算符有union(并集)、intersect(交集)、except(差集)
  • 集合运算符可以去除重复行
  • 如果希望集合运算符保留重复行,需要使用all选项

什么是集合运算

集合在数据库中表示记录的集合。表、视图和查询的执行结果都是记录的集合。所谓集合运算,就是对满足同一规则的记录进行的加减等四则运算。通过集合运算,可以得到两张表中的记录的集合或者公共记录的集合,又或者其中某张表中的记录的集合。

表的加法–union(并集)

首先创建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;-- 结果为
+------------+--------------+--------------+------------+----------------+-------------+
| product_id | product_name | product_type | sale_price | purchase_price | regist_date |
+------------+--------------+--------------+------------+----------------+-------------+
| 0001       | T恤          | 衣服         |       1000 |            500 | 2009-09-20  |
| 0002       | 打孔器       | 办公用品     |        500 |            320 | 2009-09-11  |
| 0003       | 运动T恤      | 衣服         |       4000 |           2800 | NULL        |
| 0009       | 手套         | 衣服         |        800 |            500 | NULL        |
| 0010       | 水壶         | 厨房用具     |       2000 |           1700 | 2009-09-20  |
+------------+--------------+--------------+------------+----------------+-------------+

接下来,使用union对表进行假发运算

mysql> select product_id,product_name from product-> union-> select product_id,product_name from product2;
+------------+--------------+
| product_id | product_name |
+------------+--------------+
| 0001       | T恤          |
| 0002       | 打孔器       |
| 0003       | 运动T恤      |
| 0004       | 菜刀         |
| 0005       | 高压锅       |
| 0006       | 叉子         |
| 0007       | 擦菜板       |
| 0008       | 圆珠笔       |
| 0009       | 手套         |
| 0010       | 水壶         |
+------------+--------------+

集合运算符会除去重复的记录。

集合运算的注意事项

(不仅限于union,之后学习的所有运算符都要遵守这些注意事项)

1、作为运算对象的记录的列数必须相同
2、作为运算对象的记录中列的类型必须一致
3、可以使用任何select语句,但order by子句只能在最后使用一次

mysql> 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;
+------------+--------------+
| product_id | product_name |
+------------+--------------+
| 0004       | 菜刀         |
| 0005       | 高压锅       |
| 0006       | 叉子         |
| 0007       | 擦菜板       |
| 0010       | 水壶         |
+------------+--------------+

包含重复行的集合运算–all选项

很简单,只需要在union后面添加all就可以,all选项在union之外的集合运算符中同样可以使用。
例如保留重复行:

mysql> select product_id,product_name from product-> union all-> select product_id,product_name from product2;
+------------+--------------+
| product_id | product_name |
+------------+--------------+
| 0001       | T恤          |
| 0002       | 打孔器       |
| 0003       | 运动T恤      |
| 0004       | 菜刀         |
| 0005       | 高压锅       |
| 0006       | 叉子         |
| 0007       | 擦菜板       |
| 0008       | 圆珠笔       |
| 0001       | T恤          |
| 0002       | 打孔器       |
| 0003       | 运动T恤      |
| 0009       | 手套         |
| 0010       | 水壶         |
+------------+--------------+

选取表中的公共部分–intersect(交集)

MySQL中不支持交集运算

记录的减法–except(差集)

MySQL中不支持差集运算

2 联结(以列为单位对表进行联结)

  • 联结(join)就是将其他表中的列添加过来,进行“添加列”的集合运算。union是以行(纵向)为单位进行操作,而联结则是以列(横向)为单位进行的
  • 联结大体上分为内联结和外联结两种。

联结就是将其他表中的列添加过来,进行’'添加列"的运算。

内联结–inner join

A:两张表中都包含的列–商品编号
B:只存在于一张表内的列–商品编号之外的列
联结运算,就是以A中的列作为桥梁,将B中满足同样条件的列汇集到同意结果之中。
下面我们试着从product表中取出商品名称和销售单价,并与shopproduct表中的内容跟进行结合。

mysql> select sp.shop_id,sp.shop_name,sp.product_id,p.product_name,p.sale_price-> from shopproduct as sp inner join product as p-> on sp.product_id=p.product_id;
+---------+-----------+------------+--------------+------------+
| shop_id | shop_name | product_id | product_name | sale_price |
+---------+-----------+------------+--------------+------------+
| 000A    | 东京      | 0001       | T恤          |       1000 |
| 000A    | 东京      | 0002       | 打孔器       |        500 |
| 000A    | 东京      | 0003       | 运动T恤      |       4000 |
| 000B    | 名古屋    | 0002       | 打孔器       |        500 |
| 000B    | 名古屋    | 0003       | 运动T恤      |       4000 |
| 000B    | 名古屋    | 0004       | 菜刀         |       3000 |
| 000B    | 名古屋    | 0006       | 叉子         |        500 |
| 000B    | 名古屋    | 0007       | 擦菜板       |        880 |
| 000C    | 大阪      | 0003       | 运动T恤      |       4000 |
| 000C    | 大阪      | 0004       | 菜刀         |       3000 |
| 000C    | 大阪      | 0006       | 叉子         |        500 |
| 000C    | 大阪      | 0007       | 擦菜板       |        880 |
| 000D    | 福冈      | 0001       | T恤          |       1000 |
+---------+-----------+------------+--------------+------------+

注:

  1. 表的别名不是必须的,进行联结时需要在from子句中使用多张表
  2. 我们在on之后指定两张表联结所使用的列(联结键)。on专门用来指定联结条件,他能起到与where相同的作用。需要指定多个键时,同样可以使用and ,or 。在进行内联结时on子句必不可少,并且on必须书写在from和where之间
  3. 使用联结时select子句中的列需要按照“<表的别名>.<列名>”的格式进行书写(语法上,只有那些同时存在于两张表中的列(produce_id)必须使用这样的书写方式,其他列想shop_id这样直接书写列名也不会发生错误)
  4. 内联结和where子句结合使用,例如只想知道东京店(000A)的信息时:
mysql> select sp.shop_id,sp.shop_name,sp.product_id,p.product_name,p.sale_price-> from shopproduct as sp inner join product as p-> on sp.product_id=p.product_id-> where sp.shop_id='000A';
+---------+-----------+------------+--------------+------------+
| shop_id | shop_name | product_id | product_name | sale_price |
+---------+-----------+------------+--------------+------------+
| 000A    | 东京      | 0001       | T恤          |       1000 |
| 000A    | 东京      | 0002       | 打孔器       |        500 |
| 000A    | 东京      | 0003       | 运动T恤      |       4000 |
+---------+-----------+------------+--------------+------------+

外联结–outer join

将量表进行外联结,语法与内联结差不多,只是结果不同:

mysql> select sp.shop_id,sp.shop_name,sp.product_id,p.product_name,p.sale_price-> from shopproduct as sp right outer join product as p-> on sp.product_id=p.product_id;
+---------+-----------+------------+--------------+------------+
| shop_id | shop_name | product_id | product_name | sale_price |
+---------+-----------+------------+--------------+------------+
| 000A    | 东京      | 0001       | T恤          |       1000 |
| 000A    | 东京      | 0002       | 打孔器       |        500 |
| 000A    | 东京      | 0003       | 运动T恤      |       4000 |
| 000B    | 名古屋    | 0002       | 打孔器       |        500 |
| 000B    | 名古屋    | 0003       | 运动T恤      |       4000 |
| 000B    | 名古屋    | 0004       | 菜刀         |       3000 |
| 000B    | 名古屋    | 0006       | 叉子         |        500 |
| 000B    | 名古屋    | 0007       | 擦菜板       |        880 |
| 000C    | 大阪      | 0003       | 运动T恤      |       4000 |
| 000C    | 大阪      | 0004       | 菜刀         |       3000 |
| 000C    | 大阪      | 0006       | 叉子         |        500 |
| 000C    | 大阪      | 0007       | 擦菜板       |        880 |
| 000D    | 福冈      | 0001       | T恤          |       1000 |
| NULL    | NULL      | NULL       | 高压锅       |       6800 |
| NULL    | NULL      | NULL       | 圆珠笔       |        100 |
+---------+-----------+------------+--------------+------------+

注:

  1. 与内联结结果不同,内联结的结果中有13条记录,外联结中有15条记录,对于外联结来说,只要数据存在于某一张表中,就能够读取出来。外联结名称的由来也跟null有关,即“结果中包含原表中不存在(在原表之外)的信息”,相反,只包含表内信息的联结也被称为内联结。
  2. 外联结还有一点很重要,就是要把哪张表作为主表。最终的结果中会包含主表内所有的数据。指定主表的关键字是left和right。使用left时,from子句中写在左侧的表是主表,使用right时,写在右侧的表时主表。
    将代码写成下面的形式结果与上相同:
mysql> select sp.shop_id,sp.shop_name,p.product_id,p.product_name,p.sale_price-> from product as p left outer join shopproduct as sp-> on sp.product_id=p.product_id;
+---------+-----------+------------+--------------+------------+
| shop_id | shop_name | product_id | product_name | sale_price |
+---------+-----------+------------+--------------+------------+
| 000A    | 东京      | 0001       | T恤          |       1000 |
| 000A    | 东京      | 0002       | 打孔器       |        500 |
| 000A    | 东京      | 0003       | 运动T恤      |       4000 |
| 000B    | 名古屋    | 0002       | 打孔器       |        500 |
| 000B    | 名古屋    | 0003       | 运动T恤      |       4000 |
| 000B    | 名古屋    | 0004       | 菜刀         |       3000 |
| 000B    | 名古屋    | 0006       | 叉子         |        500 |
| 000B    | 名古屋    | 0007       | 擦菜板       |        880 |
| 000C    | 大阪      | 0003       | 运动T恤      |       4000 |
| 000C    | 大阪      | 0004       | 菜刀         |       3000 |
| 000C    | 大阪      | 0006       | 叉子         |        500 |
| 000C    | 大阪      | 0007       | 擦菜板       |        880 |
| 000D    | 福冈      | 0001       | T恤          |       1000 |
| NULL    | NULL      | 0005       | 高压锅       |       6800 |
| NULL    | NULL      | 0008       | 圆珠笔       |        100 |
+---------+-----------+------------+--------------+------------+

3张以上的表的联结

我们首先创建一张用来管理库存商品的ibao。假设商品都保存在p001和p0020这2个库中,创建inventoryproduct表:

mysql> create table inventoryproduct-> (inventory_id char(4) not null,-> product_id char(4) not null,-> inventory_quantity integer not null,-> primary key(inventory_id,product_id));-- DML:插入数据
START TRANSACTION;INSERT INTO InventoryProduct (inventory_id, product_id, inventory_quantity) VALUES ('S001', '0001',   0);
INSERT INTO InventoryProduct (inventory_id, product_id, inventory_quantity)VALUES ('S001',    '0002',   120);
INSERT INTO InventoryProduct (inventory_id, product_id, inventory_quantity) VALUES ('S001',   '0003',   200);
INSERT INTO InventoryProduct (inventory_id, product_id, inventory_quantity) VALUES ('S001',   '0004',   3);
INSERT INTO InventoryProduct (inventory_id, product_id, inventory_quantity) VALUES ('S001',   '0005',   0);
INSERT INTO InventoryProduct (inventory_id, product_id, inventory_quantity) VALUES ('S001',   '0006',   99);
INSERT INTO InventoryProduct (inventory_id, product_id, inventory_quantity) VALUES ('S001',   '0007',   999);
INSERT INTO InventoryProduct (inventory_id, product_id, inventory_quantity) VALUES ('S001',   '0008',   200);
INSERT INTO InventoryProduct (inventory_id, product_id, inventory_quantity)VALUES ('S002',    '0001',   10);
INSERT INTO InventoryProduct (inventory_id, product_id, inventory_quantity) VALUES ('S002',   '0002',   25);
INSERT INTO InventoryProduct (inventory_id, product_id, inventory_quantity) VALUES ('S002',   '0003',   34);
INSERT INTO InventoryProduct (inventory_id, product_id, inventory_quantity) VALUES ('S002',   '0004',   19);
INSERT INTO InventoryProduct (inventory_id, product_id, inventory_quantity) VALUES ('S002',   '0005',   99);
INSERT INTO InventoryProduct (inventory_id, product_id, inventory_quantity) VALUES ('S002',   '0006',   0);
INSERT INTO InventoryProduct (inventory_id, product_id, inventory_quantity) VALUES ('S002',   '0007',   0);
INSERT INTO InventoryProduct (inventory_id, product_id, inventory_quantity) VALUES ('S002',   '0008',   18);COMMIT;mysql> select * from inventoryproduct;
+--------------+------------+--------------------+
| inventory_id | product_id | inventory_quantity |
+--------------+------------+--------------------+
| S001         | 0001       |                  0 |
| S001         | 0002       |                120 |
| S001         | 0003       |                200 |
| S001         | 0004       |                  3 |
| S001         | 0005       |                  0 |
| S001         | 0006       |                 99 |
| S001         | 0007       |                999 |
| S001         | 0008       |                200 |
| S002         | 0001       |                 10 |
| S002         | 0002       |                 25 |
| S002         | 0003       |                 34 |
| S002         | 0004       |                 19 |
| S002         | 0005       |                 99 |
| S002         | 0006       |                  0 |
| S002         | 0007       |                  0 |
| S002         | 0008       |                 18 |
+--------------+------------+--------------------+

我们从库存商品表中取出保存在S001仓库中的商品数量,并将该列添加到上面内联结的表中。联结方式为内联结(外联结的使用方法完全相同),联结键为商品编号(product_id):

mysql> select sp.shop_id,sp.shop_name,sp.product_id,p.product_name,p.sale_price,ip.inventory_quantity-> from shopproduct as sp inner join product as p-> on sp.product_id=p.product_id->     inner join inventoryproduct as ip->       on sp.product_id=ip.product_id-> where ip.inventory_id='S001';
+---------+-----------+------------+--------------+------------+--------------------+
| shop_id | shop_name | product_id | product_name | sale_price | inventory_quantity |
+---------+-----------+------------+--------------+------------+--------------------+
| 000A    | 东京      | 0001       | T恤          |       1000 |                  0 |
| 000A    | 东京      | 0002       | 打孔器       |        500 |                120 |
| 000A    | 东京      | 0003       | 运动T恤      |       4000 |                200 |
| 000B    | 名古屋    | 0002       | 打孔器       |        500 |                120 |
| 000B    | 名古屋    | 0003       | 运动T恤      |       4000 |                200 |
| 000B    | 名古屋    | 0004       | 菜刀         |       3000 |                  3 |
| 000B    | 名古屋    | 0006       | 叉子         |        500 |                 99 |
| 000B    | 名古屋    | 0007       | 擦菜板       |        880 |                999 |
| 000C    | 大阪      | 0003       | 运动T恤      |       4000 |                200 |
| 000C    | 大阪      | 0004       | 菜刀         |       3000 |                  3 |
| 000C    | 大阪      | 0006       | 叉子         |        500 |                 99 |
| 000C    | 大阪      | 0007       | 擦菜板       |        880 |                999 |
| 000D    | 福冈      | 0001       | T恤          |       1000 |                  0 |
+---------+-----------+------------+--------------+------------+--------------------+

交叉联结–cross join(笛卡尔积)

我们将product表和shopproduct表进行交叉联结:

mysql> select sp.shop_id,sp.shop_name,sp.product_id,p.product_name-> from shopproduct as sp cross join product as p;
+---------+-----------+------------+--------------+
| shop_id | shop_name | product_id | product_name |
+---------+-----------+------------+--------------+
| 000A    | 东京      | 0001       | T恤          |
| 000A    | 东京      | 0001       | 打孔器       |
| 000A    | 东京      | 0001       | 运动T恤      |
| 000A    | 东京      | 0001       | 菜刀         |
| 000A    | 东京      | 0001       | 高压锅       |
| 000A    | 东京      | 0001       | 叉子         |
| 000A    | 东京      | 0001       | 擦菜板       |
| 000A    | 东京      | 0001       | 圆珠笔       |
| 000A    | 东京      | 0002       | T恤          |
| 000A    | 东京      | 0002       | 打孔器       |
| 000A    | 东京      | 0002       | 运动T恤      |
| 000A    | 东京      | 0002       | 菜刀         |
| 000A    | 东京      | 0002       | 高压锅       |
| 000A    | 东京      | 0002       | 叉子         |
| 000A    | 东京      | 0002       | 擦菜板       |
| 000A    | 东京      | 0002       | 圆珠笔       |
| 000A    | 东京      | 0003       | T恤          |
| 000A    | 东京      | 0003       | 打孔器       |
| 000A    | 东京      | 0003       | 运动T恤      |
| 000A    | 东京      | 0003       | 菜刀         |
| 000A    | 东京      | 0003       | 高压锅       |
| 000A    | 东京      | 0003       | 叉子         |
| 000A    | 东京      | 0003       | 擦菜板       |
| 000A    | 东京      | 0003       | 圆珠笔       |
| 000B    | 名古屋    | 0002       | T恤          |
| 000B    | 名古屋    | 0002       | 打孔器       |
| 000B    | 名古屋    | 0002       | 运动T恤      |
| 000B    | 名古屋    | 0002       | 菜刀         |
| 000B    | 名古屋    | 0002       | 高压锅       |
| 000B    | 名古屋    | 0002       | 叉子         |
| 000B    | 名古屋    | 0002       | 擦菜板       |
| 000B    | 名古屋    | 0002       | 圆珠笔       |
| 000B    | 名古屋    | 0003       | T恤          |
| 000B    | 名古屋    | 0003       | 打孔器       |
| 000B    | 名古屋    | 0003       | 运动T恤      |
| 000B    | 名古屋    | 0003       | 菜刀         |
| 000B    | 名古屋    | 0003       | 高压锅       |
| 000B    | 名古屋    | 0003       | 叉子         |
| 000B    | 名古屋    | 0003       | 擦菜板       |
| 000B    | 名古屋    | 0003       | 圆珠笔       |
| 000B    | 名古屋    | 0004       | T恤          |
| 000B    | 名古屋    | 0004       | 打孔器       |
| 000B    | 名古屋    | 0004       | 运动T恤      |
| 000B    | 名古屋    | 0004       | 菜刀         |
| 000B    | 名古屋    | 0004       | 高压锅       |
| 000B    | 名古屋    | 0004       | 叉子         |
| 000B    | 名古屋    | 0004       | 擦菜板       |
| 000B    | 名古屋    | 0004       | 圆珠笔       |
| 000B    | 名古屋    | 0006       | T恤          |
| 000B    | 名古屋    | 0006       | 打孔器       |
| 000B    | 名古屋    | 0006       | 运动T恤      |
| 000B    | 名古屋    | 0006       | 菜刀         |
| 000B    | 名古屋    | 0006       | 高压锅       |
| 000B    | 名古屋    | 0006       | 叉子         |
| 000B    | 名古屋    | 0006       | 擦菜板       |
| 000B    | 名古屋    | 0006       | 圆珠笔       |
| 000B    | 名古屋    | 0007       | T恤          |
| 000B    | 名古屋    | 0007       | 打孔器       |
| 000B    | 名古屋    | 0007       | 运动T恤      |
| 000B    | 名古屋    | 0007       | 菜刀         |
| 000B    | 名古屋    | 0007       | 高压锅       |
| 000B    | 名古屋    | 0007       | 叉子         |
| 000B    | 名古屋    | 0007       | 擦菜板       |
| 000B    | 名古屋    | 0007       | 圆珠笔       |
| 000C    | 大阪      | 0003       | T恤          |
| 000C    | 大阪      | 0003       | 打孔器       |
| 000C    | 大阪      | 0003       | 运动T恤      |
| 000C    | 大阪      | 0003       | 菜刀         |
| 000C    | 大阪      | 0003       | 高压锅       |
| 000C    | 大阪      | 0003       | 叉子         |
| 000C    | 大阪      | 0003       | 擦菜板       |
| 000C    | 大阪      | 0003       | 圆珠笔       |
| 000C    | 大阪      | 0004       | T恤          |
| 000C    | 大阪      | 0004       | 打孔器       |
| 000C    | 大阪      | 0004       | 运动T恤      |
| 000C    | 大阪      | 0004       | 菜刀         |
| 000C    | 大阪      | 0004       | 高压锅       |
| 000C    | 大阪      | 0004       | 叉子         |
| 000C    | 大阪      | 0004       | 擦菜板       |
| 000C    | 大阪      | 0004       | 圆珠笔       |
| 000C    | 大阪      | 0006       | T恤          |
| 000C    | 大阪      | 0006       | 打孔器       |
| 000C    | 大阪      | 0006       | 运动T恤      |
| 000C    | 大阪      | 0006       | 菜刀         |
| 000C    | 大阪      | 0006       | 高压锅       |
| 000C    | 大阪      | 0006       | 叉子         |
| 000C    | 大阪      | 0006       | 擦菜板       |
| 000C    | 大阪      | 0006       | 圆珠笔       |
| 000C    | 大阪      | 0007       | T恤          |
| 000C    | 大阪      | 0007       | 打孔器       |
| 000C    | 大阪      | 0007       | 运动T恤      |
| 000C    | 大阪      | 0007       | 菜刀         |
| 000C    | 大阪      | 0007       | 高压锅       |
| 000C    | 大阪      | 0007       | 叉子         |
| 000C    | 大阪      | 0007       | 擦菜板       |
| 000C    | 大阪      | 0007       | 圆珠笔       |
| 000D    | 福冈      | 0001       | T恤          |
| 000D    | 福冈      | 0001       | 打孔器       |
| 000D    | 福冈      | 0001       | 运动T恤      |
| 000D    | 福冈      | 0001       | 菜刀         |
| 000D    | 福冈      | 0001       | 高压锅       |
| 000D    | 福冈      | 0001       | 叉子         |
| 000D    | 福冈      | 0001       | 擦菜板       |
| 000D    | 福冈      | 0001       | 圆珠笔       |
+---------+-----------+------------+--------------+

记录竟多达104条!进行交叉联结时无法使用内联结和外联结中所使用的on子句,这是因为交叉联结是对两张表中的全部记录进行交叉组合,因此结果中的记录数通常是两张表中行数的乘积。shopproduct有13条记录,product有8条记录,所以交叉联结后共有104条记录。

MySQL--集合运算相关推荐

  1. mysql集合运算_SQL基础教程(mick)学习

    数据处理通常情况下使用EXCEL,但也有其劣势,当数据量过大(10万条以上)就无法进行处理,现今数据量动辄几十上百万量的数据,就需要使用更高级的数据处理工具--DBMS. 学习的教材选择的是日本作家M ...

  2. mysql集合运算教程_详解SQL集合运算

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]06.透视.逆透视.分组集 [T ...

  3. MySQL的集合运算

    文章目录 集合运算 1.表的加减法 1.1 什么是集合运算 2.表的加法--union 2.1 UNION 2.2 UNION 和 OR 谓词 2.3 包含重复行的集合运算 UNION ALL 2.4 ...

  4. MySQL --- 多表查询 - 七种JOINS实现、集合运算、多表查询练习

    七种JOINS实现 左上图的JOIN是左外连接,右上图的JOIN是右外连接,中间图的JOIN是内连接,左中图的JOIN在左上图的基础上再去掉中间重复的,只需要 A 在 B 中没有的部分(空的部分),右 ...

  5. MySQL教程四——集合运算

    文章目录 一.表的加减法 1. 什么是集合运算? 2. 表的加法--UNION 练习题: 2.2 UNION 与 OR 谓词 练习题 : 2.3 包含重复行的集合运算 UNION ALL 练习题: 2 ...

  6. mysql基础 Task04:集合运算

    1. 表的加减法 新建表 tbl_product2 ,供后面学习. create table tbl_product2 (product_id char(4) primary key,product_ ...

  7. mysql 交并差_mysql学习笔记:集合运算并交差,其他

    总结一下今天数据库课堂上的所学2333 1. 在SQL语言实践中,集合运算的实现方法,推荐顺序如下: 并运算:union 交运算:in, exists, intersect(很多DBMS基本上不支持i ...

  8. mysql 字段集合运算_如何用SQL进行集合运算

    如何用SQL进行集合运算 发布时间:2020-07-15 14:31:43 来源:亿速云 阅读:117 作者:Leah 今天就跟大家聊聊有关如何用SQL进行集合运算 ,可能很多人都不太了解,为了让大家 ...

  9. mysql集合相加_用SQL进行集合运算

    这篇文章主要介绍了关于用SQL进行集合运算 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 1.比较表和表drop table if exists tbl_a;create table ...

  10. Task04:集合运算-表的加减法和join等-天池龙珠计划SQL训练营

    4.1表的加减法 4.1.1 什么是集合运算 集合在数学领域表示"各种各样的事物的总和", 在数据库领域表示记录的集合. 具体来说,表.视图和查询的执行结果都是记录的集合, 其中的 ...

最新文章

  1. List 如何根据对象的属性去重?Java 8 轻松搞定!
  2. android平板开发板,利用开源开发板自制的平板电脑 | 雷锋网
  3. 求和第一个算到最后一个周末求_Excel最全求和函数—sum家族系列
  4. HBase常用操作之namespace
  5. java 金字塔样式输出_Java打印金字塔(正实心、正空心,倒实心、倒空心),菱形...
  6. SQLServer之深度分析跟踪
  7. java生成excel到本地_java 将数据库中的数据导出成Excel文件 并保存到本地 将文件地址返回给前端...
  8. 20190812:两个数组的交集ⅠⅡ
  9. 不要主动进行垃圾回收
  10. 网络中的一些专业名词解释
  11. C语言小程序打印楼梯图案
  12. 多款iPhone遭遇中国禁售令!福建法院判决高通胜诉苹果
  13. 【产业互联网周报】罗永浩AR创业公司获美团领投;英特尔自动驾驶子公司Mobileye敲定IPO条款;星环科技登陆科创板...
  14. HTML网页设计制作大作业-制作漫画网页设计6个页面(HTML+CSS+JavaScript)
  15. java中IOException是什么异常
  16. 基于 UAP 的 Web Service 开发
  17. 关于笔记本WLAN被禁用解决方法
  18. vuejs2.0 数组操作 提示Cannot read property 'push' of undefined
  19. Android开发以来所记载最全的有关项目的网址
  20. 食物链(经典种类并查集问题)---详解

热门文章

  1. 发布v1.0.0.0 酷袋
  2. iPhone开发Swift基础07 内存泄漏检测
  3. AuthenticationManager 的 authentication 过程
  4. 非官方GitChat客户端及代码发布
  5. 分析基金表现,获取优质基金
  6. i7 12700 K和127000 KF差距 i712700 K和127000KF对比
  7. div强制换行和强制不换行
  8. 聊聊异步编程的 7 种实现方式
  9. mysql 基本操作 1
  10. 苹果CMS Mxone Pro开源版无加密v7.2