1.SELECT TOP 子句
该子句用于指定要返回的记录数。SELECT TOP
SQL Server / MS Access 语法:
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;
MySQL语法:
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
Oracle 12 语法:
SELECT column_name(s)
FROM table_name
ORDER BY column_name(s)
FETCH FIRST number ROWS ONLY;
2.SQL 聚合函数
聚合函数通常与语句的子句一起使用。该子句将结果集拆分为值组和聚合函数可用于为每个组返回一个值。GROUP BY
SELECT
GROUP BY
最常用的 SQL 聚合函数有:
MIN()
- 返回所选列中的最小值MAX()
- 返回所选列中的最大值COUNT()
- 返回集合中的行数SUM()
- 返回数值列的总和AVG()
- 返回数值列的平均值
聚合函数会忽略null值(除特殊情况外)。COUNT()
1) MIN() 和 MAX() 函数
min()
SELECT MIN(column_name)
FROM table_name
WHERE condition;
max()
SELECT MAX(column_name)
FROM table_name
WHERE condition;
当您使用 `OR` 运算符时,返回的列将没有描述性名称。要为列指定描述性名称,请使用关键字: `MIN()` `MAX()` `AS`
eg.
SELECT MIN(Price) AS SmallestPrice
FROM Products;
MIN() 与 GROUP BY
我们使用函数和子句,以返回每个类别在“Products”表中最小的价格: MIN() GROUP BY
SELECT MIN(Price) AS SmallestPrice, CategoryID
FROM Products
GROUP BY CategoryID;
2) COUNT()函数
SELECT COUNT(column_name)
FROM table_name
WHERE condition;
你可以使用列名代替星号(*)符号。
如果使用列名代替,则不会计算NULL值。(*)
添加 WHERE 子句
eg.
SELECT COUNT(ProductID)
FROM Products
WHERE Price > 20;
忽略重复项
您可以使用函数中的关键字忽略重复项。DISTINCT
COUNT()
如果指定,则指定列的值相同的行将计为一行。DISTINCT
SELECT COUNT(DISTINCT Price)
FROM Products;
使用别名
使用关键字为计数列命名。AS
eg.
SELECT COUNT(*) AS [Number of records]
FROM Products;
COUNT() 与 GROUP BY 一起使用
我们使用函数和子句,以返回 Products 表中每个类别的记录数: `COUNT() GROUP BY`
eg.
SELECT COUNT(*) AS [Number of records], CategoryID
FROM Products
GROUP BY CategoryID;
3) SUM() 函数
返回总和
SELECT SUM(column_name)
FROM table_name
WHERE condition;
WHERE, AS, GROUP BY 同上
4) AVG() 函数
SELECT AVG(column_name)
FROM table_name
WHERE condition;
WHERE, AS, GROUP BY 同上
3.LIKE 运算符
有两个通配符通常与运算符结合使用: LIKE
- 百分号表示零个、一个或多个字符
%
- 下划线符号表示一个字符
_
SELECT column1, column2, ... FROM table_name WHERE columnN LIKE pattern;
_ 通配符表示单个字符。
它可以是任何字符或数字,但每个字符或数字代表一个字符,并且只有一个字符。_
eg.
返回以“L”开头的城市的所有客户,后跟一个通配符,然后是“nd”,然后是两个通配符:
SELECT * FROM Customers
WHERE city LIKE 'L_nd__';
% 通配符
通配符表示任意数量的字符,甚至零个字符。%
eg.从包含字母“L”的城市返回所有客户:
SELECT * FROM Customers
WHERE city LIKE '%L%';
若要返回以特定字母或短语开头的记录,请在字母或短语的末尾添加% eg.a%
结尾的话,在字母或者短语开头加% eg. %a
若要返回包含特定字母或短语的记录,请在字母或短语之前和之后添加% eg.%a%
4.通配符
通配符用于替换字符串中的一个或多个字符。
通配符与运算符一起使用。该运算符在子句中用于搜索列中的指定模式。
Symbol | Description |
---|---|
% | 表示零个或多个字符 |
_ | 表示单个字符。 |
[] | 它代表方括号“*”中的任意一个字符。 |
^ | 表示不在方括号(* [)内的任何字符。 |
- | 表示指定范围内的任意单个字符。 |
{} | 代表任何转义字符 |
* 在 PostgreSQL 和 MySQL 数据库中不受支持。
** 仅在 Oracle 数据库中受支持。
eg.返回所有以“b”、“s”或“p”开头的客户:
SELECT * FROM Customers
WHERE CustomerName LIKE '[bsp]%';
返回所有以 “a”、“b”、“c”、“d”、“e”或“f”:
SELECT * FROM Customers
WHERE CustomerName LIKE '[a-f]%';
如果未指定通配符,则短语必须具有完全匹配才能返回结果。
eg.
SELECT * FROM Customers
WHERE Country LIKE 'Spain';
eg.选择首字母不是“a”或“c”或“f”的所有记录
SELECT * FROM Customers
WHERE City LIKE '![acf]%';