编辑
2023-10-07
mysql
00
请注意,本文编写于 581 天前,最后修改于 581 天前,其中某些信息可能已经过时。

目录

总结
总结

image.png

image.png

image.png

image.png

sql
CREATE TABLE SalesPerson ( sales_id INT PRIMARY KEY, name VARCHAR(50), salary INT, commission_rate INT, hire_date DATE ); CREATE TABLE Company ( com_id INT PRIMARY KEY, name VARCHAR(50), city VARCHAR(50) ); CREATE TABLE Orders ( order_id INT PRIMARY KEY, order_date DATE, com_id INT, sales_id INT, amount INT, FOREIGN KEY (com_id) REFERENCES Company(com_id), FOREIGN KEY (sales_id) REFERENCES SalesPerson(sales_id) ); -- 插入 SalesPerson 表数据 INSERT INTO SalesPerson (sales_id, name, salary, commission_rate, hire_date) VALUES (1, 'John', 100000, 6, '2006-04-01'), (2, 'Amy', 12000, 5, '2010-05-01'), (3, 'Mark', 65000, 12, '2008-12-25'), (4, 'Pam', 25000, 25, '2005-01-01'), (5, 'Alex', 5000, 10, '2007-02-03'); -- 插入 Company 表数据 INSERT INTO Company (com_id, name, city) VALUES (1, 'RED', 'Boston'), (2, 'ORANGE', 'New York'), (3, 'YELLOW', 'Boston'), (4, 'GREEN', 'Austin'); -- 插入 Orders 表数据 INSERT INTO Orders (order_id, order_date, com_id, sales_id, amount) VALUES (1, '2014-01-01', 3, 4, 10000), (2, '2014-02-01', 4, 5, 5000), (3, '2014-03-01', 1, 1, 50000), (4, '2014-04-01', 1, 4, 25000); SELECT s.name FROM SalesPerson as s WHERE s.sales_id NOT IN (SELECT o.sales_id FROM Orders o LEFT JOIN Company c ON o.com_id = c.com_id WHERE c.name = 'RED') ;

总结

左连接、右连接以及内连接(也称为等值连接)是在数据库查询中常用的连接类型。它们用于将两个或多个表中的数据连接起来,以便通过共享的列进行联接和检索相关的数据。

  1. 内连接(INNER JOIN):只返回两个表中同时满足连接条件的行。只有在连接列上具有匹配值的行才会被返回。

  2. 左连接(LEFT JOIN):返回左表中的所有行以及满足连接条件的右表中的匹配行。如果右表中没有匹配的行,则返回 NULL 值。

  3. 右连接(RIGHT JOIN):返回右表中的所有行以及满足连接条件的左表中的匹配行。如果左表中没有匹配的行,则返回 NULL 值。

选择使用哪种连接类型依赖于你想要从查询中获取的结果。

  • 如果你想要获取同时满足连接条件的行,可以使用内连接。
  • 如果你想要获取左侧表的所有行以及与之匹配的右侧表的行,可以使用左连接。
  • 如果你想要获取右侧表的所有行以及与之匹配的左侧表的行,可以使用右连接。

你还可以根据具体的业务需求使用其他类型的连接,如全连接(FULL JOIN)和交叉连接(CROSS JOIN),这些连接类型更为特殊和灵活。

image.png

image.png

sql
CREATE TABLE Segments ( x INT, y INT, z INT, PRIMARY KEY (x, y, z) ); -- 插入 Triangle 表数据 INSERT INTO Segments (x, y, z) VALUES (13, 15, 30), (10, 20, 15); SELECT x, y, z, CASE WHEN x + y > z AND x + z > y AND y + z > x THEN 'Yes' ELSE 'No' END AS triangle FROM Segments;

总结

CASE WHEN是SQL中的条件表达式,它允许你根据条件对结果进行条件性的选择和处理。它的基本语法如下:

sql
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE resultN END

CASE WHEN语句逐个检查条件,如果某个条件为真,则返回相应的结果。如果没有任何条件为真,则返回ELSE子句中的结果。以下是对CASE WHEN的详细解释:

  • CASE:开始CASE WHEN语句的关键字。
  • WHEN condition THEN result:在这里,condition是一个布尔表达式,当它为真时,返回result。可以有多个WHEN子句。
  • ELSE result:可选的ELSE子句定义当没有条件为真时返回的默认结果。
  • END:结束CASE WHEN语句的标记。

在解决问题时,CASE WHEN经常用于根据条件生成计算字段、进行条件筛选和分类、执行数据转换等。

本文作者:yowayimono

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!