MYSQL——表的加减法、联结
UNION:两表相加(并)
将下面两个表合并,以行为单位 union的用法:
SELECT shop_id,shop_cata FROM shopinfocopy UNION SELECT shohin_id,shohin_cata FROM shopinfo;
会去除重复的记录 1.合并的两个表,挑选出来的列数必须相同 2.相同位置的列的数据类型必须相同 3.可以使用任何select语句(where等),order by子句只能在最后使用一次 4.ALL UNION可以保留重复行
INTERSECT:表的公共部分(交)
MYSQL不支持此功能
SELECT shop_id,shop_cata FROM shopinfocopy INTERSECT SELECT shohin_id,shohin_cata FROM shopinfo;
EXCEPT:表的差集
MYSQL不支持此功能 表示在只第一个表不在第二个表的记录,减数与被减数位置不同结果不同 oracle使用minus
SELECT shop_id,shop_cata FROM shopinfocopy EXCEPT SELECT shohin_id,shohin_cata FROM shopinfo;
表的联结
以列为单位,将其他表中的列添加过来
内联结——INNER JOIN
1.from子句中可能会使用多张表,通过关键字INNER JOIN将表连接在一起,可以通过为表指定别名的方式使sql语句更加简洁 2.on关键字后面是联结键(两表共同的列),on要在from与where之间使用 3.select子句中的列需要指定是哪个表中的列
SELECT T.shopgood_id,T.shop_name,T.shohin_id, S.shohin_name,S.sale_danjia FROM shopinfo AS S INNER JOIN shopgood AS T ON S.shohin_id=T.shohin_id;
内联结与where子句结合使用 挑选大阪店的信息
SELECT S.shohin_id,S.shohin_name,S.sale_danjia, T.shopgood_id,T.shop_name,T.shohin_id FROM shopinfo AS S INNER JOIN shopgood AS T ON S.shohin_id=T.shohin_id WHERE T.shopgood_id=000C;
外联结——OUTER JOIN
SELECT T.shopgood_id,T.shop_name,T.shohin_id, S.shohin_name,S.sale_danjia FROM shopinfo AS S LEFT OUTER JOIN shopgood AS T ON S.shohin_id=T.shohin_id;
可以选出单张表的全部信息,使用left 和right指定主表(显示全部信息的表)
3张以上的表联结
SELECT T.shopgood_id,T.shop_name,T.shohin_id, S.shohin_name,S.sale_danjia FROM shopinfo AS S INNER JOIN shopgood AS T ON S.shohin_id=T.shohin_id INNER JOIN Zshop AS ZS ON T.shohin_id=ZS.shohin_id;
交叉联结:cross join
笛卡尔积,A表有m条记录,B表有n条记录,交叉联结之后得到m*n条记录,在实际中应用很少
SELECT T.shopgood_id,T.shop_name,T.shohin_id,S.shohin_name FROM shopinfo AS S CROSS JOIN shopgood AS T;
一部分结果