MIN() 和 MAX()函数求最大最小值
MIN()函数返回所选列的最小值。MAX()函数返回所选列的最大值。
MIN() 语法
SELECT MIN(column_name) FROM table_name WHERE condition;
MAX() 语法
SELECT MAX(column_name) FROM table_name WHERE condition;
现在我们换一个新的表Product如下:
MIN() 示例
查找最便宜产品的价格:
SELECT MIN(Price) AS SmallestPrice FROM Products;
显示如下:
MAX() 示例
查找最贵产品的价格:
SELECT MAX(Price) AS LargestPrice FROM Products;
返回如下:
练习:
使用该MIN函数选择Price列的最小值的记录。
SELECT MIN(Price) FROM Products;
COUNT()、AVG() 和 SUM()函数
该COUNT()函数返回与指定条件匹配的行数。
COUNT() 语法
SELECT COUNT(column_name) FROM table_name WHERE condition;
该AVG()函数返回数字列的平均值。
AVG() 语法
SELECT AVG(column_name) FROM table_name WHERE condition;
该SUM()函数返回数字列的总和。
SUM() 语法
SELECT SUM(column_name) FROM table_name WHERE condition;
我们还是用表product
COUNT() 示例
查找产品数量:
SELECT COUNT(ProductID) FROM Products;
注意: NULL 值不计算在内。
AVG() 示例
查找所有产品的平均价格:
SELECT AVG(Price) FROM Products;
注意: NULL 值被忽略。
假设我现在有“OrderDetails”表如下:
SUM() 示例
查找“OrderDetails”表中“Quantity”字段的总和:
SELECT SUM(Quantity) FROM OrderDetails;
返回如下:
注意: NULL 值被忽略。练习:返回Price值设置为18的记录数
SELECT COUNT(*) FROM Products WHERE Price = 18;
LIKE运算符
该LIKE运算符在 WHERE子句中用于搜索列中的指定模式。有两个通配符经常与 LIKE运算符结合使用:
百分号 (%) 代表零、一个或多个字符
下划线 () 代表一个,单个字符
但是呢注意: MS Access 使用星号 (*) 代替百分号 (%),使用问号 (?) 代替下划线 ()
当然百分号和下划线也可以组合使用!
LIKE 语法
SELECT column1, column2, ... FROM table_name WHERE columnN LIKE pattern;
提示:您还可以使用 AND或OR运算符组合任意数量的条件。
以下是一些示例,显示了LIKE带有“%”和“_”通配符的不同运算符:
所对应意思为:
第一行:匹配任何以a开头的字段
第二行:匹配任何以a结尾的字段
第三行:匹配任何具有“or”的字段
第四行:查找第二个位置有“r”的任何值
第五行:查找任何以“a”开头且长度至少为 2 个字符的值
第六行:查找任何以“a”开头且长度至少为 3 个字符的值
第七行:查看以“a”开头并以“o”结尾的任何值
比如我们还是有如下Customers”表:
LIKE 示例
选择 CustomerName 以“a”开头的所有客户:
SELECT * FROM Customers WHERE CustomerName LIKE 'a%';
选择 CustomerName 以“a”结尾的所有客户:
SELECT * FROM Customers WHERE CustomerName LIKE '%a';
选择 CustomerName 中任何位置都有“或”的所有客户:
SELECT * FROM Customers WHERE CustomerName LIKE '%or%';
选择 CustomerName 中第二个位置为“r”的所有客户:
SELECT * FROM Customers WHERE CustomerName LIKE '_r%';
选择 CustomerName 以“a”开头且长度至少为 3 个字符的所有客户:
SELECT * FROM Customers WHERE CustomerName LIKE 'a__%';
选择 ContactName 以“a”开头并以“o”结尾的所有客户:
SELECT * FROM Customers WHERE ContactName LIKE 'a%o';
选择 CustomerName 不以“a”开头的所有客户:
SELECT * FROM Customers WHERE CustomerName NOT LIKE 'a%';
通配符*?!等
这是英文文档所有通配符描述(实在不想翻译,大家自己看看)
假设我们还是有如下“Customers”表:
使用 % 通配符
选择 City 以“ber”开头的所有客户:
SELECT * FROM Customers WHERE City LIKE 'ber%';
选择 City 包含“es”的所有客户:
SELECT * FROM Customers WHERE City LIKE '%es%';
返回如下:
使用 _ 通配符
选择 City 以任何字符开头,后跟“ondon”的所有客户:
SELECT * FROM Customers WHERE City LIKE '_ondon';
选择 City 以“L”开头、后跟任意字符、“n”、任意字符、“on”的所有客户:
SELECT * FROM Customers WHERE City LIKE 'L_n_on';
使用 [charlist] 通配符
选择 City 以“b”、“s”或“p”开头的所有客户:
SELECT * FROM Customers WHERE City LIKE '[bsp]%';
选择 City 以“a”、“b”或“c”开头的所有客户:
SELECT * FROM Customers WHERE City LIKE '[a-c]%';
使用 [!charlist] 通配符
选择 City 不是以“b”、“s”或“p”开头的所有客户:
SELECT * FROM Customers WHERE City LIKE '[!bsp]%';
或者
SELECT * FROM Customers WHERE City NOT LIKE '[bsp]%';
IN运算符
IN运算符允许您在 WHERE子句中指定多个值。
IN操作是针对多个速记 OR条件。
IN 语法
SELECT column_name(s) FROM table_name WHERE column_name IN (value1, value2, ...);
我们还是以“Customers”表为例子:
IN 运算符示例
选择位于’Germany’, ‘France’, 'UK’的所有客户:
SELECT * FROM Customers WHERE Country IN ('Germany', 'France', 'UK');
选择不在选择位于’Germany’, ‘France’, 'UK’的所有客户:
SELECT * FROM Customers WHERE Country NOT IN ('Germany', 'France', 'UK');
选择与 Suppliers来自相同国家的所有客户:
SELECT * FROM Customers WHERE Country IN (SELECT Country FROM Suppliers);
返回如下