sql 两张表相乘_SQL:多表查询

这篇博客介绍了SQL中的多表查询技巧,包括UNION与UNION ALL用于合并两张表,以及交叉联结(笛卡尔积)、内联结、左联结、右联结等不同类型的联结操作。此外,还讲解了CASE表达式在SQL中的应用,作为条件判断的工具。提供了SQLZOO的练习链接以帮助读者巩固学习。
摘要由CSDN通过智能技术生成

学习内容

  1. 表的加法
    1. UNION
  2. 表的联结
  3. case表达式

一、合并两张表

UNION:将两张表中的数据按行合并在一起(重复的数据只保留一个)。

UNION ALL:按行合并两张表中的全部数据(保留重复数据)。

b19e88c8b4be6cbf2cd70d52fd74c98e.png
-- UNION 语法
SELECT 课程号, 课程名称
FROM course
UNION
SELECT 课程号, 课程名称
FROM course1;

-- UNION ALL 语法
SELECT 课程号, 课程名称
FROM course
UNION ALL
SELECT 课程号, 课程名称
FROM course1;

二、表的联结

  1. 交叉联结(cross join)/笛卡尔积

1c1098a5bbcd77eec450aee423035d67.png

将表1中的每一行与表的每一行相乘组合起来。新表的行数为表1行数 * 表2行数

2. 内联结(inner join)

查找出同时存在于两张表中的数据(交集)。

510400e230b74f6fb68f0b2fef832047.png
-- 语法。join和inner join相同
SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;

-- 举例
SELECT a.学号, a.姓名, b.课程号
FROM student as a
INNER JOIN score as b
ON a.学号 = b.学号;

3. 左联结(left join)

返回左表(table1)中所有的行和匹配的行。即使右表(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值