一、表的加减法
表的加法——UNION
用法:SELECT product_id, product_name
FROM product
UNIO
集合运算——UNION ALL
用法:SELECT product_id, product_name
FROM product2:
隐式转换
字符串型:SELECT product_id, product_name, '1'
FROM product
UNION
数值类型:SELECT product_id, product_name,sale_price
FROM product2:
bag的交运算
对于两个 bag, 他们的交运算会按照:(1)该元素是否同时属于两个bag;(2)该元素在两个bag中最小出现次:数这两个方面来进行计算. 因此对于 A = {1,1,1,2,3,5,7}, B = {1,1,2,2,4,6,8} 两个 bag, 它们的交运算结果就等于 {1,1,2}
二、连结(JOIN)
内连结(INNER JOIN)
内连结的语法:FROM <tb_1> INNER JOIN <tb_2> ON <condition(s)>
注意:其中 INNER 关键词表示使用了内连结
关于内连结,需要注意以下三点:
要点一:进行连接时需要在FROM子句中使用多张表
要点二:必须使用ON句子来指定连结条件
要点三:SELECT句子中的列最好按照表名.列名的格式来使用
注意:查询的执行顺序按照,FROM 子句->WHERE 子句->SELECT 子句
三、自连结(SELF JOIN)
内连结, 连结的都是不一样的两个表. 但实际上一张表也可以与自身作连结, 这种连接称之为自连结.
注意: 自连结并不是区分于内连结和外连结的第三种连结, 自连结可以是外连结也可以是内连结, 它是不同于内连结外连结的另一个连结的分类方法.
四、自然连结(NATURAL JOIN)
自然连结并不是区别于内连结和外连结的第三种连结, 它其实是内连结的一种特例–当两个表进行自然连结时, 会按照两个表中都包含的列名来进行等值内连结
五、外连结(OUTER JOIN)
内连结会丢弃两张表中不满足 ON 条件的行,和内连结相对的就是外连结.
外连结分为:
左连结语法:FROM <tb_1> LEFT OUTER JOIN <tb_2> ON <condition(s)>
右连结语法:FROM <tb_1> RIGHT OUTER JOIN <tb_2> ON <condition(s)>
全外连结语法: FROM <tb_1> FULL OUTER JOIN <tb_2> ON <condition(s)>
六、多表连结
通常连结只涉及 2 张表,但有时也会出现必须同时连结 3 张以上的表的情况, 原则上连结表的数量并没有限制。
七、交叉连结——CROSS JOIN(笛卡尔积)
无论是外连结内连结, 一个共同的必备条件就是连结条件–ON 子句, 用来指定连结的条件. 如果你试过不使用这个连结条件的连结查询, 你可能已经发现, 结果会有很多行. 在连结去掉 ON 子句, 就是所谓的交叉连结(CROSS JOIN)。