Datawhale task4: MySQL 基础 (三)- 表联结
MySQL别名
- 定义:表名、列明后面接AS xx,xx就是表/列的别名,AS也可省略。
- 作用:
1.是缩短对象的长度,方便书写,使名称语句简洁
2.区别同名对象,在自连接查询时,同一个表要连接查询本身,就需要用别名来区分表名及列名; - 示例:
INNER JOIN
- 语法:
- 解释:
inner join(等值连接) 只返回两个表中联结字段相等的行,即取交集
LEFT JOIN
- 语法 :
- 解释:
LEFT JOIN (左连接)关键字会返回左表 (table1)所有的行,即使在右表(table2) 中没有匹配到字段相等的行
CROSS JOIN
- 语法:
- 解释:
CROSS JOIN又称为笛卡尔乘积,实际上是把两个表乘起来,这个不太好描述清楚,通过实例更好的清楚CROSS JOIN的用法 - 实例如下:
执行如下cross join 语句,连接两个表:
返回结果如下:
自连接
- 语法:
- 解释:
自连接查询其实等同于连接查询,需要两张表,只不过它的左表(父表)和右表(子表)都是自己。做自连接查询的时候,是自己和自己连接,分别给父表和子表取两个不同的别名,然后附上连接条件
UNION
- 语法:
1.UNION
2.UNION ALL
- 解释:
- UNION 操作符用于合并两个或多个 SELECT 语句的结果集
- UNION 操作符选取不同的值,如果允许重复的值,则使用 UNION ALL
- UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型,同时,每条 SELECT 语句中的列的顺序必须相同
项目五
1.创建表,插入数据
2.无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName, LastName, City, State,结果如下:
项目六
1.创建表,插入数据
2.删除 email 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个,结果如下: