MySQL 基础 (三)- 表联结

MySQL别名

SQL允许给表名起别名。主要理由:

  1. 缩短SQL语句
  2. 允许在单条SELECT语句中多次使用相同的表

联结

  • INNER JOIN,用于返回两表均包含的数据。
  • LEFT JOIN,从左表返回所有的行,即使右表中没有匹配。如果右表中没有匹配,则结果为NULL。
  • CROSS JOIN,从连接的表返回行的迪卡儿乘积。
  • 自联结,通常作为外部语句用来替代从相同表中检索数据时使用的子查询语句。
    SELECT p1.prod_id, p1.prod_name
    FROM products AS p1, products AS p2
    WHERE p1.vend_id = p2.vend_id
    AND p2.prod_id = 'DTNTR';

     

  • UNION,合并两个或多个SELECT语句的结果。内部的每个SELECT语句必须拥有相同数量的列。列必须拥有相似的数据类型。同时,每个SELECT语句中的列的顺序必须相同。

 

项目五:

组合两张表 (难度:简单) 在数据库中创建表1和表2,并各插入三行数据(自己造)

 

编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName, LastName, City, State

SELECT FirstName, LastName,City,State
FROM Person LEFT JOIN Address
ON Person.Personld = Address.Personld;

项目六:

删除重复的邮箱(难度:简单) 编写一个 SQL 查询,来删除 email 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。

例如,在运行你的查询语句之后,上面的 email表应返回以下几行:

SELECT * 
FROM email
WHERE id in (
SELECT MIN(id) 
FROM email
GROUP BY Email
);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值