一、表的加法

  1. 两张表相加,去掉重复项:union
  2. 两张表相加,保留重复项:union all
  3. 随堂练习:




mysql 两个sql 相加 sql两个表数据相加_sql 相加


mysql 两个sql 相加 sql两个表数据相加_sql相加运算_02


二、表的联结

1、有哪几种联结方式:


mysql 两个sql 相加 sql两个表数据相加_sql重复数据只取一条_03


Cross join :表中的每一行都与另一张表中的每一行合并在一起(行数为:两张表的乘积),

不常用,但它是其他联结的基础


mysql 两个sql 相加 sql两个表数据相加_数据_04


Inner join:查找出同时存在两张表中的数据


mysql 两个sql 相加 sql两个表数据相加_sql重复数据只取一条_05


运算原理:


mysql 两个sql 相加 sql两个表数据相加_sql 相加_06


mysql 两个sql 相加 sql两个表数据相加_mysql 两个sql 相加_07


随堂练习:


mysql 两个sql 相加 sql两个表数据相加_sql 相加_08


mysql 两个sql 相加 sql两个表数据相加_sql 相加_09


Left join :将左侧的表格内容全部提取出来


mysql 两个sql 相加 sql两个表数据相加_数据_10


运行原理:


mysql 两个sql 相加 sql两个表数据相加_sql重复数据只取一条_11


mysql 两个sql 相加 sql两个表数据相加_sql重复数据只取一条_12


随堂练习:


mysql 两个sql 相加 sql两个表数据相加_mysql 两个sql 相加_13


在left join 的基础上,只取左表内容,但是去掉共同的部分,:


mysql 两个sql 相加 sql两个表数据相加_sql相加运算_14


随堂练习:


mysql 两个sql 相加 sql两个表数据相加_sql重复数据只取一条_15


Right join :取出右边表格的全部数据


mysql 两个sql 相加 sql两个表数据相加_sql 相加_16


运行原理:


mysql 两个sql 相加 sql两个表数据相加_mysql 两个sql 相加_17


mysql 两个sql 相加 sql两个表数据相加_sql相加运算_18


随堂练习:


mysql 两个sql 相加 sql两个表数据相加_mysql 两个sql 相加_19


在right join 的基础上,只取右表内容,但是去掉共同的部分:


mysql 两个sql 相加 sql两个表数据相加_sql相加运算_20


随堂练习:


mysql 两个sql 相加 sql两个表数据相加_sql 相加_21


Full join :取左右表的所有行(没有匹配值的时候,用空值来填充,但是my sql 不支持全连接)


mysql 两个sql 相加 sql两个表数据相加_sql重复数据只取一条_22


总结:


mysql 两个sql 相加 sql两个表数据相加_sql 相加_23


mysql 两个sql 相加 sql两个表数据相加_mysql 两个sql 相加_24


三、联结应用案例

1、随堂练习:

思路


mysql 两个sql 相加 sql两个表数据相加_sql重复数据只取一条_25


mysql 两个sql 相加 sql两个表数据相加_sql重复数据只取一条_26


mysql 两个sql 相加 sql两个表数据相加_sql重复数据只取一条_27


问题:暂时没搞明白:


mysql 两个sql 相加 sql两个表数据相加_mysql 两个sql 相加_28


随堂练习2:


mysql 两个sql 相加 sql两个表数据相加_sql 相加_29


mysql 两个sql 相加 sql两个表数据相加_sql重复数据只取一条_30


随堂练习3:


mysql 两个sql 相加 sql两个表数据相加_sql相加运算_31


mysql 两个sql 相加 sql两个表数据相加_sql相加运算_32


mysql 两个sql 相加 sql两个表数据相加_数据_33


注:老师用的是inner join ,自己用left join 试写,也是ok,

【问】发现有时候left join和inner join运行的结果一样,是不是就都可以,以运行结果为准?还是应该严格区分?

【答】只是恰好结果一样,比如“学生表”和“成绩表联结。

如果所有学生都选课了,那么left join和inner join结果是一样的。

如果一部分学生没选课,那么eft join和inner join就不一样。

所以,选择哪种联结,不是看查询结果。而是在一开始要根据你想要保留哪部分数据来选择用哪种联结,然后才是写SQL。

四、CASE表达式:


mysql 两个sql 相加 sql两个表数据相加_sql相加运算_34


案例1:


mysql 两个sql 相加 sql两个表数据相加_mysql 两个sql 相加_35


案例2:


mysql 两个sql 相加 sql两个表数据相加_sql重复数据只取一条_36


第一步:先写出每门课程人数:


mysql 两个sql 相加 sql两个表数据相加_sql 相加_37


第二步:在细化成case函数


mysql 两个sql 相加 sql两个表数据相加_sql重复数据只取一条_38


运算步骤如下:


mysql 两个sql 相加 sql两个表数据相加_mysql 两个sql 相加_39


随堂练习:


mysql 两个sql 相加 sql两个表数据相加_数据_40


注意事项:


mysql 两个sql 相加 sql两个表数据相加_sql相加运算_41


  1. else 可以不写,但尽量写上
  2. end 一定要写
  3. case函数不一定用在select后面,可以用在任何地方。

案例3:


mysql 两个sql 相加 sql两个表数据相加_sql相加运算_42


mysql 两个sql 相加 sql两个表数据相加_sql 相加_43


随堂练习:


mysql 两个sql 相加 sql两个表数据相加_sql相加运算_44


Group by 后当用几个列来分组时,这几个列的值全部相同才算一组。