数据查询
SELECT 是使用最频繁的语句。这篇讲基础查询、WHERE 条件、CASE 判断、模糊查询、逻辑与范围条件、空值判断、排序、TOP、DISTINCT 与别名。
基础查询
SELECT 字段名
FROM 目标表- 用
*表示选择表的所有列。 - 用逗号
,分隔多个列名,即查询多列。
WHERE 条件
USE 数据库名
SELECT 字段名
FROM 目标表
WHERE 字段名 = '内容'
GO注意:字符类型和时间类型的数据需要加引号标识。
CASE 判断
CASE 可以根据条件返回不同的值:
SELECT *,
(CASE
WHEN 性别 = '男' THEN 1
WHEN 性别 = '女' THEN 0
ELSE NULL
END) AS '性别码' -- AS 指定临时列的列名
FROM 学生表
GO模糊查询 LIKE
SELECT 字段名
FROM 目标表
WHERE 字段名 LIKE 条件通配符:
| 通配符 | 含义 |
|---|---|
% | 代表任意多个字符 |
_ | 代表一个字符 |
用法举例:
%N%表示包含 NN%表示以 N 开头%N表示以 N 结尾[^...]中的^代表对限制条件取反
逻辑与范围条件
- AND / OR / NOT:逻辑与、或、非。
- BETWEEN … AND …:对查找范围进行限定。
- IN:等价于多个
OR,用于简化条件相同但取值多个的表达式。
-- 这两种写法等价
WHERE 年龄 = 18 OR 年龄 = 20 OR 年龄 = 22
WHERE 年龄 IN (18, 20, 22)空值判断
WHERE 字段名 IS NULL -- 为空
WHERE 字段名 IS NOT NULL -- 不为空表示"为空"不能用
''或' '(空格),必须用IS NULL。
排序 ORDER BY
SELECT 字段名 FROM 目标表
ORDER BY 字段1 ASC, 字段2 DESCASC升序(默认,可省略)、DESC降序。- 以第一列为主序,第一列相等时再按第二列排序。
TOP、DISTINCT 与别名
- TOP:限制返回结果集中的记录数目。
TOP n返回前 n 行;TOP n WITH TIES会把与第 n 行并列的记录也一并返回。 - DISTINCT:消除重复的记录。
- AS:为列起别名(
AS可用空格代替)。
SELECT TOP 5 DISTINCT 姓名 AS 学生姓名 FROM 学生表最后更新于