本文共 2474 字,大约阅读时间需要 8 分钟。
在 SQL 中,LEFT JOIN、GROUP BY、MIN、HAVING 和 LIKE 是常用的操作符,用于数据处理和分析。本文将从实际案例入手,详细讲解这些操作符的应用场景。
LEFT JOIN(左连接)用于从左表(table_name1)中返回所有行,即使在右表(table_name2)中没有匹配的记录。它类似于INNER JOIN,但会保留左表中没有对应右表记录的行。
假设有以下两个表:
Persons 表: | Id_P | LastName | FirstName | |------|----------|-----------| | 1 | Smith | John | | 2 | Brown | Alice | | 3 | Davis | Bob |
Orders 表: | Id_P | OrderNo | OrderPrice | |------|----------|-------------| | 1 | 10001 | 500 | | 2 | 10002 | 700 | | 3 | 10003 | 300 |
使用以下 SQL 语句,可以列出所有人及其对应的订单(如果有的话):
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsLEFT JOIN Orders ON Persons.Id_P = Orders.Id_PORDER BY Persons.LastName
执行上述 SQL 语句后,结果如下:
LastName | FirstName | OrderNo |
---|---|---|
Smith | John | 10001 |
Brown | Alice | 10002 |
Davis | Bob | 10003 |
GROUP BY 语句用于结合聚合函数(如SUM、COUNT等),根据一个或多个列对结果集进行分组。它通常用于统计数据或汇总信息。
假设有以下 Orders 表:
Customer | OrderPrice | OrderNo |
---|---|---|
Bush | 1200 | 10004 |
Bush | 1500 | 10005 |
Adams | 1000 | 10006 |
Adams | 2000 | 10007 |
使用以下 SQL 语句,可以计算每个客户的总订单金额:
SELECT Customer, SUM(OrderPrice) AS Total_OrderFROM OrdersGROUP BY Customer
执行上述 SQL 语句后,结果如下:
Customer | Total_Order |
---|---|
Bush | 2700 |
Adams | 3000 |
MIN 函数用于返回一列中的最小值,且忽略 NULL 值。
假设有以下 Orders 表:
Id_P | OrderPrice |
---|---|
1 | 500 |
2 | 700 |
3 | 300 |
4 | NULL |
使用以下 SQL 语句,可以查找“OrderPrice”列的最小值:
SELECT MIN(OrderPrice) AS Smallest_OrderPriceFROM Orders
执行上述 SQL 语句后,结果如下:
Smallest_OrderPrice |
---|
300 |
HAVING 子句用于对结果集进行进一步过滤,特别是在使用 GROUP BY 和聚合函数时,WHERE 子句无法使用。
假设有以下 Orders 表:
Customer | OrderPrice | OrderNo |
---|---|---|
Bush | 800 | 10008 |
Bush | 1200 | 10009 |
Adams | 1000 | 10010 |
Adams | 2000 | 10011 |
使用以下 SQL 语句,可以查找订单总金额少于 2000 的客户:
SELECT Customer, SUM(OrderPrice) AS Total_OrderFROM OrdersGROUP BY CustomerHAVING SUM(OrderPrice) < 2000
执行上述 SQL 语句后,结果如下:
Customer | Total_Order |
---|---|
Bush | 2000 |
Adams | 3000 |
LIKE 操作符用于在 WHERE 子句中搜索数据库中的一列,支持通配符。
SQL 通配符用于匹配一列中的特定模式。常见通配符包括:
%
:匹配任意字符序列
_`:匹配单个任意字符[char]
:匹配字符集合[!char]
:不匹配指定字符假设有以下 Persons 表:
Id_P | LastName | City |
---|---|---|
1 | Smith | New York |
2 | Brown | London |
3 | Davis | Berlin |
4 | Wilson | Tokyo |
使用以下 SQL 语句,可以查找居住在“N”开头城市的人:
SELECT * FROM PersonsWHERE City LIKE 'N%'
使用通配符 %lon%
可以匹配包含“lon”的城市:
SELECT * FROM PersonsWHERE City LIKE '%lon%'
要排除包含“lon”的城市,可以使用 NOT LIKE
:
SELECT * FROM PersonsWHERE City NOT LIKE '%lon%'
通过以上示例,可以更好地理解 LEFT JOIN、GROUP BY、MIN、HAVING 和 LIKE 在 SQL 中的应用场景。这些操作符是数据处理和分析的重要工具,熟练掌握它们可以显著提升数据库查询效率。
转载地址:http://bdtx.baihongyu.com/